INTERFACE:
subroutine mkarbinit()DESCRIPTION:
Initializes the following time varying variables: water : h2osno, h2ocan, h2osoi_liq, h2osoi_ice, h2osoi_vol snow : snowdp, snl, dz, z, zi temperature: t_soisno, t_veg, t_grnd
USES:
use shr_const_mod, only : SHR_CONST_TKFRZ use clmtype use clm_varpar , only : nlevsoi, nlevgrnd, nlevsno, nlevlak, nlevurb use clm_varcon , only : bdsno, istice, istwet, istsoil, isturb, & denice, denh2o, spval, sb, icol_road_perv, & icol_road_imperv, icol_roof, icol_sunwall, & icol_shadewall use clm_varcon , only : istcrop use clm_varcon , only : istice_mec, h2osno_max use clm_varctl , only : iulog, pertlim use spmdMod , only : masterproc use decompMod , only : get_proc_bounds use SNICARMod , only : snw_rds_minARGUMENTS:
implicit noneCALLED FROM:
subroutine initialize in module initializeModREVISION HISTORY:
Created by Mariana Vertenstein 3/07/08 Keith Oleson: initialize h2osoi_vol for all soil layers to 0.3 3/18/08 David Lawrence, initialize deep layers 03/28/08 Mark Flanner, initialize snow aerosols and grain sizeLOCAL VARIABLES:
local pointers to implicit in arguments integer , pointer :: pcolumn(:) ! column index associated with each pft integer , pointer :: ctype(:) ! column type integer , pointer :: clandunit(:) ! landunit index associated with each column integer , pointer :: ltype(:) ! landunit type logical , pointer :: lakpoi(:) ! true => landunit is a lake point integer , pointer :: plandunit(:) ! landunit index associated with each pft logical , pointer :: urbpoi(:) ! true => landunit is an urban point logical , pointer :: ifspecial(:) ! true => landunit is not vegetated real(r8), pointer :: dz(:,:) ! layer thickness depth (m) real(r8), pointer :: watsat(:,:) ! volumetric soil water at saturation (porosity) (nlevgrnd) real(r8), pointer :: h2osoi_ice(:,:) ! ice lens (kg/m2) real(r8), pointer :: h2osoi_liq(:,:) ! liquid water (kg/m2) real(r8), pointer :: bsw2(:,:) ! Clapp and Hornberger "b" for CN code real(r8), pointer :: psisat(:,:) ! soil water potential at saturation for CN code (MPa) real(r8), pointer :: vwcsat(:,:) ! volumetric water content at saturation for CN code (m3/m3) real(r8), pointer :: zi(:,:) ! interface level below a "z" level (m) real(r8), pointer :: wa(:) ! water in the unconfined aquifer (mm) real(r8), pointer :: wt(:) ! total water storage (unsaturated soil water + groundwater) (mm) real(r8), pointer :: zwt(:) ! water table depth (m) local pointers to implicit out arguments integer , pointer :: snl(:) ! number of snow layers real(r8), pointer :: t_soisno(:,:) ! soil temperature (Kelvin) (-nlevsno+1:nlevgrnd) real(r8), pointer :: t_lake(:,:) ! lake temperature (Kelvin) (1:nlevlak) real(r8), pointer :: t_grnd(:) ! ground temperature (Kelvin) real(r8), pointer :: t_veg(:) ! vegetation temperature (Kelvin) real(r8), pointer :: t_ref2m(:) ! 2 m height surface air temperature (Kelvin) real(r8), pointer :: t_ref2m_u(:) ! Urban 2 m height surface air temperature (Kelvin) real(r8), pointer :: t_ref2m_r(:) ! Rural 2 m height surface air temperature (Kelvin) real(r8), pointer :: h2osoi_vol(:,:) ! volumetric soil water (0<=h2osoi_vol<=watsat) [m3/m3] real(r8), pointer :: h2ocan_col(:) ! canopy water (mm H2O) (column-level) real(r8), pointer :: h2ocan_pft(:) ! canopy water (mm H2O) (pft-level) real(r8), pointer :: h2osno(:) ! snow water (mm H2O) real(r8), pointer :: snowdp(:) ! snow height (m) real(r8), pointer :: qflx_irrig(:) ! irrigation flux (mm H2O/s) real(r8), pointer :: eflx_lwrad_out(:) ! emitted infrared (longwave) radiation (W/m**2) real(r8), pointer :: soilpsi(:,:) ! soil water potential in each soil layer (MPa) real(r8), pointer :: snw_rds(:,:) ! effective snow grain radius (col,lyr) [microns, m^-6] real(r8), pointer :: snw_rds_top(:) ! snow grain size, top (col) [microns] real(r8), pointer :: sno_liq_top(:) ! liquid water fraction (mass) in top snow layer (col) [frc] real(r8), pointer :: mss_bcpho(:,:) ! mass of hydrophobic BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bcphi(:,:) ! mass of hydrophillic BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bctot(:,:) ! total mass of BC (pho+phi) (col,lyr) [kg] real(r8), pointer :: mss_bc_col(:) ! total mass of BC in snow column (col) [kg] real(r8), pointer :: mss_bc_top(:) ! total mass of BC in top snow layer (col) [kg] real(r8), pointer :: mss_cnc_bcphi(:,:) ! mass concentration of BC species 1 (col,lyr) [kg/kg] real(r8), pointer :: mss_cnc_bcpho(:,:) ! mass concentration of BC species 2 (col,lyr) [kg/kg] real(r8), pointer :: mss_ocpho(:,:) ! mass of hydrophobic OC in snow (col,lyr) [kg] real(r8), pointer :: mss_ocphi(:,:) ! mass of hydrophillic OC in snow (col,lyr) [kg] real(r8), pointer :: mss_octot(:,:) ! total mass of OC (pho+phi) (col,lyr) [kg] real(r8), pointer :: mss_oc_col(:) ! total mass of OC in snow column (col) [kg] real(r8), pointer :: mss_oc_top(:) ! total mass of OC in top snow layer (col) [kg] real(r8), pointer :: mss_cnc_ocphi(:,:) ! mass concentration of OC species 1 (col,lyr) [kg/kg] real(r8), pointer :: mss_cnc_ocpho(:,:) ! mass concentration of OC species 2 (col,lyr) [kg/kg] real(r8), pointer :: mss_dst1(:,:) ! mass of dust species 1 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst2(:,:) ! mass of dust species 2 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst3(:,:) ! mass of dust species 3 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst4(:,:) ! mass of dust species 4 in snow (col,lyr) [kg] real(r8), pointer :: mss_dsttot(:,:) ! total mass of dust in snow (col,lyr) [kg] real(r8), pointer :: mss_dst_col(:) ! total mass of dust in snow column (col) [kg] real(r8), pointer :: mss_dst_top(:) ! total mass of dust in top snow layer (col) [kg] real(r8), pointer :: mss_cnc_dst1(:,:) ! mass concentration of dust species 1 (col,lyr) [kg/kg] real(r8), pointer :: mss_cnc_dst2(:,:) ! mass concentration of dust species 2 (col,lyr) [kg/kg] real(r8), pointer :: mss_cnc_dst3(:,:) ! mass concentration of dust species 3 (col,lyr) [kg/kg] real(r8), pointer :: mss_cnc_dst4(:,:) ! mass concentration of dust species 4 (col,lyr) [kg/kg] real(r8), pointer :: irrig_rate(:) ! current irrigation rate [mm/s] integer, pointer :: n_irrig_steps_left(:) ! number of time steps for which we still need to irrigate today (if 0, ignore irrig_rate) !OTHER LOCAL VARIABLES: