INTERFACE:
subroutine SnowWater(lbc, ubc, num_snowc, filter_snowc, & num_nosnowc, filter_nosnowc)DESCRIPTION:
Evaluate the change of snow mass and the snow water onto soil. Water flow within snow is computed by an explicit and non-physical based scheme, which permits a part of liquid water over the holding capacity (a tentative value is used, i.e. equal to 0.033*porosity) to percolate into the underlying layer. Except for cases where the porosity of one of the two neighboring layers is less than 0.05, zero flow is assumed. The water flow out of the bottom of the snow pack will participate as the input of the soil water and runoff. This subroutine uses a filter for columns containing snow which must be constructed prior to being called.
USES:
use clmtype use clm_varcon , only : denh2o, denice, wimp, ssi use clm_time_manager, only : get_step_size use clm_atmlnd , only : clm_a2l use SNICARMod , only : scvng_fct_mlt_bcphi, scvng_fct_mlt_bcpho, & scvng_fct_mlt_ocphi, scvng_fct_mlt_ocpho, & scvng_fct_mlt_dst1, scvng_fct_mlt_dst2, & scvng_fct_mlt_dst3, scvng_fct_mlt_dst4ARGUMENTS:
implicit none integer, intent(in) :: lbc, ubc ! column bounds integer, intent(in) :: num_snowc ! number of snow points in column filter integer, intent(in) :: filter_snowc(ubc-lbc+1) ! column filter for snow points integer, intent(in) :: num_nosnowc ! number of non-snow points in column filter integer, intent(in) :: filter_nosnowc(ubc-lbc+1) ! column filter for non-snow pointsCALLED FROM:
REVISION HISTORY:
15 September 1999: Yongjiu Dai; Initial code 15 December 1999: Paul Houser and Jon Radakovich; F90 Revision 15 November 2000: Mariana Vertenstein 2/26/02, Peter Thornton: Migrated to new data structures. 03/28/08, Mark Flanner: Added aerosol deposition and flushing with meltwaterLOCAL VARIABLES:
local pointers to implicit in arguments integer , pointer :: snl(:) !number of snow layers logical , pointer :: do_capsnow(:) !true => do snow capping real(r8), pointer :: qflx_snomelt(:) !snow melt (mm H2O /s) real(r8), pointer :: qflx_rain_grnd(:) !rain on ground after interception (mm H2O/s) [+] real(r8), pointer :: qflx_sub_snow(:) !sublimation rate from snow pack (mm H2O /s) [+] real(r8), pointer :: qflx_evap_grnd(:) !ground surface evaporation rate (mm H2O/s) [+] real(r8), pointer :: qflx_dew_snow(:) !surface dew added to snow pack (mm H2O /s) [+] real(r8), pointer :: qflx_dew_grnd(:) !ground surface dew formation (mm H2O /s) [+] real(r8), pointer :: dz(:,:) !layer depth (m) local pointers to implicit out arguments real(r8), pointer :: qflx_top_soil(:) !net water input into soil from top (mm/s) local pointers to implicit inout arguments real(r8), pointer :: h2osoi_ice(:,:) !ice lens (kg/m2) real(r8), pointer :: h2osoi_liq(:,:) !liquid water (kg/m2) integer , pointer :: cgridcell(:) ! columns's gridcell (col) real(r8), pointer :: mss_bcphi(:,:) ! hydrophillic BC mass in snow (col,lyr) [kg] real(r8), pointer :: mss_bcpho(:,:) ! hydrophobic BC mass in snow (col,lyr) [kg] real(r8), pointer :: mss_ocphi(:,:) ! hydrophillic OC mass in snow (col,lyr) [kg] real(r8), pointer :: mss_ocpho(:,:) ! hydrophobic OC mass in snow (col,lyr) [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 :: flx_bc_dep_dry(:) ! dry BC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_bc_dep_wet(:) ! wet BC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_bc_dep(:) ! total BC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_bc_dep_pho(:) ! hydrophobic BC deposition (col) [kg m-1 s-1] real(r8), pointer :: flx_bc_dep_phi(:) ! hydrophillic BC deposition (col) [kg m-1 s-1] real(r8), pointer :: flx_oc_dep_dry(:) ! dry OC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_oc_dep_wet(:) ! wet OC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_oc_dep(:) ! total OC deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_oc_dep_pho(:) ! hydrophobic OC deposition (col) [kg m-1 s-1] real(r8), pointer :: flx_oc_dep_phi(:) ! hydrophillic OC deposition (col) [kg m-1 s-1] real(r8), pointer :: flx_dst_dep_dry1(:) ! dry dust (species 1) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_wet1(:) ! wet dust (species 1) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_dry2(:) ! dry dust (species 2) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_wet2(:) ! wet dust (species 2) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_dry3(:) ! dry dust (species 3) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_wet3(:) ! wet dust (species 3) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_dry4(:) ! dry dust (species 4) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep_wet4(:) ! wet dust (species 4) deposition (col) [kg m-2 s-1] real(r8), pointer :: flx_dst_dep(:) ! total dust deposition (col) [kg m-2 s-1] real(r8), pointer :: forc_aer(:,:) ! aerosol deposition from atmosphere model (grd,aer) [kg m-1 s-1] !OTHER LOCAL VARIABLES: