dspheat | \ref satmedmfvdifq | flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes | .false.
@@ -283,6 +284,14 @@ show some variables in the namelist that must match the SDF.
1: activate subgrid cloud coupling to radiation (highly suggested)
1
+ | bl_mynn_closure | mynnedmf_wrapper | flag to determine closure level of MYNN \n
+
+ - <=2.5: only prognose tke
+
- 2.5 < and < 3.0: prognose tke and q'2
+
- >= 3.0, prognose tke, q'2, T'2, and T'q'
+
+ | 2.6
+
| num_dfi_radar | cu_gf_driver | number of timespans with radar-prescried temperature tendencies | 0
| fh_dfi_radar | cu_gf_driver | begin+end of timespans to receive radar-prescribed temperature tendencies | -2e10
| do_cap_suppress | cu_gf_driver | enable convection suppression in GF scheme if fh_dfi_radar is specified | .true.
@@ -544,6 +553,7 @@ show some variables in the namelist that must match the SDF.
- 1: m-o
- 2: original Noah (Chen et al. 1997 \cite chen_et_al_1997)
+
- 4: MYNN surface layer scheme
| 1
| iopt_frz | \ref noahmpdrv | options for supercooled liquid water (or ice fraction) \n
@@ -595,7 +605,7 @@ show some variables in the namelist that must match the SDF.
| iopt_trs | \ref noahmpdrv | options for thermal roughness scheme:\n
- 1: z0h=z0m
-
- 2: czil
+
- 2: canopy based czil
- 3: ec
- 4: kb inversed
@@ -627,6 +637,10 @@ show some variables in the namelist that must match the SDF.
| lheatstrg | gfs_surface_generic_post | flag for canopy heat storage parameterization | .false.
| z0fac | gfs_surface_generic_post | surface roughness fraction factor | 0.3
| e0fac | gfs_surface_generic_post | latent heat flux fraction factor relative to sensible heat flux,e.g., e0fac=0.5 indicates that canopy heat storage for latent heat flux is 50% of that for sensible heat flux | 0.5
+ | isftcflx | mynnsfc_wrapper | flag for thermal roughness lengths over water in MYNN-SFCLAY | 0
+ | iz0tlnd | mynnsfc_wrapper | flag for thermal roughness lengths over land in MYNN-SFCLAY | 0
+ | sfclay_compute_flux | mynnsfc_wrapper | flag for computing surface scalar fluxes in MYNN-SFCLAY | .false.
+ | sfclay_compute_diag | mynnsfc_wrapper | flag for computing surface diagnostics in MYNN-SFCLAY | .false.
diff --git a/physics/mfpbltq.f b/physics/mfpbltq.f
index 4555af268..fb775e2e1 100644
--- a/physics/mfpbltq.f
+++ b/physics/mfpbltq.f
@@ -4,7 +4,7 @@
!! for use in the TKE-EDMF PBL scheme (updated version).
module mfpbltq_mod
contains
-!>\ingroup satmedmfvdifq
+!>\ingroup module_satmedmfvdifq
!! This subroutine computes mass flux and updraft parcel properties for
!! thermals driven by surface heating.
!!\section mfpbltq_gen GFS mfpblt General Algorithm
diff --git a/physics/mfscuq.f b/physics/mfscuq.f
index ca4819956..cafa61b55 100644
--- a/physics/mfscuq.f
+++ b/physics/mfscuq.f
@@ -3,7 +3,8 @@
!! parameterization for stratocumulus-top-driven turbulence (updated version).
module mfscuq_mod
contains
-!>\ingroup satmedmfvdifq
+
+!>\ingroup module_satmedmfvdifq
!! This subroutine computes mass flux and downdraft parcel properties
!! for stratocumulus-top-driven turbulence.
!! \section mfscuq GFS mfscu General Algorithm
diff --git a/physics/module_bl_mynn.F90 b/physics/module_bl_mynn.F90
index 6408ca5b4..ffb4b5696 100644
--- a/physics/module_bl_mynn.F90
+++ b/physics/module_bl_mynn.F90
@@ -373,7 +373,7 @@ MODULE module_bl_mynn
CONTAINS
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine is the GSD MYNN-EDNF PBL driver routine,which
!! encompassed the majority of the subroutines that comprise the
!! procedures that ultimately solve for tendencies of
@@ -1607,7 +1607,7 @@ END SUBROUTINE mynn_bl_driver
!
!-------------------------------------------------------------------
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine initializes the mixing length, TKE, \f$\theta^{'2}\f$,
!! \f$q^{'2}\f$, and \f$\theta^{'}q^{'}\f$.
!!\section gen_mym_ini GSD MYNN-EDMF mym_initialize General Algorithm
@@ -1795,7 +1795,7 @@ END SUBROUTINE mym_initialize
! These are defined on the walls of the grid boxes.
!
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine calculates the level 2, non-dimensional wind shear
!! \f$G_M\f$ and vertical temperature gradient \f$G_H\f$ as well as
!! the level 2 stability funcitons \f$S_h\f$ and \f$S_m\f$.
@@ -1951,7 +1951,7 @@ END SUBROUTINE mym_level2
! NOTE: the mixing lengths are meant to be calculated at the full-
! sigmal levels (or interfaces beween the model layers).
!
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine calculates the mixing lengths.
SUBROUTINE mym_length ( &
& kts,kte, &
@@ -2363,7 +2363,7 @@ SUBROUTINE mym_length ( &
END SUBROUTINE mym_length
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine was taken from the BouLac scheme in WRF-ARW and modified for
!! integration into the MYNN PBL scheme. WHILE loops were added to reduce the
!! computational expense. This subroutine computes the length scales up and down
@@ -2526,7 +2526,7 @@ SUBROUTINE boulac_length0(k,kts,kte,zw,dz,qtke,theta,lb1,lb2)
END SUBROUTINE boulac_length0
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine was taken from the BouLac scheme in WRF-ARW
!! and modified for integration into the MYNN PBL scheme.
!! WHILE loops were added to reduce the computational expense.
@@ -2717,7 +2717,7 @@ END SUBROUTINE boulac_length
! # dtl, dqw, dtv, gm and gh are allowed to share storage units with
! dfm, dfh, dfq, tcd and qcd, respectively, for saving memory.
!
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine calculates the vertical diffusivity coefficients and the
!! production terms for the turbulent quantities.
!>\section gen_mym_turbulence GSD mym_turbulence General Algorithm
@@ -3313,7 +3313,7 @@ END SUBROUTINE mym_turbulence
! scheme (program).
!
!-------------------------------------------------------------------
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine predicts the turbulent quantities at the next step.
SUBROUTINE mym_predict (kts,kte, &
& closure, &
@@ -3716,7 +3716,7 @@ END SUBROUTINE mym_predict
! Set these values to those adopted by you.
!
!-------------------------------------------------------------------
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine calculates the nonconvective component of the
!! subgrid cloud fraction and mixing ratio as well as the functions used to
!! calculate the buoyancy flux. Different cloud PDFs can be selected by
@@ -4143,7 +4143,7 @@ SUBROUTINE mym_condensation (kts,kte, &
END SUBROUTINE mym_condensation
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine solves for tendencies of U, V, \f$\theta\f$, qv,
!! qc, and qi
SUBROUTINE mynn_tendencies(kts,kte,i, &
@@ -5162,6 +5162,8 @@ SUBROUTINE mynn_tendencies(kts,kte,i, &
END SUBROUTINE mynn_tendencies
! ==================================================================
+!>\ingroup gp_mynnedmf
+!!ensure non-negative moist species.
SUBROUTINE moisture_check(kte, delt, dp, exner, &
qv, qc, qi, th, &
dqv, dqc, dqi, dth )
@@ -5249,6 +5251,8 @@ END SUBROUTINE moisture_check
! ==================================================================
+!>\ingroup gp_mynnedmf
+!!
SUBROUTINE mynn_mix_chem(kts,kte,i, &
delt,dz,pblh, &
nchem, kdvel, ndvel, &
@@ -5379,7 +5383,7 @@ SUBROUTINE mynn_mix_chem(kts,kte,i, &
END SUBROUTINE mynn_mix_chem
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
SUBROUTINE retrieve_exchange_coeffs(kts,kte,&
&dfm,dfh,dz,K_m,K_h)
@@ -5407,7 +5411,7 @@ SUBROUTINE retrieve_exchange_coeffs(kts,kte,&
END SUBROUTINE retrieve_exchange_coeffs
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
SUBROUTINE tridiag(n,a,b,c,d)
!! to solve system of linear eqs on tridiagonal matrix n times n
@@ -5443,7 +5447,7 @@ SUBROUTINE tridiag(n,a,b,c,d)
END SUBROUTINE tridiag
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
subroutine tridiag2(n,a,b,c,d,x)
implicit none
! a - sub-diagonal (means it is the diagonal below the main diagonal)
@@ -5478,7 +5482,7 @@ subroutine tridiag2(n,a,b,c,d,x)
end subroutine tridiag2
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
subroutine tridiag3(kte,a,b,c,d,x)
!ccccccccccccccccccccccccccccccc
@@ -5521,7 +5525,7 @@ end subroutine tridiag3
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!!
SUBROUTINE mynn_bl_init_driver( &
&RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN, &
@@ -5578,7 +5582,7 @@ SUBROUTINE mynn_bl_init_driver( &
END SUBROUTINE mynn_bl_init_driver
! ==================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine calculates hybrid diagnotic boundary-layer height (PBLH).
!!
!! NOTES ON THE PBLH FORMULATION: The 1.5-theta-increase method defines
@@ -5740,7 +5744,7 @@ SUBROUTINE GET_PBLH(KTS,KTE,zi,thetav1D,qke1D,zw1D,dz1D,landsea,kzi)
END SUBROUTINE GET_PBLH
!> @}
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This subroutine is the Dynamic Multi-Plume (DMP) Mass-Flux Scheme.
!!
!! dmp_mf() calculates the nonlocal turbulent transport from the dynamic
@@ -6879,7 +6883,7 @@ SUBROUTINE DMP_mf( &
END SUBROUTINE DMP_MF
!=================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! zero or one condensation for edmf: calculates THV and QC
subroutine condensation_edmf(QT,THL,P,zagl,THV,QC)
!
@@ -7411,7 +7415,7 @@ SUBROUTINE SCALE_AWARE(dx,PBL1,Psig_bl,Psig_shcu)
END SUBROUTINE SCALE_AWARE
! =====================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! \author JAYMES- added 22 Apr 2015
!! This function calculates saturation vapor pressure. Separate ice and liquid functions
!! are used (identical to those in module_mp_thompson.F, v3.6). Then, the
@@ -7445,7 +7449,7 @@ END FUNCTION esat_blend
! ====================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This function extends function "esat" and returns a "blended"
!! saturation mixing ratio.
!!\author JAYMES
@@ -7487,7 +7491,7 @@ END FUNCTION qsat_blend
! ===================================================================
-!>\ingroup gsd_mynn_edmf
+!>\ingroup gp_mynnedmf
!! This function interpolates the latent heats of vaporization and sublimation into
!! a single, temperature-dependent, "blended" value, following
!! Chaboureau and Bechtold (2002) \cite Chaboureau_2002, Appendix.
@@ -7614,7 +7618,8 @@ FUNCTION phih(zet)
END FUNCTION phih
! ==================================================================
-!>
+!>\ingroup gp_mynnedmf
+!! Calculate the buoyancy production of TKE from cloud-top cooling.
SUBROUTINE topdown_cloudrad(kts,kte,dz1,zw,xland,kpbl,PBLH, &
&sqc,sqi,sqw,thl,th1,ex1,p1,rho1,thetav, &
&cldfra_bl1D,rthraten, &
diff --git a/physics/module_mp_nssl_2mom.F90 b/physics/module_mp_nssl_2mom.F90
index ac56b9456..6b184c35f 100644
--- a/physics/module_mp_nssl_2mom.F90
+++ b/physics/module_mp_nssl_2mom.F90
@@ -1,4 +1,4 @@
-!!> \file module_mp_nssl_2mom.F90
+!> \file module_mp_nssl_2mom.F90
!---------------------------------------------------------------------
! code snapshot: "Feb 24 2022" at "14:27:57"
diff --git a/physics/module_sf_noahmp_glacier.f90 b/physics/module_sf_noahmp_glacier.f90
index 1c144c993..08fdd92ce 100644
--- a/physics/module_sf_noahmp_glacier.f90
+++ b/physics/module_sf_noahmp_glacier.f90
@@ -417,7 +417,7 @@ end subroutine atm_glacier
! ==================================================================================================
! --------------------------------------------------------------------------------------------------
!>\ingroup NoahMP_LSM
-!! This subroutine
+!! Compute energy budget (momentum & energy fluxes and phase changes).
subroutine energy_glacier (nsnow ,nsoil ,isnow ,dt ,qsnow ,rhoair , & !in
eair ,sfcprs ,qair ,sfctmp ,lwdn ,uu , & !in
vv ,solad ,solai ,cosz ,zref , & !in
@@ -507,7 +507,7 @@ subroutine energy_glacier (nsnow ,nsoil ,isnow ,dt ,qsnow ,rhoair
#endif
! outputs
- integer, dimension(-nsnow+1:nsoil), intent(out) :: imelt !< phase change index [1-melt; 2-freeze]
+ integer, dimension(-nsnow+1:nsoil) , intent(out) :: imelt !< phase change index [1-melt; 2-freeze]
real (kind=kind_phys) , dimension(-nsnow+1: 0), intent(out) :: snicev !< partial volume ice [m3/m3]
real (kind=kind_phys) , dimension(-nsnow+1: 0), intent(out) :: snliqv !< partial volume liq. water [m3/m3]
real (kind=kind_phys) , dimension(-nsnow+1: 0), intent(out) :: epore !< effective porosity [m3/m3]
@@ -650,6 +650,7 @@ subroutine energy_glacier (nsnow ,nsoil ,isnow ,dt ,qsnow ,rhoair
end subroutine energy_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
+!! calculate thermal properties of soil, snow, lake, and frozen soil.
subroutine thermoprop_glacier (nsoil ,nsnow ,isnow ,dzsnso , & !in
dt ,snowh ,snice ,snliq , & !in
df ,hcpct ,snicev ,snliqv ,epore , & !out
@@ -782,6 +783,7 @@ subroutine csnow_glacier (isnow ,nsnow ,nsoil ,snice ,snliq ,dzsnso ,
end subroutine csnow_glacier
!===================================================================================================
!>\ingroup NoahMP_LSM
+!! Compute solar radiation: absorbed & reflected by the ground.
subroutine radiation_glacier (dt ,tg ,sneqvo ,sneqv ,cosz , & !in
qsnow ,solad ,solai , & !in
albold ,tauss , & !inout
@@ -3446,6 +3448,7 @@ end subroutine error_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine noahmp_options_glacier(iopt_alb ,iopt_snf ,iopt_tbot, iopt_stc, iopt_gla,&
iopt_sfc, iopt_trs)
diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90
index 652db602d..15a91db7d 100644
--- a/physics/module_sf_noahmplsm.f90
+++ b/physics/module_sf_noahmplsm.f90
@@ -404,6 +404,7 @@ module module_sf_noahmplsm
!== begin noahmp_sflx ==============================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine noahmp_sflx (parameters, &
iloc , jloc , lat , yearlen , julian , cosz , & ! in : time/space-related
dt , dx , dz8w , nsoil , zsoil , nsnow , & ! in : model configuration
@@ -460,9 +461,9 @@ subroutine noahmp_sflx (parameters, &
integer , intent(in) :: nsoil !< no. of soil layers
integer , intent(in) :: iloc !< grid index
integer , intent(in) :: jloc !< grid index
- real (kind=kind_phys) , intent(in) :: ep_1
- real (kind=kind_phys) , intent(in) :: ep_2
- real (kind=kind_phys) , intent(in) :: cp
+ real (kind=kind_phys) , intent(in) :: ep_1 !<
+ real (kind=kind_phys) , intent(in) :: ep_2 !<
+ real (kind=kind_phys) , intent(in) :: cp !<
real (kind=kind_phys) , intent(in) :: dt !< time step [sec]
real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !< layer-bottom depth from soil surf (m)
real (kind=kind_phys) , intent(in) :: q2 !< mixing ratio (kg/kg) lowest model layer
@@ -473,13 +474,13 @@ subroutine noahmp_sflx (parameters, &
real (kind=kind_phys) , intent(in) :: lwdn !< downward longwave radiation (w/m2)
real (kind=kind_phys) , intent(in) :: sfcprs !< pressure (pa)
- logical , intent(in) :: thsfc_loc
- real (kind=kind_phys) , intent(in) :: prslkix ! in exner function
- real (kind=kind_phys) , intent(in) :: prsik1x ! in exner function
- real (kind=kind_phys) , intent(in) :: prslk1x ! in exner function
- real (kind=kind_phys) , intent(in) :: garea1 ! in exner function
+ logical , intent(in) :: thsfc_loc !<
+ real (kind=kind_phys) , intent(in) :: prslkix !< in exner function
+ real (kind=kind_phys) , intent(in) :: prsik1x !< in exner function
+ real (kind=kind_phys) , intent(in) :: prslk1x !< in exner function
+ real (kind=kind_phys) , intent(in) :: garea1 !< in exner function
- real (kind=kind_phys) , intent(in) :: pblhx ! pbl height
+ real (kind=kind_phys) , intent(in) :: pblhx !< pbl height
integer , intent(in) :: iz0tlnd !< z0t option
integer , intent(in) :: itime !<
integer , intent(in) :: psi_opt !<
@@ -955,35 +956,35 @@ subroutine atm (parameters,sfcprs ,sfctmp ,q2 ,
! inputs
type (noahmp_parameters), intent(in) :: parameters
- real (kind=kind_phys) , intent(in) :: sfcprs !pressure (pa)
- real (kind=kind_phys) , intent(in) :: sfctmp !surface air temperature [k]
- real (kind=kind_phys) , intent(in) :: q2 !mixing ratio (kg/kg)
- real (kind=kind_phys) , intent(in) :: prcpconv ! convective precipitation entering [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: prcpnonc ! non-convective precipitation entering [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: prcpshcv ! shallow convective precip entering [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: prcpsnow ! snow entering land model [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: prcpgrpl ! graupel entering land model [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: prcphail ! hail entering land model [mm/s] ! mb/an : v3.7
- real (kind=kind_phys) , intent(in) :: soldn !downward shortwave radiation (w/m2)
- real (kind=kind_phys) , intent(in) :: cosz !cosine solar zenith angle [0-1]
+ real (kind=kind_phys) , intent(in) :: sfcprs !< pressure (pa)
+ real (kind=kind_phys) , intent(in) :: sfctmp !< surface air temperature [k]
+ real (kind=kind_phys) , intent(in) :: q2 !< mixing ratio (kg/kg)
+ real (kind=kind_phys) , intent(in) :: prcpconv !< convective precipitation entering [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: prcpnonc !< non-convective precipitation entering [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: prcpshcv !< shallow convective precip entering [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: prcpsnow !< snow entering land model [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: prcpgrpl !< graupel entering land model [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: prcphail !< hail entering land model [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(in) :: soldn !< downward shortwave radiation (w/m2)
+ real (kind=kind_phys) , intent(in) :: cosz !< cosine solar zenith angle [0-1]
! outputs
- real (kind=kind_phys) , intent(out) :: thair !potential temperature (k)
- real (kind=kind_phys) , intent(out) :: qair !specific humidity (kg/kg) (q2/(1+q2))
- real (kind=kind_phys) , intent(out) :: eair !vapor pressure air (pa)
- real (kind=kind_phys) , intent(out) :: rhoair !density air (kg/m3)
- real (kind=kind_phys) , intent(out) :: qprecc !convective precipitation (mm/s)
- real (kind=kind_phys) , intent(out) :: qprecl !large-scale precipitation (mm/s)
- real (kind=kind_phys), dimension( 1: 2), intent(out) :: solad !incoming direct solar radiation (w/m2)
- real (kind=kind_phys), dimension( 1: 2), intent(out) :: solai !incoming diffuse solar radiation (w/m2)
- real (kind=kind_phys) , intent(out) :: swdown !downward solar filtered by sun angle [w/m2]
- real (kind=kind_phys) , intent(out) :: bdfall !!bulk density of snowfall (kg/m3) ajn
- real (kind=kind_phys) , intent(out) :: rain !rainfall (mm/s) ajn
- real (kind=kind_phys) , intent(out) :: snow !liquid equivalent snowfall (mm/s) ajn
- real (kind=kind_phys) , intent(out) :: fp !fraction of area receiving precipitation ajn
- real (kind=kind_phys) , intent(out) :: fpice !fraction of ice ajn
- real (kind=kind_phys) , intent(out) :: prcp !total precipitation [mm/s] ! mb/an : v3.7
+ real (kind=kind_phys) , intent(out) :: thair !< potential temperature (k)
+ real (kind=kind_phys) , intent(out) :: qair !< specific humidity (kg/kg) (q2/(1+q2))
+ real (kind=kind_phys) , intent(out) :: eair !< vapor pressure air (pa)
+ real (kind=kind_phys) , intent(out) :: rhoair !< density air (kg/m3)
+ real (kind=kind_phys) , intent(out) :: qprecc !< convective precipitation (mm/s)
+ real (kind=kind_phys) , intent(out) :: qprecl !< large-scale precipitation (mm/s)
+ real (kind=kind_phys), dimension( 1: 2), intent(out) :: solad !< incoming direct solar radiation (w/m2)
+ real (kind=kind_phys), dimension( 1: 2), intent(out) :: solai !< incoming diffuse solar radiation (w/m2)
+ real (kind=kind_phys) , intent(out) :: swdown !< downward solar filtered by sun angle [w/m2]
+ real (kind=kind_phys) , intent(out) :: bdfall !< bulk density of snowfall (kg/m3) ajn
+ real (kind=kind_phys) , intent(out) :: rain !< rainfall (mm/s) ajn
+ real (kind=kind_phys) , intent(out) :: snow !< liquid equivalent snowfall (mm/s) ajn
+ real (kind=kind_phys) , intent(out) :: fp !< fraction of area receiving precipitation ajn
+ real (kind=kind_phys) , intent(out) :: fpice !< fraction of ice ajn
+ real (kind=kind_phys) , intent(out) :: prcp !< total precipitation [mm/s] ! mb/an : v3.7
!locals
@@ -1100,23 +1101,23 @@ subroutine phenology (parameters,vegtyp ,croptype, snowh , tv , lat , yea
implicit none
! --------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer , intent(in ) :: vegtyp !vegetation type
- integer , intent(in ) :: croptype !vegetation type
- real (kind=kind_phys) , intent(in ) :: snowh !snow height [m]
- real (kind=kind_phys) , intent(in ) :: tv !vegetation temperature (k)
- real (kind=kind_phys) , intent(in ) :: lat !latitude (radians)
- integer , intent(in ) :: yearlen!number of days in the particular year
- real (kind=kind_phys) , intent(in ) :: julian !julian day of year (fractional) ( 0 <= julian < yearlen )
- real (kind=kind_phys) , intent(in ) :: troot !root-zone averaged temperature (k)
- real (kind=kind_phys) , intent(inout) :: lai !lai, unadjusted for burying by snow
- real (kind=kind_phys) , intent(inout) :: sai !sai, unadjusted for burying by snow
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer , intent(in ) :: vegtyp !< vegetation type
+ integer , intent(in ) :: croptype !< vegetation type
+ real (kind=kind_phys) , intent(in ) :: snowh !< snow height [m]
+ real (kind=kind_phys) , intent(in ) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys) , intent(in ) :: lat !< latitude (radians)
+ integer , intent(in ) :: yearlen !< number of days in the particular year
+ real (kind=kind_phys) , intent(in ) :: julian !< julian day of year (fractional) ( 0 <= julian < yearlen )
+ real (kind=kind_phys) , intent(in ) :: troot !< root-zone averaged temperature (k)
+ real (kind=kind_phys) , intent(inout) :: lai !< lai, unadjusted for burying by snow
+ real (kind=kind_phys) , intent(inout) :: sai !< sai, unadjusted for burying by snow
! outputs
- real (kind=kind_phys) , intent(out ) :: elai !leaf area index, after burying by snow
- real (kind=kind_phys) , intent(out ) :: esai !stem area index, after burying by snow
- real (kind=kind_phys) , intent(out ) :: igs !growing season index (0=off, 1=on)
- integer , intent(in ) :: pgs !plant growing stage
+ real (kind=kind_phys) , intent(out ) :: elai !< leaf area index, after burying by snow
+ real (kind=kind_phys) , intent(out ) :: esai !< stem area index, after burying by snow
+ real (kind=kind_phys) , intent(out ) :: igs !< growing season index (0=off, 1=on)
+ integer , intent(in ) :: pgs !< plant growing stage
! locals
@@ -1223,43 +1224,43 @@ subroutine precip_heat (parameters,iloc ,jloc ,vegtyp ,dt ,uu ,vv
! ------------------------ input/output variables --------------------
! input
type (noahmp_parameters), intent(in) :: parameters
- integer,intent(in) :: iloc !grid index
- integer,intent(in) :: jloc !grid index
- integer,intent(in) :: vegtyp !vegetation type
- integer,intent(in) :: ist !surface type 1-soil; 2-lake
- real (kind=kind_phys), intent(in) :: dt !main time step (s)
- real (kind=kind_phys), intent(in) :: uu !u-direction wind speed [m/s]
- real (kind=kind_phys), intent(in) :: vv !v-direction wind speed [m/s]
- real (kind=kind_phys), intent(in) :: elai !leaf area index, after burying by snow
- real (kind=kind_phys), intent(in) :: esai !stem area index, after burying by snow
- real (kind=kind_phys), intent(in) :: fveg !greeness vegetation fraction (-)
- real (kind=kind_phys), intent(in) :: bdfall !bulk density of snowfall (kg/m3)
- real (kind=kind_phys), intent(in) :: rain !rainfall (mm/s)
- real (kind=kind_phys), intent(in) :: snow !snowfall (mm/s)
- real (kind=kind_phys), intent(in) :: fp !fraction of the gridcell that receives precipitation
- real (kind=kind_phys), intent(in) :: tv !vegetation temperature (k)
- real (kind=kind_phys), intent(in) :: sfctmp !model-level temperature (k)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
+ integer,intent(in) :: iloc !< grid index
+ integer,intent(in) :: jloc !< grid index
+ integer,intent(in) :: vegtyp !< vegetation type
+ integer,intent(in) :: ist !< surface type 1-soil; 2-lake
+ real (kind=kind_phys), intent(in) :: dt !< main time step (s)
+ real (kind=kind_phys), intent(in) :: uu !< u-direction wind speed [m/s]
+ real (kind=kind_phys), intent(in) :: vv !< v-direction wind speed [m/s]
+ real (kind=kind_phys), intent(in) :: elai !< leaf area index, after burying by snow
+ real (kind=kind_phys), intent(in) :: esai !< stem area index, after burying by snow
+ real (kind=kind_phys), intent(in) :: fveg !< greeness vegetation fraction (-)
+ real (kind=kind_phys), intent(in) :: bdfall !< bulk density of snowfall (kg/m3)
+ real (kind=kind_phys), intent(in) :: rain !< rainfall (mm/s)
+ real (kind=kind_phys), intent(in) :: snow !< snowfall (mm/s)
+ real (kind=kind_phys), intent(in) :: fp !< fraction of the gridcell that receives precipitation
+ real (kind=kind_phys), intent(in) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys), intent(in) :: sfctmp !< model-level temperature (k)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
! input & output
- real (kind=kind_phys), intent(inout) :: canliq !intercepted liquid water (mm)
- real (kind=kind_phys), intent(inout) :: canice !intercepted ice mass (mm)
+ real (kind=kind_phys), intent(inout) :: canliq !< intercepted liquid water (mm)
+ real (kind=kind_phys), intent(inout) :: canice !< intercepted ice mass (mm)
! output
- real (kind=kind_phys), intent(out) :: qintr !interception rate for rain (mm/s)
- real (kind=kind_phys), intent(out) :: qdripr !drip rate for rain (mm/s)
- real (kind=kind_phys), intent(out) :: qthror !throughfall for rain (mm/s)
- real (kind=kind_phys), intent(out) :: qints !interception (loading) rate for snowfall (mm/s)
- real (kind=kind_phys), intent(out) :: qdrips !drip (unloading) rate for intercepted snow (mm/s)
- real (kind=kind_phys), intent(out) :: qthros !throughfall of snowfall (mm/s)
- real (kind=kind_phys), intent(out) :: pahv !precipitation advected heat - vegetation net (w/m2)
- real (kind=kind_phys), intent(out) :: pahg !precipitation advected heat - under canopy net (w/m2)
- real (kind=kind_phys), intent(out) :: pahb !precipitation advected heat - bare ground net (w/m2)
- real (kind=kind_phys), intent(out) :: qrain !rain at ground srf (mm/s) [+]
- real (kind=kind_phys), intent(out) :: qsnow !snow at ground srf (mm/s) [+]
- real (kind=kind_phys), intent(out) :: snowhin !snow depth increasing rate (m/s)
- real (kind=kind_phys), intent(out) :: fwet !wetted or snowed fraction of the canopy (-)
- real (kind=kind_phys), intent(out) :: cmc !intercepted water (mm)
+ real (kind=kind_phys), intent(out) :: qintr !< interception rate for rain (mm/s)
+ real (kind=kind_phys), intent(out) :: qdripr !< drip rate for rain (mm/s)
+ real (kind=kind_phys), intent(out) :: qthror !< throughfall for rain (mm/s)
+ real (kind=kind_phys), intent(out) :: qints !< interception (loading) rate for snowfall (mm/s)
+ real (kind=kind_phys), intent(out) :: qdrips !< drip (unloading) rate for intercepted snow (mm/s)
+ real (kind=kind_phys), intent(out) :: qthros !< throughfall of snowfall (mm/s)
+ real (kind=kind_phys), intent(out) :: pahv !< precipitation advected heat - vegetation net (w/m2)
+ real (kind=kind_phys), intent(out) :: pahg !< precipitation advected heat - under canopy net (w/m2)
+ real (kind=kind_phys), intent(out) :: pahb !< precipitation advected heat - bare ground net (w/m2)
+ real (kind=kind_phys), intent(out) :: qrain !< rain at ground srf (mm/s) [+]
+ real (kind=kind_phys), intent(out) :: qsnow !< snow at ground srf (mm/s) [+]
+ real (kind=kind_phys), intent(out) :: snowhin !< snow depth increasing rate (m/s)
+ real (kind=kind_phys), intent(out) :: fwet !< wetted or snowed fraction of the canopy (-)
+ real (kind=kind_phys), intent(out) :: cmc !< intercepted water (mm)
! --------------------------------------------------------------------
! ------------------------ local variables ---------------------------
@@ -1456,47 +1457,47 @@ subroutine error (parameters,swdown ,fsa ,fsr ,fira ,fsh ,fcev , &
! --------------------------------------------------------------------------------------------------
! inputs
type (noahmp_parameters), intent(in) :: parameters
- integer , intent(in) :: nsnow !maximum no. of snow layers
- integer , intent(in) :: nsoil !number of soil layers
- integer , intent(in) :: ist !surface type 1->soil; 2->lake
- integer , intent(in) :: iloc !grid index
- integer , intent(in) :: jloc !grid index
- real (kind=kind_phys) , intent(in) :: swdown !downward solar filtered by sun angle [w/m2]
- real (kind=kind_phys) , intent(in) :: fsa !total absorbed solar radiation (w/m2)
- real (kind=kind_phys) , intent(in) :: fsr !total reflected solar radiation (w/m2)
- real (kind=kind_phys) , intent(in) :: fira !total net longwave rad (w/m2) [+ to atm]
- real (kind=kind_phys) , intent(in) :: fsh !total sensible heat (w/m2) [+ to atm]
- real (kind=kind_phys) , intent(in) :: fcev !canopy evaporation heat (w/m2) [+ to atm]
- real (kind=kind_phys) , intent(in) :: fgev !ground evaporation heat (w/m2) [+ to atm]
- real (kind=kind_phys) , intent(in) :: fctr !transpiration heat flux (w/m2) [+ to atm]
- real (kind=kind_phys) , intent(in) :: ssoil !ground heat flux (w/m2) [+ to soil]
- real (kind=kind_phys) , intent(in) :: fveg
- real (kind=kind_phys) , intent(in) :: sav
- real (kind=kind_phys) , intent(in) :: sag
- real (kind=kind_phys) , intent(in) :: fsrv
- real (kind=kind_phys) , intent(in) :: fsrg
- real (kind=kind_phys) , intent(in) :: zwt
-
- real (kind=kind_phys) , intent(in) :: prcp !precipitation rate (kg m-2 s-1)
- real (kind=kind_phys) , intent(in) :: ecan !evaporation of intercepted water (mm/s)
- real (kind=kind_phys) , intent(in) :: etran !transpiration rate (mm/s)
- real (kind=kind_phys) , intent(in) :: edir !soil surface evaporation rate[mm/s]
- real (kind=kind_phys) , intent(in) :: runsrf !surface runoff [mm/s]
- real (kind=kind_phys) , intent(in) :: runsub !baseflow (saturation excess) [mm/s]
- real (kind=kind_phys) , intent(in) :: canliq !intercepted liquid water (mm)
- real (kind=kind_phys) , intent(in) :: canice !intercepted ice mass (mm)
- real (kind=kind_phys) , intent(in) :: sneqv !snow water eqv. [mm]
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: smc !soil moisture (ice + liq.) [m3/m3]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !snow/soil layer thickness [m]
- real (kind=kind_phys) , intent(in) :: wa !water storage in aquifer [mm]
- real (kind=kind_phys) , intent(in) :: dt !time step [sec]
- real (kind=kind_phys) , intent(in) :: beg_wb !water storage at begin of a timesetp [mm]
- real (kind=kind_phys) , intent(out) :: errwat !error in water balance [mm/timestep]
- real (kind=kind_phys), intent(in) :: pah !precipitation advected heat - total (w/m2)
- real (kind=kind_phys), intent(in) :: pahv !precipitation advected heat - total (w/m2)
- real (kind=kind_phys), intent(in) :: pahg !precipitation advected heat - total (w/m2)
- real (kind=kind_phys), intent(in) :: pahb !precipitation advected heat - total (w/m2)
- real (kind=kind_phys), intent(in) :: canhs !canopy heat storage change (w/m2) C.He added based on GY Niu's communication
+ integer , intent(in) :: nsnow !< maximum no. of snow layers
+ integer , intent(in) :: nsoil !< number of soil layers
+ integer , intent(in) :: ist !< surface type 1->soil; 2->lake
+ integer , intent(in) :: iloc !< grid index
+ integer , intent(in) :: jloc !< grid index
+ real (kind=kind_phys) , intent(in) :: swdown !< downward solar filtered by sun angle [w/m2]
+ real (kind=kind_phys) , intent(in) :: fsa !< total absorbed solar radiation (w/m2)
+ real (kind=kind_phys) , intent(in) :: fsr !< total reflected solar radiation (w/m2)
+ real (kind=kind_phys) , intent(in) :: fira !< total net longwave rad (w/m2) [+ to atm]
+ real (kind=kind_phys) , intent(in) :: fsh !< total sensible heat (w/m2) [+ to atm]
+ real (kind=kind_phys) , intent(in) :: fcev !< canopy evaporation heat (w/m2) [+ to atm]
+ real (kind=kind_phys) , intent(in) :: fgev !< ground evaporation heat (w/m2) [+ to atm]
+ real (kind=kind_phys) , intent(in) :: fctr !< transpiration heat flux (w/m2) [+ to atm]
+ real (kind=kind_phys) , intent(in) :: ssoil !< ground heat flux (w/m2) [+ to soil]
+ real (kind=kind_phys) , intent(in) :: fveg !<
+ real (kind=kind_phys) , intent(in) :: sav !<
+ real (kind=kind_phys) , intent(in) :: sag !<
+ real (kind=kind_phys) , intent(in) :: fsrv !<
+ real (kind=kind_phys) , intent(in) :: fsrg !<
+ real (kind=kind_phys) , intent(in) :: zwt !<
+
+ real (kind=kind_phys) , intent(in) :: prcp !< precipitation rate (kg m-2 s-1)
+ real (kind=kind_phys) , intent(in) :: ecan !< evaporation of intercepted water (mm/s)
+ real (kind=kind_phys) , intent(in) :: etran !< transpiration rate (mm/s)
+ real (kind=kind_phys) , intent(in) :: edir !< soil surface evaporation rate[mm/s]
+ real (kind=kind_phys) , intent(in) :: runsrf !< surface runoff [mm/s]
+ real (kind=kind_phys) , intent(in) :: runsub !< baseflow (saturation excess) [mm/s]
+ real (kind=kind_phys) , intent(in) :: canliq !< intercepted liquid water (mm)
+ real (kind=kind_phys) , intent(in) :: canice !< intercepted ice mass (mm)
+ real (kind=kind_phys) , intent(in) :: sneqv !< snow water eqv. [mm]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: smc !< soil moisture (ice + liq.) [m3/m3]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< snow/soil layer thickness [m]
+ real (kind=kind_phys) , intent(in) :: wa !< water storage in aquifer [mm]
+ real (kind=kind_phys) , intent(in) :: dt !< time step [sec]
+ real (kind=kind_phys) , intent(in) :: beg_wb !< water storage at begin of a timesetp [mm]
+ real (kind=kind_phys) , intent(out) :: errwat !< error in water balance [mm/timestep]
+ real (kind=kind_phys), intent(in) :: pah !< precipitation advected heat - total (w/m2)
+ real (kind=kind_phys), intent(in) :: pahv !< precipitation advected heat - total (w/m2)
+ real (kind=kind_phys), intent(in) :: pahg !< precipitation advected heat - total (w/m2)
+ real (kind=kind_phys), intent(in) :: pahb !< precipitation advected heat - total (w/m2)
+ real (kind=kind_phys), intent(in) :: canhs !< canopy heat storage change (w/m2) C.He added based on GY Niu's communication
#ifdef CCPP
character(len=*) , intent(inout) :: errmsg
@@ -1716,157 +1717,157 @@ subroutine energy (parameters,ice ,vegtyp ,ist ,nsnow ,nsoil , & !in
! --------------------------------------------------------------------------------------------------
! inputs
type (noahmp_parameters), intent(in) :: parameters
- integer , intent(in) :: iloc
- integer , intent(in) :: jloc
- integer , intent(in) :: ice !ice (ice = 1)
- integer , intent(in) :: vegtyp !vegetation physiology type
- integer , intent(in) :: ist !surface type: 1->soil; 2->lake
- integer , intent(in) :: nsnow !maximum no. of snow layers
- integer , intent(in) :: nsoil !number of soil layers
- integer , intent(in) :: isnow !actual no. of snow layers
- real (kind=kind_phys) , intent(in) :: dt !time step [sec]
- real (kind=kind_phys) , intent(in) :: qsnow !snowfall on the ground (mm/s)
- real (kind=kind_phys) , intent(in) :: rhoair !density air (kg/m3)
- real (kind=kind_phys) , intent(in) :: eair !vapor pressure air (pa)
- real (kind=kind_phys) , intent(in) :: sfcprs !pressure (pa)
-
- logical , intent(in) :: thsfc_loc
- real (kind=kind_phys) , intent(in) :: prslkix ! in exner function
- real (kind=kind_phys) , intent(in) :: prsik1x ! in exner function
- real (kind=kind_phys) , intent(in) :: prslk1x ! in exner function
- real (kind=kind_phys) , intent(in) :: garea1
-
- real (kind=kind_phys) , intent(in) :: pblhx ! pbl height
- real (kind=kind_phys) , intent(in) :: ep_1
- real (kind=kind_phys) , intent(in) :: ep_2
- real (kind=kind_phys) , intent(in) :: cp
- integer , intent(in) :: iz0tlnd
- integer , intent(in) :: itime
- integer , intent(in) :: psi_opt
-
- real (kind=kind_phys) , intent(in) :: qair !specific humidity (kg/kg)
- real (kind=kind_phys) , intent(in) :: sfctmp !air temperature (k)
- real (kind=kind_phys) , intent(in) :: thair !potential temperature (k)
- real (kind=kind_phys) , intent(in) :: lwdn !downward longwave radiation (w/m2)
- real (kind=kind_phys) , intent(in) :: uu !wind speed in e-w dir (m/s)
- real (kind=kind_phys) , intent(in) :: vv !wind speed in n-s dir (m/s)
- real (kind=kind_phys) , dimension( 1: 2), intent(in) :: solad !incoming direct solar rad. (w/m2)
- real (kind=kind_phys) , dimension( 1: 2), intent(in) :: solai !incoming diffuse solar rad. (w/m2)
- real (kind=kind_phys) , intent(in) :: cosz !cosine solar zenith angle (0-1)
- real (kind=kind_phys) , intent(in) :: elai !lai adjusted for burying by snow
- real (kind=kind_phys) , intent(in) :: esai !lai adjusted for burying by snow
- real (kind=kind_phys) , intent(in) :: fwet !fraction of canopy that is wet [-]
- real (kind=kind_phys) , intent(in) :: fveg !greeness vegetation fraction (-)
+ integer , intent(in) :: iloc !<
+ integer , intent(in) :: jloc !<
+ integer , intent(in) :: ice !< ice (ice = 1)
+ integer , intent(in) :: vegtyp !< vegetation physiology type
+ integer , intent(in) :: ist !< surface type: 1->soil; 2->lake
+ integer , intent(in) :: nsnow !< maximum no. of snow layers
+ integer , intent(in) :: nsoil !< number of soil layers
+ integer , intent(in) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys) , intent(in) :: dt !< time step [sec]
+ real (kind=kind_phys) , intent(in) :: qsnow !< snowfall on the ground (mm/s)
+ real (kind=kind_phys) , intent(in) :: rhoair !< density air (kg/m3)
+ real (kind=kind_phys) , intent(in) :: eair !< vapor pressure air (pa)
+ real (kind=kind_phys) , intent(in) :: sfcprs !< pressure (pa)
+
+ logical , intent(in) :: thsfc_loc !<
+ real (kind=kind_phys) , intent(in) :: prslkix !< in exner function
+ real (kind=kind_phys) , intent(in) :: prsik1x !< in exner function
+ real (kind=kind_phys) , intent(in) :: prslk1x !< in exner function
+ real (kind=kind_phys) , intent(in) :: garea1 !<
+
+ real (kind=kind_phys) , intent(in) :: pblhx !< pbl height
+ real (kind=kind_phys) , intent(in) :: ep_1 !<
+ real (kind=kind_phys) , intent(in) :: ep_2 !<
+ real (kind=kind_phys) , intent(in) :: cp !<
+ integer , intent(in) :: iz0tlnd !<
+ integer , intent(in) :: itime !<
+ integer , intent(in) :: psi_opt !<
+
+ real (kind=kind_phys) , intent(in) :: qair !< specific humidity (kg/kg)
+ real (kind=kind_phys) , intent(in) :: sfctmp !< air temperature (k)
+ real (kind=kind_phys) , intent(in) :: thair !< potential temperature (k)
+ real (kind=kind_phys) , intent(in) :: lwdn !< downward longwave radiation (w/m2)
+ real (kind=kind_phys) , intent(in) :: uu !< wind speed in e-w dir (m/s)
+ real (kind=kind_phys) , intent(in) :: vv !< wind speed in n-s dir (m/s)
+ real (kind=kind_phys) , dimension( 1: 2), intent(in) :: solad !< incoming direct solar rad. (w/m2)
+ real (kind=kind_phys) , dimension( 1: 2), intent(in) :: solai !< incoming diffuse solar rad. (w/m2)
+ real (kind=kind_phys) , intent(in) :: cosz !< cosine solar zenith angle (0-1)
+ real (kind=kind_phys) , intent(in) :: elai !< lai adjusted for burying by snow
+ real (kind=kind_phys) , intent(in) :: esai !< lai adjusted for burying by snow
+ real (kind=kind_phys) , intent(in) :: fwet !< fraction of canopy that is wet [-]
+ real (kind=kind_phys) , intent(in) :: fveg !\ingroup NoahMP_LSM
+!! Calculate solar radiation: absorbed & reflected by the ground and canopy.
subroutine radiation (parameters,vegtyp ,ist ,ice ,nsoil , & !in
sneqvo ,sneqv ,dt ,cosz ,snowh , & !in
tg ,tv ,fsno ,qsnow ,fwet , & !in
@@ -2716,52 +2718,52 @@ subroutine radiation (parameters,vegtyp ,ist ,ice ,nsoil , & !in
! --------------------------------------------------------------------------------------------------
! input
type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc
- integer, intent(in) :: jloc
- integer, intent(in) :: vegtyp !vegetation type
- integer, intent(in) :: ist !surface type
- integer, intent(in) :: ice !ice (ice = 1)
- integer, intent(in) :: nsoil !number of soil layers
-
- real (kind=kind_phys), intent(in) :: dt !time step [s]
- real (kind=kind_phys), intent(in) :: qsnow !snowfall (mm/s)
- real (kind=kind_phys), intent(in) :: sneqvo !snow mass at last time step(mm)
- real (kind=kind_phys), intent(in) :: sneqv !snow mass (mm)
- real (kind=kind_phys), intent(in) :: snowh !snow height (mm)
- real (kind=kind_phys), intent(in) :: cosz !cosine solar zenith angle (0-1)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys), intent(in) :: tv !vegetation temperature (k)
- real (kind=kind_phys), intent(in) :: elai !lai, one-sided, adjusted for burying by snow
- real (kind=kind_phys), intent(in) :: esai !sai, one-sided, adjusted for burying by snow
- real (kind=kind_phys), intent(in) :: fwet !fraction of canopy that is wet
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !volumetric soil water [m3/m3]
- real (kind=kind_phys), dimension(1:2) , intent(in) :: solad !incoming direct solar radiation (w/m2)
- real (kind=kind_phys), dimension(1:2) , intent(in) :: solai !incoming diffuse solar radiation (w/m2)
- real (kind=kind_phys), intent(in) :: fsno !snow cover fraction (-)
- real (kind=kind_phys), intent(in) :: fveg !green vegetation fraction [0.0-1.0]
+ integer, intent(in) :: iloc !<
+ integer, intent(in) :: jloc !<
+ integer, intent(in) :: vegtyp !< vegetation type
+ integer, intent(in) :: ist !< surface type
+ integer, intent(in) :: ice !< ice (ice = 1)
+ integer, intent(in) :: nsoil !< number of soil layers
+
+ real (kind=kind_phys), intent(in) :: dt !< time step [s]
+ real (kind=kind_phys), intent(in) :: qsnow !< snowfall (mm/s)
+ real (kind=kind_phys), intent(in) :: sneqvo !< snow mass at last time step(mm)
+ real (kind=kind_phys), intent(in) :: sneqv !< snow mass (mm)
+ real (kind=kind_phys), intent(in) :: snowh !< snow height (mm)
+ real (kind=kind_phys), intent(in) :: cosz !< cosine solar zenith angle (0-1)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
+ real (kind=kind_phys), intent(in) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys), intent(in) :: elai !< lai, one-sided, adjusted for burying by snow
+ real (kind=kind_phys), intent(in) :: esai !< sai, one-sided, adjusted for burying by snow
+ real (kind=kind_phys), intent(in) :: fwet !< fraction of canopy that is wet
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !< volumetric soil water [m3/m3]
+ real (kind=kind_phys), dimension(1:2) , intent(in) :: solad !< incoming direct solar radiation (w/m2)
+ real (kind=kind_phys), dimension(1:2) , intent(in) :: solai !< incoming diffuse solar radiation (w/m2)
+ real (kind=kind_phys), intent(in) :: fsno !< snow cover fraction (-)
+ real (kind=kind_phys), intent(in) :: fveg !< green vegetation fraction [0.0-1.0]
! inout
- real (kind=kind_phys), intent(inout) :: albold !snow albedo at last time step (class type)
- real (kind=kind_phys), intent(inout) :: tauss !non-dimensional snow age.
+ real (kind=kind_phys), intent(inout) :: albold !< snow albedo at last time step (class type)
+ real (kind=kind_phys), intent(inout) :: tauss !< non-dimensional snow age.
! output
- real (kind=kind_phys), intent(out) :: fsun !sunlit fraction of canopy (-)
- real (kind=kind_phys), intent(out) :: laisun !sunlit leaf area (-)
- real (kind=kind_phys), intent(out) :: laisha !shaded leaf area (-)
- real (kind=kind_phys), intent(out) :: parsun !average absorbed par for sunlit leaves (w/m2)
- real (kind=kind_phys), intent(out) :: parsha !average absorbed par for shaded leaves (w/m2)
- real (kind=kind_phys), intent(out) :: sav !solar radiation absorbed by vegetation (w/m2)
- real (kind=kind_phys), intent(out) :: sag !solar radiation absorbed by ground (w/m2)
- real (kind=kind_phys), intent(out) :: fsa !total absorbed solar radiation (w/m2)
- real (kind=kind_phys), intent(out) :: fsr !total reflected solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: fsun !< sunlit fraction of canopy (-)
+ real (kind=kind_phys), intent(out) :: laisun !< sunlit leaf area (-)
+ real (kind=kind_phys), intent(out) :: laisha !< shaded leaf area (-)
+ real (kind=kind_phys), intent(out) :: parsun !< average absorbed par for sunlit leaves (w/m2)
+ real (kind=kind_phys), intent(out) :: parsha !< average absorbed par for shaded leaves (w/m2)
+ real (kind=kind_phys), intent(out) :: sav !< solar radiation absorbed by vegetation (w/m2)
+ real (kind=kind_phys), intent(out) :: sag !< solar radiation absorbed by ground (w/m2)
+ real (kind=kind_phys), intent(out) :: fsa !< total absorbed solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: fsr !< total reflected solar radiation (w/m2)
!jref:start
- real (kind=kind_phys), intent(out) :: fsrv !veg. reflected solar radiation (w/m2)
- real (kind=kind_phys), intent(out) :: fsrg !ground reflected solar radiation (w/m2)
- real (kind=kind_phys), intent(out) :: bgap
- real (kind=kind_phys), intent(out) :: wgap
- real (kind=kind_phys), dimension(1:2), intent(out) :: albsnd !snow albedo (direct)
- real (kind=kind_phys), dimension(1:2), intent(out) :: albsni !snow albedo (diffuse)
+ real (kind=kind_phys), intent(out) :: fsrv !< veg. reflected solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: fsrg !< ground reflected solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: bgap !<
+ real (kind=kind_phys), intent(out) :: wgap !<
+ real (kind=kind_phys), dimension(1:2), intent(out) :: albsnd !< snow albedo (direct)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: albsni !< snow albedo (diffuse)
!jref:end
! local
@@ -2851,44 +2853,44 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in
implicit none
! --------------------------------------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc
- integer, intent(in) :: jloc
- integer, intent(in) :: nsoil !number of soil layers
- integer, intent(in) :: vegtyp !vegetation type
- integer, intent(in) :: ist !surface type
- integer, intent(in) :: ice !ice (ice = 1)
-
- real (kind=kind_phys), intent(in) :: dt !time step [sec]
- real (kind=kind_phys), intent(in) :: qsnow !snowfall
- real (kind=kind_phys), intent(in) :: cosz !cosine solar zenith angle for next time step
- real (kind=kind_phys), intent(in) :: snowh !snow height (mm)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys), intent(in) :: tv !vegetation temperature (k)
- real (kind=kind_phys), intent(in) :: elai !lai, one-sided, adjusted for burying by snow
- real (kind=kind_phys), intent(in) :: esai !sai, one-sided, adjusted for burying by snow
- real (kind=kind_phys), intent(in) :: fsno !fraction of grid covered by snow
- real (kind=kind_phys), intent(in) :: fwet !fraction of canopy that is wet
- real (kind=kind_phys), intent(in) :: sneqvo !snow mass at last time step(mm)
- real (kind=kind_phys), intent(in) :: sneqv !snow mass (mm)
- real (kind=kind_phys), intent(in) :: fveg !green vegetation fraction [0.0-1.0]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !volumetric soil water (m3/m3)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !<
+ integer, intent(in) :: jloc !<
+ integer, intent(in) :: nsoil !< number of soil layers
+ integer, intent(in) :: vegtyp !< vegetation type
+ integer, intent(in) :: ist !< surface type
+ integer, intent(in) :: ice !< ice (ice = 1)
+
+ real (kind=kind_phys), intent(in) :: dt !< time step [sec]
+ real (kind=kind_phys), intent(in) :: qsnow !< snowfall
+ real (kind=kind_phys), intent(in) :: cosz !< cosine solar zenith angle for next time step
+ real (kind=kind_phys), intent(in) :: snowh !< snow height (mm)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
+ real (kind=kind_phys), intent(in) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys), intent(in) :: elai !< lai, one-sided, adjusted for burying by snow
+ real (kind=kind_phys), intent(in) :: esai !< sai, one-sided, adjusted for burying by snow
+ real (kind=kind_phys), intent(in) :: fsno !< fraction of grid covered by snow
+ real (kind=kind_phys), intent(in) :: fwet !< fraction of canopy that is wet
+ real (kind=kind_phys), intent(in) :: sneqvo !< snow mass at last time step(mm)
+ real (kind=kind_phys), intent(in) :: sneqv !< snow mass (mm)
+ real (kind=kind_phys), intent(in) :: fveg !< green vegetation fraction [0.0-1.0]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !< volumetric soil water (m3/m3)
! inout
- real (kind=kind_phys), intent(inout) :: albold !snow albedo at last time step (class type)
- real (kind=kind_phys), intent(inout) :: tauss !non-dimensional snow age
+ real (kind=kind_phys), intent(inout) :: albold !< snow albedo at last time step (class type)
+ real (kind=kind_phys), intent(inout) :: tauss !< non-dimensional snow age
! output
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albgrd !ground albedo (direct)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albgri !ground albedo (diffuse)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albd !surface albedo (direct)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albi !surface albedo (diffuse)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: fabd !flux abs by veg (per unit direct flux)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: fabi !flux abs by veg (per unit diffuse flux)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: ftdd !down direct flux below veg (per unit dir flux)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: ftid !down diffuse flux below veg (per unit dir flux)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: ftii !down diffuse flux below veg (per unit dif flux)
- real (kind=kind_phys), intent(out) :: fsun !sunlit fraction of canopy (-)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albgrd !< ground albedo (direct)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albgri !< ground albedo (diffuse)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albd !< surface albedo (direct)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albi !< surface albedo (diffuse)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: fabd !< flux abs by veg (per unit direct flux)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: fabi !< flux abs by veg (per unit diffuse flux)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: ftdd !< down direct flux below veg (per unit dir flux)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: ftid !< down diffuse flux below veg (per unit dir flux)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: ftii !< down diffuse flux below veg (per unit dif flux)
+ real (kind=kind_phys), intent(out) :: fsun !< sunlit fraction of canopy (-)
!jref:start
real (kind=kind_phys), dimension(1: 2), intent(out) :: frevd
real (kind=kind_phys), dimension(1: 2), intent(out) :: frevi
@@ -3021,6 +3023,7 @@ end subroutine albedo
!== begin surrad ===================================================================================
!>\ingroup NoahMP_LSM
+!! surface raditiation
subroutine surrad (parameters,mpe ,fsun ,fsha ,elai ,vai , & !in
laisun ,laisha ,solad ,solai ,fabd , & !in
fabi ,ftdd ,ftid ,ftii ,albgrd , & !in
@@ -3035,45 +3038,45 @@ subroutine surrad (parameters,mpe ,fsun ,fsha ,elai ,vai , & !i
! --------------------------------------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc
- integer, intent(in) :: jloc
- real (kind=kind_phys), intent(in) :: mpe !prevents underflow errors if division by zero
-
- real (kind=kind_phys), intent(in) :: fsun !sunlit fraction of canopy
- real (kind=kind_phys), intent(in) :: fsha !shaded fraction of canopy
- real (kind=kind_phys), intent(in) :: elai !leaf area, one-sided
- real (kind=kind_phys), intent(in) :: vai !leaf + stem area, one-sided
- real (kind=kind_phys), intent(in) :: laisun !sunlit leaf area index, one-sided
- real (kind=kind_phys), intent(in) :: laisha !shaded leaf area index, one-sided
-
- real (kind=kind_phys), dimension(1:2), intent(in) :: solad !incoming direct solar radiation (w/m2)
- real (kind=kind_phys), dimension(1:2), intent(in) :: solai !incoming diffuse solar radiation (w/m2)
- real (kind=kind_phys), dimension(1:2), intent(in) :: fabd !flux abs by veg (per unit incoming direct flux)
- real (kind=kind_phys), dimension(1:2), intent(in) :: fabi !flux abs by veg (per unit incoming diffuse flux)
- real (kind=kind_phys), dimension(1:2), intent(in) :: ftdd !down dir flux below veg (per incoming dir flux)
- real (kind=kind_phys), dimension(1:2), intent(in) :: ftid !down dif flux below veg (per incoming dir flux)
- real (kind=kind_phys), dimension(1:2), intent(in) :: ftii !down dif flux below veg (per incoming dif flux)
- real (kind=kind_phys), dimension(1:2), intent(in) :: albgrd !ground albedo (direct)
- real (kind=kind_phys), dimension(1:2), intent(in) :: albgri !ground albedo (diffuse)
- real (kind=kind_phys), dimension(1:2), intent(in) :: albd !overall surface albedo (direct)
- real (kind=kind_phys), dimension(1:2), intent(in) :: albi !overall surface albedo (diffuse)
-
- real (kind=kind_phys), dimension(1:2), intent(in) :: frevd !overall surface albedo veg (direct)
- real (kind=kind_phys), dimension(1:2), intent(in) :: frevi !overall surface albedo veg (diffuse)
- real (kind=kind_phys), dimension(1:2), intent(in) :: fregd !overall surface albedo grd (direct)
- real (kind=kind_phys), dimension(1:2), intent(in) :: fregi !overall surface albedo grd (diffuse)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !<
+ integer, intent(in) :: jloc !<
+ real (kind=kind_phys), intent(in) :: mpe !< prevents underflow errors if division by zero
+
+ real (kind=kind_phys), intent(in) :: fsun !< sunlit fraction of canopy
+ real (kind=kind_phys), intent(in) :: fsha !< shaded fraction of canopy
+ real (kind=kind_phys), intent(in) :: elai !< leaf area, one-sided
+ real (kind=kind_phys), intent(in) :: vai !< leaf + stem area, one-sided
+ real (kind=kind_phys), intent(in) :: laisun !< sunlit leaf area index, one-sided
+ real (kind=kind_phys), intent(in) :: laisha !< shaded leaf area index, one-sided
+
+ real (kind=kind_phys), dimension(1:2), intent(in) :: solad !< incoming direct solar radiation (w/m2)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: solai !< incoming diffuse solar radiation (w/m2)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: fabd !< flux abs by veg (per unit incoming direct flux)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: fabi !< flux abs by veg (per unit incoming diffuse flux)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: ftdd !< down dir flux below veg (per incoming dir flux)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: ftid !< down dif flux below veg (per incoming dir flux)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: ftii !< down dif flux below veg (per incoming dif flux)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albgrd !< ground albedo (direct)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albgri !< ground albedo (diffuse)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albd !< overall surface albedo (direct)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albi !< overall surface albedo (diffuse)
+
+ real (kind=kind_phys), dimension(1:2), intent(in) :: frevd !< overall surface albedo veg (direct)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: frevi !< overall surface albedo veg (diffuse)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: fregd !< overall surface albedo grd (direct)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: fregi !< overall surface albedo grd (diffuse)
! output
- real (kind=kind_phys), intent(out) :: parsun !average absorbed par for sunlit leaves (w/m2)
- real (kind=kind_phys), intent(out) :: parsha !average absorbed par for shaded leaves (w/m2)
- real (kind=kind_phys), intent(out) :: sav !solar radiation absorbed by vegetation (w/m2)
- real (kind=kind_phys), intent(out) :: sag !solar radiation absorbed by ground (w/m2)
- real (kind=kind_phys), intent(out) :: fsa !total absorbed solar radiation (w/m2)
- real (kind=kind_phys), intent(out) :: fsr !total reflected solar radiation (w/m2)
- real (kind=kind_phys), intent(out) :: fsrv !reflected solar radiation by vegetation
- real (kind=kind_phys), intent(out) :: fsrg !reflected solar radiation by ground
+ real (kind=kind_phys), intent(out) :: parsun !< average absorbed par for sunlit leaves (w/m2)
+ real (kind=kind_phys), intent(out) :: parsha !< average absorbed par for shaded leaves (w/m2)
+ real (kind=kind_phys), intent(out) :: sav !< solar radiation absorbed by vegetation (w/m2)
+ real (kind=kind_phys), intent(out) :: sag !< solar radiation absorbed by ground (w/m2)
+ real (kind=kind_phys), intent(out) :: fsa !< total absorbed solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: fsr !< total reflected solar radiation (w/m2)
+ real (kind=kind_phys), intent(out) :: fsrv !< reflected solar radiation by vegetation
+ real (kind=kind_phys), intent(out) :: fsrg !< reflected solar radiation by ground
! ------------------------ local variables ----------------------------------------------------
integer :: ib !waveband number (1=vis, 2=nir)
@@ -3147,6 +3150,7 @@ end subroutine surrad
!== begin snow_age =================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage)
! ----------------------------------------------------------------------
implicit none
@@ -3154,17 +3158,17 @@ subroutine snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage)
! from bats
! ------------------------ input/output variables --------------------------------------------------
!input
- type (noahmp_parameters), intent(in) :: parameters
- real (kind=kind_phys), intent(in) :: dt !main time step (s)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys), intent(in) :: sneqvo !snow mass at last time step(mm)
- real (kind=kind_phys), intent(in) :: sneqv !snow water per unit ground area (mm)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ real (kind=kind_phys), intent(in) :: dt !< main time step (s)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
+ real (kind=kind_phys), intent(in) :: sneqvo !< snow mass at last time step(mm)
+ real (kind=kind_phys), intent(in) :: sneqv !< snow water per unit ground area (mm)
!output
- real (kind=kind_phys), intent(out) :: fage !snow age
+ real (kind=kind_phys), intent(out) :: fage !< snow age
!input/output
- real (kind=kind_phys), intent(inout) :: tauss !non-dimensional snow age
+ real (kind=kind_phys), intent(inout) :: tauss !< non-dimensional snow age
!local
real (kind=kind_phys) :: tage !total aging effects
real (kind=kind_phys) :: age1 !effects of grain growth due to vapor diffusion
@@ -3200,23 +3204,24 @@ end subroutine snow_age
!== begin snowalb_bats =============================================================================
!>\ingroup NoahMP_LSM
+!! bats snow surface albedo
subroutine snowalb_bats (parameters,nband,fsno,cosz,fage,albsnd,albsni)
! --------------------------------------------------------------------------------------------------
implicit none
! --------------------------------------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer,intent(in) :: nband !number of waveband classes
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer,intent(in) :: nband !< number of waveband classes
- real (kind=kind_phys),intent(in) :: cosz !cosine solar zenith angle
- real (kind=kind_phys),intent(in) :: fsno !snow cover fraction (-)
- real (kind=kind_phys),intent(in) :: fage !snow age correction
+ real (kind=kind_phys),intent(in) :: cosz !< cosine solar zenith angle
+ real (kind=kind_phys),intent(in) :: fsno !< snow cover fraction (-)
+ real (kind=kind_phys),intent(in) :: fage !< snow age correction
! output
- real (kind=kind_phys), dimension(1:2),intent(out) :: albsnd !snow albedo for direct(1=vis, 2=nir)
- real (kind=kind_phys), dimension(1:2),intent(out) :: albsni !snow albedo for diffuse
+ real (kind=kind_phys), dimension(1:2),intent(out) :: albsnd !< snow albedo for direct(1=vis, 2=nir)
+ real (kind=kind_phys), dimension(1:2),intent(out) :: albsni !< snow albedo for diffuse
! ---------------------------------------------------------------------------------------------
! ------------------------ local variables ----------------------------------------------------
@@ -3256,6 +3261,7 @@ end subroutine snowalb_bats
!== begin snowalb_class ============================================================================
!>\ingroup NoahMP_LSM
+!! class snow surface albedo
subroutine snowalb_class (parameters,nband,qsnow,dt,alb,albold,albsnd,albsni,iloc,jloc)
! ----------------------------------------------------------------------
implicit none
@@ -3263,21 +3269,21 @@ subroutine snowalb_class (parameters,nband,qsnow,dt,alb,albold,albsnd,albsni,ilo
! input
type (noahmp_parameters), intent(in) :: parameters
- integer,intent(in) :: iloc !grid index
- integer,intent(in) :: jloc !grid index
- integer,intent(in) :: nband !number of waveband classes
+ integer,intent(in) :: iloc !< grid index
+ integer,intent(in) :: jloc !< grid index
+ integer,intent(in) :: nband !< number of waveband classes
- real (kind=kind_phys),intent(in) :: qsnow !snowfall (mm/s)
- real (kind=kind_phys),intent(in) :: dt !time step (sec)
- real (kind=kind_phys),intent(in) :: albold !snow albedo at last time step
+ real (kind=kind_phys),intent(in) :: qsnow !< snowfall (mm/s)
+ real (kind=kind_phys),intent(in) :: dt !< time step (sec)
+ real (kind=kind_phys),intent(in) :: albold !< snow albedo at last time step
! in & out
- real (kind=kind_phys), intent(inout) :: alb !
+ real (kind=kind_phys), intent(inout) :: alb !<
! output
- real (kind=kind_phys), dimension(1:2),intent(out) :: albsnd !snow albedo for direct(1=vis, 2=nir)
- real (kind=kind_phys), dimension(1:2),intent(out) :: albsni !snow albedo for diffuse
+ real (kind=kind_phys), dimension(1:2),intent(out) :: albsnd !< snow albedo for direct(1=vis, 2=nir)
+ real (kind=kind_phys), dimension(1:2),intent(out) :: albsni !< snow albedo for diffuse
! ---------------------------------------------------------------------------------------------
! ------------------------ local variables ----------------------------------------------------
@@ -3310,6 +3316,7 @@ end subroutine snowalb_class
!== begin groundalb ================================================================================
!>\ingroup NoahMP_LSM
+!! ground surface albedo
subroutine groundalb (parameters,nsoil ,nband ,ice ,ist , & !in
fsno ,smc ,albsnd ,albsni ,cosz , & !in
tg ,iloc ,jloc , & !in
@@ -3319,24 +3326,24 @@ subroutine groundalb (parameters,nsoil ,nband ,ice ,ist , & !in
! --------------------------------------------------------------------------------------------------
!input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsoil !number of soil layers
- integer, intent(in) :: nband !number of solar radiation waveband classes
- integer, intent(in) :: ice !value of ist for land ice
- integer, intent(in) :: ist !surface type
- real (kind=kind_phys), intent(in) :: fsno !fraction of surface covered with snow (-)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys), intent(in) :: cosz !cosine solar zenith angle (0-1)
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !volumetric soil water content (m3/m3)
- real (kind=kind_phys), dimension(1: 2), intent(in) :: albsnd !direct beam snow albedo (vis, nir)
- real (kind=kind_phys), dimension(1: 2), intent(in) :: albsni !diffuse snow albedo (vis, nir)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsoil !< number of soil layers
+ integer, intent(in) :: nband !< number of solar radiation waveband classes
+ integer, intent(in) :: ice !< value of ist for land ice
+ integer, intent(in) :: ist !< surface type
+ real (kind=kind_phys), intent(in) :: fsno !< fraction of surface covered with snow (-)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
+ real (kind=kind_phys), intent(in) :: cosz !< cosine solar zenith angle (0-1)
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: smc !< volumetric soil water content (m3/m3)
+ real (kind=kind_phys), dimension(1: 2), intent(in) :: albsnd !< direct beam snow albedo (vis, nir)
+ real (kind=kind_phys), dimension(1: 2), intent(in) :: albsni !< diffuse snow albedo (vis, nir)
!output
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albgrd !ground albedo (direct beam: vis, nir)
- real (kind=kind_phys), dimension(1: 2), intent(out) :: albgri !ground albedo (diffuse: vis, nir)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albgrd !< ground albedo (direct beam: vis, nir)
+ real (kind=kind_phys), dimension(1: 2), intent(out) :: albgri !< ground albedo (diffuse: vis, nir)
!local
@@ -3397,34 +3404,34 @@ subroutine twostream (parameters,ib ,ic ,vegtyp ,cosz ,vai , & !
! --------------------------------------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: ist !surface type
- integer, intent(in) :: ib !waveband number
- integer, intent(in) :: ic !0=unit incoming direct; 1=unit incoming diffuse
- integer, intent(in) :: vegtyp !vegetation type
-
- real (kind=kind_phys), intent(in) :: cosz !cosine of direct zenith angle (0-1)
- real (kind=kind_phys), intent(in) :: vai !one-sided leaf+stem area index (m2/m2)
- real (kind=kind_phys), intent(in) :: fwet !fraction of lai, sai that is wetted (-)
- real (kind=kind_phys), intent(in) :: t !surface temperature (k)
-
- real (kind=kind_phys), dimension(1:2), intent(in) :: albgrd !direct albedo of underlying surface (-)
- real (kind=kind_phys), dimension(1:2), intent(in) :: albgri !diffuse albedo of underlying surface (-)
- real (kind=kind_phys), dimension(1:2), intent(in) :: rho !leaf+stem reflectance
- real (kind=kind_phys), dimension(1:2), intent(in) :: tau !leaf+stem transmittance
- real (kind=kind_phys), intent(in) :: fveg !green vegetation fraction [0.0-1.0]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: ist !< surface type
+ integer, intent(in) :: ib !< waveband number
+ integer, intent(in) :: ic !< 0=unit incoming direct; 1=unit incoming diffuse
+ integer, intent(in) :: vegtyp !< vegetation type
+
+ real (kind=kind_phys), intent(in) :: cosz !< cosine of direct zenith angle (0-1)
+ real (kind=kind_phys), intent(in) :: vai !< one-sided leaf+stem area index (m2/m2)
+ real (kind=kind_phys), intent(in) :: fwet !< fraction of lai, sai that is wetted (-)
+ real (kind=kind_phys), intent(in) :: t !< surface temperature (k)
+
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albgrd !< direct albedo of underlying surface (-)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: albgri !< diffuse albedo of underlying surface (-)
+ real (kind=kind_phys), dimension(1:2), intent(in) :: rho !< leaf+stem reflectance
+ real (kind=kind_phys), dimension(1:2), intent(in) :: tau !< leaf+stem transmittance
+ real (kind=kind_phys), intent(in) :: fveg !< green vegetation fraction [0.0-1.0]
! output
- real (kind=kind_phys), dimension(1:2), intent(out) :: fab !flux abs by veg layer (per unit incoming flux)
- real (kind=kind_phys), dimension(1:2), intent(out) :: fre !flux refl above veg layer (per unit incoming flux)
- real (kind=kind_phys), dimension(1:2), intent(out) :: ftd !down dir flux below veg layer (per unit in flux)
- real (kind=kind_phys), dimension(1:2), intent(out) :: fti !down dif flux below veg layer (per unit in flux)
- real (kind=kind_phys), intent(out) :: gdir !projected leaf+stem area in solar direction
- real (kind=kind_phys), dimension(1:2), intent(out) :: frev !flux reflected by veg layer (per unit incoming flux)
- real (kind=kind_phys), dimension(1:2), intent(out) :: freg !flux reflected by ground (per unit incoming flux)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: fab !< flux abs by veg layer (per unit incoming flux)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: fre !< flux refl above veg layer (per unit incoming flux)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: ftd !< down dir flux below veg layer (per unit in flux)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: fti !< down dif flux below veg layer (per unit in flux)
+ real (kind=kind_phys), intent(out) :: gdir !< projected leaf+stem area in solar direction
+ real (kind=kind_phys), dimension(1:2), intent(out) :: frev !< flux reflected by veg layer (per unit incoming flux)
+ real (kind=kind_phys), dimension(1:2), intent(out) :: freg !< flux reflected by ground (per unit incoming flux)
! local
real (kind=kind_phys) :: omega !fraction of intercepted radiation that is scattered
@@ -3670,89 +3677,89 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , &
! --------------------------------------------------------------------------------------------------
! input
type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- logical, intent(in) :: veg !true if vegetated surface
- integer, intent(in) :: nsnow !maximum no. of snow layers
- integer, intent(in) :: nsoil !number of soil layers
- integer, intent(in) :: isnow !actual no. of snow layers
- integer, intent(in) :: vegtyp !vegetation physiology type
- real (kind=kind_phys), intent(in) :: fveg !greeness vegetation fraction (-)
- real (kind=kind_phys), intent(in) :: sav !solar rad absorbed by veg (w/m2)
- real (kind=kind_phys), intent(in) :: sag !solar rad absorbed by ground (w/m2)
- real (kind=kind_phys), intent(in) :: lwdn !atmospheric longwave radiation (w/m2)
- real (kind=kind_phys), intent(in) :: ur !wind speed at height zlvl (m/s)
- real (kind=kind_phys), intent(in) :: uu !wind speed in eastward dir (m/s)
- real (kind=kind_phys), intent(in) :: vv !wind speed in northward dir (m/s)
- real (kind=kind_phys), intent(in) :: sfctmp !air temperature at reference height (k)
- real (kind=kind_phys), intent(in) :: thair !potential temp at reference height (k)
- real (kind=kind_phys), intent(in) :: eair !vapor pressure air at zlvl (pa)
- real (kind=kind_phys), intent(in) :: qair !specific humidity at zlvl (kg/kg)
- real (kind=kind_phys), intent(in) :: rhoair !density air (kg/m**3)
- real (kind=kind_phys), intent(in) :: dt !time step (s)
- real (kind=kind_phys), intent(in) :: fsno !snow fraction
-
- real (kind=kind_phys) , intent(in) :: pblhx ! pbl height
- real (kind=kind_phys) , intent(in) :: ep_1
- real (kind=kind_phys) , intent(in) :: ep_2
- real (kind=kind_phys) , intent(in) :: cp
- integer , intent(in) :: iz0tlnd
- integer , intent(in) :: itime
- integer , intent(in) :: psi_opt
-
-
- real (kind=kind_phys), intent(in) :: snowh !actual snow depth [m]
- real (kind=kind_phys), intent(in) :: fwet !wetted fraction of canopy
- real (kind=kind_phys), intent(in) :: cwp !canopy wind parameter
-
- real (kind=kind_phys), intent(in) :: vai !total leaf area index + stem area index
- real (kind=kind_phys), intent(in) :: laisun !sunlit leaf area index, one-sided (m2/m2)
- real (kind=kind_phys), intent(in) :: laisha !shaded leaf area index, one-sided (m2/m2)
- real (kind=kind_phys), intent(in) :: zlvl !reference height (m)
- real (kind=kind_phys), intent(in) :: zpd !zero plane displacement (m)
- real (kind=kind_phys), intent(in) :: z0m !roughness length, momentum (m)
- real (kind=kind_phys), intent(in) :: z0mg !roughness length, momentum, ground (m)
- real (kind=kind_phys), intent(in) :: emv !vegetation emissivity
- real (kind=kind_phys), intent(in) :: emg !ground emissivity
-
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !soil/snow temperature (k)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !thermal conductivity of snow/soil (w/m/k)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !thinkness of snow/soil layers (m)
- real (kind=kind_phys), intent(in) :: canliq !intercepted liquid water (mm)
- real (kind=kind_phys), intent(in) :: canice !intercepted ice mass (mm)
- real (kind=kind_phys), intent(in) :: rsurf !ground surface resistance (s/m)
-! real (kind=kind_phys), intent(in) :: gamma !psychrometric constant (pa/k)
-! real (kind=kind_phys), intent(in) :: lathea !latent heat of vaporization/subli (j/kg)
- real (kind=kind_phys), intent(in) :: gammav !psychrometric constant (pa/k)
- real (kind=kind_phys), intent(in) :: latheav !latent heat of vaporization/subli (j/kg)
- real (kind=kind_phys), intent(in) :: gammag !psychrometric constant (pa/k)
- real (kind=kind_phys), intent(in) :: latheag !latent heat of vaporization/subli (j/kg)
- real (kind=kind_phys), intent(in) :: parsun !par absorbed per unit sunlit lai (w/m2)
- real (kind=kind_phys), intent(in) :: parsha !par absorbed per unit shaded lai (w/m2)
- real (kind=kind_phys), intent(in) :: foln !foliage nitrogen (%)
- real (kind=kind_phys), intent(in) :: co2air !atmospheric co2 concentration (pa)
- real (kind=kind_phys), intent(in) :: o2air !atmospheric o2 concentration (pa)
- real (kind=kind_phys), intent(in) :: igs !growing season index (0=off, 1=on)
- real (kind=kind_phys), intent(in) :: sfcprs !pressure (pa)
- real (kind=kind_phys), intent(in) :: btran !soil water transpiration factor (0 to 1)
- real (kind=kind_phys), intent(in) :: rhsur !raltive humidity in surface soil/snow air space (-)
-
- real (kind=kind_phys) , intent(in) :: qc !cloud water mixing ratio
- real (kind=kind_phys) , intent(in) :: psfc !pressure at lowest model layer
- real (kind=kind_phys) , intent(in) :: dx !grid spacing
- real (kind=kind_phys) , intent(in) :: q2 !mixing ratio (kg/kg)
- real (kind=kind_phys) , intent(in) :: dz8w !thickness of lowest layer
- real (kind=kind_phys) , intent(inout) :: qsfc !mixing ratio at lowest model layer
- real (kind=kind_phys), intent(in) :: pahv !precipitation advected heat - canopy net in (w/m2)
- real (kind=kind_phys), intent(in) :: pahg !precipitation advected heat - ground net in (w/m2)
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ logical, intent(in) :: veg !< true if vegetated surface
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ integer, intent(in) :: nsoil !< number of soil layers
+ integer, intent(in) :: isnow !< actual no. of snow layers
+ integer, intent(in) :: vegtyp !< vegetation physiology type
+ real (kind=kind_phys), intent(in) :: fveg !< greeness vegetation fraction (-)
+ real (kind=kind_phys), intent(in) :: sav !< solar rad absorbed by veg (w/m2)
+ real (kind=kind_phys), intent(in) :: sag !< solar rad absorbed by ground (w/m2)
+ real (kind=kind_phys), intent(in) :: lwdn !< atmospheric longwave radiation (w/m2)
+ real (kind=kind_phys), intent(in) :: ur !< wind speed at height zlvl (m/s)
+ real (kind=kind_phys), intent(in) :: uu !< wind speed in eastward dir (m/s)
+ real (kind=kind_phys), intent(in) :: vv !< wind speed in northward dir (m/s)
+ real (kind=kind_phys), intent(in) :: sfctmp !< air temperature at reference height (k)
+ real (kind=kind_phys), intent(in) :: thair !< potential temp at reference height (k)
+ real (kind=kind_phys), intent(in) :: eair !< vapor pressure air at zlvl (pa)
+ real (kind=kind_phys), intent(in) :: qair !< specific humidity at zlvl (kg/kg)
+ real (kind=kind_phys), intent(in) :: rhoair !< density air (kg/m**3)
+ real (kind=kind_phys), intent(in) :: dt !< time step (s)
+ real (kind=kind_phys), intent(in) :: fsno !< snow fraction
+
+ real (kind=kind_phys) , intent(in) :: pblhx !< pbl height
+ real (kind=kind_phys) , intent(in) :: ep_1 !<
+ real (kind=kind_phys) , intent(in) :: ep_2 !<
+ real (kind=kind_phys) , intent(in) :: cp !<
+ integer , intent(in) :: iz0tlnd !<
+ integer , intent(in) :: itime !<
+ integer , intent(in) :: psi_opt !<
+
+
+ real (kind=kind_phys), intent(in) :: snowh !< actual snow depth [m]
+ real (kind=kind_phys), intent(in) :: fwet !< wetted fraction of canopy
+ real (kind=kind_phys), intent(in) :: cwp !< canopy wind parameter
+
+ real (kind=kind_phys), intent(in) :: vai !< total leaf area index + stem area index
+ real (kind=kind_phys), intent(in) :: laisun !< sunlit leaf area index, one-sided (m2/m2)
+ real (kind=kind_phys), intent(in) :: laisha !< shaded leaf area index, one-sided (m2/m2)
+ real (kind=kind_phys), intent(in) :: zlvl !< reference height (m)
+ real (kind=kind_phys), intent(in) :: zpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in) :: z0m !< roughness length, momentum (m)
+ real (kind=kind_phys), intent(in) :: z0mg !< roughness length, momentum, ground (m)
+ real (kind=kind_phys), intent(in) :: emv !< vegetation emissivity
+ real (kind=kind_phys), intent(in) :: emg !< ground emissivity
+
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !< soil/snow temperature (k)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !< thermal conductivity of snow/soil (w/m/k)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< thinkness of snow/soil layers (m)
+ real (kind=kind_phys), intent(in) :: canliq !< intercepted liquid water (mm)
+ real (kind=kind_phys), intent(in) :: canice !< intercepted ice mass (mm)
+ real (kind=kind_phys), intent(in) :: rsurf !< ground surface resistance (s/m)
+! real (kind=kind_phys), intent(in) :: gamma !< psychrometric constant (pa/k)
+! real (kind=kind_phys), intent(in) :: lathea !< latent heat of vaporization/subli (j/kg)
+ real (kind=kind_phys), intent(in) :: gammav !< psychrometric constant (pa/k)
+ real (kind=kind_phys), intent(in) :: latheav !< latent heat of vaporization/subli (j/kg)
+ real (kind=kind_phys), intent(in) :: gammag !< psychrometric constant (pa/k)
+ real (kind=kind_phys), intent(in) :: latheag !< latent heat of vaporization/subli (j/kg)
+ real (kind=kind_phys), intent(in) :: parsun !< par absorbed per unit sunlit lai (w/m2)
+ real (kind=kind_phys), intent(in) :: parsha !< par absorbed per unit shaded lai (w/m2)
+ real (kind=kind_phys), intent(in) :: foln !< foliage nitrogen (%)
+ real (kind=kind_phys), intent(in) :: co2air !< atmospheric co2 concentration (pa)
+ real (kind=kind_phys), intent(in) :: o2air !< atmospheric o2 concentration (pa)
+ real (kind=kind_phys), intent(in) :: igs !< growing season index (0=off, 1=on)
+ real (kind=kind_phys), intent(in) :: sfcprs !< pressure (pa)
+ real (kind=kind_phys), intent(in) :: btran !< soil water transpiration factor (0 to 1)
+ real (kind=kind_phys), intent(in) :: rhsur !< raltive humidity in surface soil/snow air space (-)
+
+ real (kind=kind_phys) , intent(in) :: qc !< cloud water mixing ratio
+ real (kind=kind_phys) , intent(in) :: psfc !< pressure at lowest model layer
+ real (kind=kind_phys) , intent(in) :: dx !< grid spacing
+ real (kind=kind_phys) , intent(in) :: q2 !< mixing ratio (kg/kg)
+ real (kind=kind_phys) , intent(in) :: dz8w !< thickness of lowest layer
+ real (kind=kind_phys) , intent(inout) :: qsfc !< mixing ratio at lowest model layer
+ real (kind=kind_phys), intent(in) :: pahv !< precipitation advected heat - canopy net in (w/m2)
+ real (kind=kind_phys), intent(in) :: pahg !< precipitation advected heat - ground net in (w/m2)
! input/output
- real (kind=kind_phys), intent(inout) :: eah !canopy air vapor pressure (pa)
- real (kind=kind_phys), intent(inout) :: tah !canopy air temperature (k)
- real (kind=kind_phys), intent(inout) :: tv !vegetation temperature (k)
- real (kind=kind_phys), intent(inout) :: tg !ground temperature (k)
- real (kind=kind_phys), intent(inout) :: cm !momentum drag coefficient
- real (kind=kind_phys), intent(inout) :: ch !sensible heat exchange coefficient
+ real (kind=kind_phys), intent(inout) :: eah !< canopy air vapor pressure (pa)
+ real (kind=kind_phys), intent(inout) :: tah !< canopy air temperature (k)
+ real (kind=kind_phys), intent(inout) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys), intent(inout) :: tg !< ground temperature (k)
+ real (kind=kind_phys), intent(inout) :: cm !< momentum drag coefficient
+ real (kind=kind_phys), intent(inout) :: ch !< sensible heat exchange coefficient
#ifdef CCPP
character(len=*), intent(inout) :: errmsg
@@ -3761,27 +3768,27 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , &
! output
! -fsa + fira + fsh + (fcev + fctr + fgev) + fcst + ssoil + canhs = 0
- real (kind=kind_phys), intent(out) :: tauxv !wind stress: e-w (n/m2)
- real (kind=kind_phys), intent(out) :: tauyv !wind stress: n-s (n/m2)
- real (kind=kind_phys), intent(out) :: irc !net longwave radiation (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: shc !sensible heat flux (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: evc !evaporation heat flux (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: irg !net longwave radiation (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: shg !sensible heat flux (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: evg !evaporation heat flux (w/m2) [+= to atm]
- real (kind=kind_phys), intent(out) :: tr !transpiration heat flux (w/m2)[+= to atm]
- real (kind=kind_phys), intent(out) :: gh !ground heat (w/m2) [+ = to soil]
- real (kind=kind_phys), intent(out) :: t2mv !2 m height air temperature (k)
- real (kind=kind_phys), intent(out) :: psnsun !sunlit leaf photosynthesis (umolco2/m2/s)
- real (kind=kind_phys), intent(out) :: psnsha !shaded leaf photosynthesis (umolco2/m2/s)
- real (kind=kind_phys), intent(out) :: chleaf !leaf exchange coefficient
- real (kind=kind_phys), intent(out) :: chuc !under canopy exchange coefficient
- real (kind=kind_phys), intent(out) :: canhs !canopy heat storage change (w/m2)
- real (kind=kind_phys), intent(out) :: q2v
- real (kind=kind_phys) :: cah !sensible heat conductance, canopy air to zlvl air (m/s)
- real (kind=kind_phys) :: u10v !10 m wind speed in eastward dir (m/s)
- real (kind=kind_phys) :: v10v !10 m wind speed in eastward dir (m/s)
- real (kind=kind_phys) :: wspd
+ real (kind=kind_phys), intent(out) :: tauxv !< wind stress: e-w (n/m2)
+ real (kind=kind_phys), intent(out) :: tauyv !< wind stress: n-s (n/m2)
+ real (kind=kind_phys), intent(out) :: irc !< net longwave radiation (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: shc !< sensible heat flux (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: evc !< evaporation heat flux (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: irg !< net longwave radiation (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: shg !< sensible heat flux (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: evg !< evaporation heat flux (w/m2) [+= to atm]
+ real (kind=kind_phys), intent(out) :: tr !< transpiration heat flux (w/m2)[+= to atm]
+ real (kind=kind_phys), intent(out) :: gh !< ground heat (w/m2) [+ = to soil]
+ real (kind=kind_phys), intent(out) :: t2mv !< 2 m height air temperature (k)
+ real (kind=kind_phys), intent(out) :: psnsun !< sunlit leaf photosynthesis (umolco2/m2/s)
+ real (kind=kind_phys), intent(out) :: psnsha !< shaded leaf photosynthesis (umolco2/m2/s)
+ real (kind=kind_phys), intent(out) :: chleaf !< leaf exchange coefficient
+ real (kind=kind_phys), intent(out) :: chuc !< under canopy exchange coefficient
+ real (kind=kind_phys), intent(out) :: canhs !< canopy heat storage change (w/m2)
+ real (kind=kind_phys), intent(out) :: q2v !<
+ real (kind=kind_phys) :: cah !< sensible heat conductance, canopy air to zlvl air (m/s)
+ real (kind=kind_phys) :: u10v !< 10 m wind speed in eastward dir (m/s)
+ real (kind=kind_phys) :: v10v !< 10 m wind speed in eastward dir (m/s)
+ real (kind=kind_phys) :: wspd !<
! ------------------------ local variables ----------------------------------------------------
real (kind=kind_phys) :: gdx !grid dx
@@ -4347,61 +4354,61 @@ subroutine bare_flux (parameters,nsnow ,nsoil ,isnow ,dt ,sag , &
implicit none
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer , intent(in) :: iloc !grid index
- integer , intent(in) :: jloc !grid index
- integer, intent(in) :: nsnow !maximum no. of snow layers
- integer, intent(in) :: nsoil !number of soil layers
- integer, intent(in) :: isnow !actual no. of snow layers
- real (kind=kind_phys), intent(in) :: dt !time step (s)
- real (kind=kind_phys), intent(in) :: sag !solar radiation absorbed by ground (w/m2)
- real (kind=kind_phys), intent(in) :: lwdn !atmospheric longwave radiation (w/m2)
- real (kind=kind_phys), intent(in) :: ur !wind speed at height zlvl (m/s)
- real (kind=kind_phys), intent(in) :: uu !wind speed in eastward dir (m/s)
- real (kind=kind_phys), intent(in) :: vv !wind speed in northward dir (m/s)
- real (kind=kind_phys), intent(in) :: sfctmp !air temperature at reference height (k)
- real (kind=kind_phys), intent(in) :: thair !potential temperature at height zlvl (k)
- real (kind=kind_phys), intent(in) :: qair !specific humidity at height zlvl (kg/kg)
- real (kind=kind_phys), intent(in) :: eair !vapor pressure air at height (pa)
- real (kind=kind_phys), intent(in) :: rhoair !density air (kg/m3)
- real (kind=kind_phys), intent(in) :: snowh !actual snow depth [m]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !thickness of snow/soil layers (m)
- real (kind=kind_phys), intent(in) :: zlvl !reference height (m)
- real (kind=kind_phys), intent(in) :: zpd !zero plane displacement (m)
- real (kind=kind_phys), intent(in) :: z0m !roughness length, momentum, ground (m)
- real (kind=kind_phys), intent(in) :: emg !ground emissivity
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !soil/snow temperature (k)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !thermal conductivity of snow/soil (w/m/k)
- real (kind=kind_phys), intent(in) :: rsurf !ground surface resistance (s/m)
- real (kind=kind_phys), intent(in) :: lathea !latent heat of vaporization/subli (j/kg)
- real (kind=kind_phys), intent(in) :: gamma !psychrometric constant (pa/k)
- real (kind=kind_phys), intent(in) :: rhsur !raltive humidity in surface soil/snow air space (-)
- real (kind=kind_phys), intent(in) :: fsno !snow fraction
-
- real (kind=kind_phys), intent(in) :: pblhx !pbl height (m)
- real (kind=kind_phys), intent(in) :: ep_1
- real (kind=kind_phys), intent(in) :: ep_2
- real (kind=kind_phys), intent(in) :: cp
- integer, intent(in) :: iz0tlnd
- integer, intent(in) :: itime
- integer, intent(in) :: psi_opt
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer , intent(in) :: iloc !< grid index
+ integer , intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ integer, intent(in) :: nsoil !< number of soil layers
+ integer, intent(in) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), intent(in) :: dt !< time step (s)
+ real (kind=kind_phys), intent(in) :: sag !< solar radiation absorbed by ground (w/m2)
+ real (kind=kind_phys), intent(in) :: lwdn !< atmospheric longwave radiation (w/m2)
+ real (kind=kind_phys), intent(in) :: ur !< wind speed at height zlvl (m/s)
+ real (kind=kind_phys), intent(in) :: uu !< wind speed in eastward dir (m/s)
+ real (kind=kind_phys), intent(in) :: vv !< wind speed in northward dir (m/s)
+ real (kind=kind_phys), intent(in) :: sfctmp !< air temperature at reference height (k)
+ real (kind=kind_phys), intent(in) :: thair !< potential temperature at height zlvl (k)
+ real (kind=kind_phys), intent(in) :: qair !< specific humidity at height zlvl (kg/kg)
+ real (kind=kind_phys), intent(in) :: eair !< vapor pressure air at height (pa)
+ real (kind=kind_phys), intent(in) :: rhoair !< density air (kg/m3)
+ real (kind=kind_phys), intent(in) :: snowh !< actual snow depth [m]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< thickness of snow/soil layers (m)
+ real (kind=kind_phys), intent(in) :: zlvl !< reference height (m)
+ real (kind=kind_phys), intent(in) :: zpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in) :: z0m !< roughness length, momentum, ground (m)
+ real (kind=kind_phys), intent(in) :: emg !< ground emissivity
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !< soil/snow temperature (k)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !< thermal conductivity of snow/soil (w/m/k)
+ real (kind=kind_phys), intent(in) :: rsurf !< ground surface resistance (s/m)
+ real (kind=kind_phys), intent(in) :: lathea !< latent heat of vaporization/subli (j/kg)
+ real (kind=kind_phys), intent(in) :: gamma !< psychrometric constant (pa/k)
+ real (kind=kind_phys), intent(in) :: rhsur !< raltive humidity in surface soil/snow air space (-)
+ real (kind=kind_phys), intent(in) :: fsno !< snow fraction
+
+ real (kind=kind_phys), intent(in) :: pblhx !< pbl height (m)
+ real (kind=kind_phys), intent(in) :: ep_1 !<
+ real (kind=kind_phys), intent(in) :: ep_2 !<
+ real (kind=kind_phys), intent(in) :: cp !<
+ integer, intent(in) :: iz0tlnd !<
+ integer, intent(in) :: itime !<
+ integer, intent(in) :: psi_opt !<
!jref:start; in
- real (kind=kind_phys) , intent(in) :: qc !cloud water mixing ratio
- real (kind=kind_phys) , intent(inout) :: qsfc !mixing ratio at lowest model layer
- real (kind=kind_phys) , intent(in) :: psfc !pressure at lowest model layer
- real (kind=kind_phys) , intent(in) :: sfcprs !pressure at lowest model layer
- real (kind=kind_phys) , intent(in) :: dx !horisontal grid spacing
- real (kind=kind_phys) , intent(in) :: q2 !mixing ratio (kg/kg)
- real (kind=kind_phys) , intent(in) :: dz8w !thickness of lowest layer
+ real (kind=kind_phys) , intent(in) :: qc !< cloud water mixing ratio
+ real (kind=kind_phys) , intent(inout) :: qsfc !< mixing ratio at lowest model layer
+ real (kind=kind_phys) , intent(in) :: psfc !< pressure at lowest model layer
+ real (kind=kind_phys) , intent(in) :: sfcprs !< pressure at lowest model layer
+ real (kind=kind_phys) , intent(in) :: dx !< horisontal grid spacing
+ real (kind=kind_phys) , intent(in) :: q2 !< mixing ratio (kg/kg)
+ real (kind=kind_phys) , intent(in) :: dz8w !< thickness of lowest layer
!jref:end
- real (kind=kind_phys), intent(in) :: pahb !precipitation advected heat - ground net in (w/m2)
+ real (kind=kind_phys), intent(in) :: pahb !< precipitation advected heat - ground net in (w/m2)
! input/output
- real (kind=kind_phys), intent(inout) :: tgb !ground temperature (k)
- real (kind=kind_phys), intent(inout) :: cm !momentum drag coefficient
- real (kind=kind_phys), intent(inout) :: ch !sensible heat exchange coefficient
+ real (kind=kind_phys), intent(inout) :: tgb !< ground temperature (k)
+ real (kind=kind_phys), intent(inout) :: cm !< momentum drag coefficient
+ real (kind=kind_phys), intent(inout) :: ch !< sensible heat exchange coefficient
#ifdef CCPP
character(len=*), intent(inout) :: errmsg
integer, intent(inout) :: errflg
@@ -4410,15 +4417,15 @@ subroutine bare_flux (parameters,nsnow ,nsoil ,isnow ,dt ,sag , &
! output
! -sab + irb[tg] + shb[tg] + evb[tg] + ghb[tg] = 0
- real (kind=kind_phys), intent(out) :: tauxb !wind stress: e-w (n/m2)
- real (kind=kind_phys), intent(out) :: tauyb !wind stress: n-s (n/m2)
- real (kind=kind_phys), intent(out) :: irb !net longwave rad (w/m2) [+ to atm]
- real (kind=kind_phys), intent(out) :: shb !sensible heat flux (w/m2) [+ to atm]
- real (kind=kind_phys), intent(out) :: evb !latent heat flux (w/m2) [+ to atm]
- real (kind=kind_phys), intent(out) :: ghb !ground heat flux (w/m2) [+ to soil]
- real (kind=kind_phys), intent(out) :: t2mb !2 m height air temperature (k)
+ real (kind=kind_phys), intent(out) :: tauxb !< wind stress: e-w (n/m2)
+ real (kind=kind_phys), intent(out) :: tauyb !< wind stress: n-s (n/m2)
+ real (kind=kind_phys), intent(out) :: irb !< net longwave rad (w/m2) [+ to atm]
+ real (kind=kind_phys), intent(out) :: shb !< sensible heat flux (w/m2) [+ to atm]
+ real (kind=kind_phys), intent(out) :: evb !< latent heat flux (w/m2) [+ to atm]
+ real (kind=kind_phys), intent(out) :: ghb !< ground heat flux (w/m2) [+ to soil]
+ real (kind=kind_phys), intent(out) :: t2mb !< 2 m height air temperature (k)
!jref:start
- real (kind=kind_phys), intent(out) :: q2b !bare ground heat conductance
+ real (kind=kind_phys), intent(out) :: q2b !< bare ground heat conductance
real (kind=kind_phys) :: ehb !bare ground heat conductance
real (kind=kind_phys) :: u10b !10 m wind speed in eastward dir (m/s)
real (kind=kind_phys) :: v10b !10 m wind speed in eastward dir (m/s)
@@ -4790,37 +4797,37 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in
! --------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: iter !iteration index
- integer, intent(in) :: vegtyp !vegetation physiology type
- real (kind=kind_phys), intent(in) :: vai !total lai + stem area index, one sided
- real (kind=kind_phys), intent(in) :: rhoair !density air (kg/m3)
- real (kind=kind_phys), intent(in) :: hg !ground sensible heat flux (w/m2)
- real (kind=kind_phys), intent(in) :: tv !vegetation temperature (k)
- real (kind=kind_phys), intent(in) :: tah !air temperature at height z0h+zpd (k)
- real (kind=kind_phys), intent(in) :: zpd !zero plane displacement (m)
- real (kind=kind_phys), intent(in) :: z0mg !roughness length, momentum, ground (m)
- real (kind=kind_phys), intent(in) :: hcan !canopy height (m) [note: hcan >= z0mg]
- real (kind=kind_phys), intent(in) :: uc !wind speed at top of canopy (m/s)
- real (kind=kind_phys), intent(in) :: z0h !roughness length, sensible heat (m)
- real (kind=kind_phys), intent(in) :: z0hg !roughness length, sensible heat, ground (m)
- real (kind=kind_phys), intent(in) :: fv !friction velocity (m/s)
- real (kind=kind_phys), intent(in) :: cwp !canopy wind parameter
- real (kind=kind_phys), intent(in) :: mpe !prevents overflow error if division by zero
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: iter !< iteration index
+ integer, intent(in) :: vegtyp !< vegetation physiology type
+ real (kind=kind_phys), intent(in) :: vai !< total lai + stem area index, one sided
+ real (kind=kind_phys), intent(in) :: rhoair !< density air (kg/m3)
+ real (kind=kind_phys), intent(in) :: hg !< ground sensible heat flux (w/m2)
+ real (kind=kind_phys), intent(in) :: tv !< vegetation temperature (k)
+ real (kind=kind_phys), intent(in) :: tah !< air temperature at height z0h+zpd (k)
+ real (kind=kind_phys), intent(in) :: zpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in) :: z0mg !< roughness length, momentum, ground (m)
+ real (kind=kind_phys), intent(in) :: hcan !< canopy height (m) [note: hcan >= z0mg]
+ real (kind=kind_phys), intent(in) :: uc !< wind speed at top of canopy (m/s)
+ real (kind=kind_phys), intent(in) :: z0h !< roughness length, sensible heat (m)
+ real (kind=kind_phys), intent(in) :: z0hg !< roughness length, sensible heat, ground (m)
+ real (kind=kind_phys), intent(in) :: fv !< friction velocity (m/s)
+ real (kind=kind_phys), intent(in) :: cwp !< canopy wind parameter
+ real (kind=kind_phys), intent(in) :: mpe !< prevents overflow error if division by zero
! in & out
- real (kind=kind_phys), intent(inout) :: mozg !monin-obukhov stability parameter
- real (kind=kind_phys), intent(inout) :: fhg !stability correction
- real (kind=kind_phys), intent(inout) :: fhgh !stability correction, canopy
+ real (kind=kind_phys), intent(inout) :: mozg !< monin-obukhov stability parameter
+ real (kind=kind_phys), intent(inout) :: fhg !< stability correction
+ real (kind=kind_phys), intent(inout) :: fhgh !< stability correction, canopy
! outputs
- real (kind=kind_phys) :: ramg !aerodynamic resistance for momentum (s/m)
- real (kind=kind_phys) :: rahg !aerodynamic resistance for sensible heat (s/m)
- real (kind=kind_phys) :: rawg !aerodynamic resistance for water vapor (s/m)
- real (kind=kind_phys) :: rb !bulk leaf boundary layer resistance (s/m)
+ real (kind=kind_phys) :: ramg !< aerodynamic resistance for momentum (s/m)
+ real (kind=kind_phys) :: rahg !< aerodynamic resistance for sensible heat (s/m)
+ real (kind=kind_phys) :: rawg !< aerodynamic resistance for water vapor (s/m)
+ real (kind=kind_phys) :: rb !< bulk leaf boundary layer resistance (s/m)
real (kind=kind_phys) :: kh !turbulent transfer coefficient, sensible heat, (m2/s)
@@ -4905,28 +4912,28 @@ subroutine sfcdif1(parameters,iter ,sfctmp ,rhoair ,h ,qair , & !in
! -------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: iter !iteration index
- real (kind=kind_phys), intent(in) :: sfctmp !temperature at reference height (k)
- real (kind=kind_phys), intent(in) :: rhoair !density air (kg/m**3)
- real (kind=kind_phys), intent(in) :: h !sensible heat flux (w/m2) [+ to atm]
- real (kind=kind_phys), intent(in) :: qair !specific humidity at reference height (kg/kg)
- real (kind=kind_phys), intent(in) :: zlvl !reference height (m)
- real (kind=kind_phys), intent(in) :: zpd !zero plane displacement (m)
- real (kind=kind_phys), intent(in) :: z0h !roughness length, sensible heat, ground (m)
- real (kind=kind_phys), intent(in) :: z0m !roughness length, momentum, ground (m)
- real (kind=kind_phys), intent(in) :: ur !wind speed (m/s)
- real (kind=kind_phys), intent(in) :: mpe !prevents overflow error if division by zero
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: iter !< iteration index
+ real (kind=kind_phys), intent(in) :: sfctmp !< temperature at reference height (k)
+ real (kind=kind_phys), intent(in) :: rhoair !< density air (kg/m**3)
+ real (kind=kind_phys), intent(in) :: h !< sensible heat flux (w/m2) [+ to atm]
+ real (kind=kind_phys), intent(in) :: qair !< specific humidity at reference height (kg/kg)
+ real (kind=kind_phys), intent(in) :: zlvl !< reference height (m)
+ real (kind=kind_phys), intent(in) :: zpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in) :: z0h !< roughness length, sensible heat, ground (m)
+ real (kind=kind_phys), intent(in) :: z0m !< roughness length, momentum, ground (m)
+ real (kind=kind_phys), intent(in) :: ur !< wind speed (m/s)
+ real (kind=kind_phys), intent(in) :: mpe !< prevents overflow error if division by zero
! in & out
- integer, intent(inout) :: mozsgn !number of times moz changes sign
- real (kind=kind_phys), intent(inout) :: moz !monin-obukhov stability (z/l)
- real (kind=kind_phys), intent(inout) :: fm !momentum stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fh !sen heat stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fm2 !sen heat stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fh2 !sen heat stability correction, weighted by prior iters
+ integer, intent(inout) :: mozsgn !< number of times moz changes sign
+ real (kind=kind_phys), intent(inout) :: moz !< monin-obukhov stability (z/l)
+ real (kind=kind_phys), intent(inout) :: fm !< momentum stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fh !< sen heat stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fm2 !< sen heat stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fh2 !< sen heat stability correction, weighted by prior iters
#ifdef CCPP
character(len=*), intent(inout) :: errmsg
integer, intent(inout) :: errflg
@@ -4934,10 +4941,10 @@ subroutine sfcdif1(parameters,iter ,sfctmp ,rhoair ,h ,qair , & !in
! outputs
- real (kind=kind_phys), intent(out) :: cm !drag coefficient for momentum
- real (kind=kind_phys), intent(out) :: ch !drag coefficient for heat
- real (kind=kind_phys), intent(out) :: fv !friction velocity (m/s)
- real (kind=kind_phys), intent(out) :: ch2 !drag coefficient for heat
+ real (kind=kind_phys), intent(out) :: cm !< drag coefficient for momentum
+ real (kind=kind_phys), intent(out) :: ch !< drag coefficient for heat
+ real (kind=kind_phys), intent(out) :: fv !< friction velocity (m/s)
+ real (kind=kind_phys), intent(out) :: ch2 !< drag coefficient for heat
! locals
real (kind=kind_phys) :: mol !monin-obukhov length (m)
@@ -5291,33 +5298,33 @@ subroutine sfcdif3(parameters,iloc ,jloc ,iter ,sfctmp ,qair ,ur
! -------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in ) :: iloc ! grid index
- integer, intent(in ) :: jloc ! grid index
- integer, intent(in ) :: iter ! iteration index
- real (kind=kind_phys), intent(in ) :: sfctmp ! temperature at reference height [K]
- real (kind=kind_phys), intent(in ) :: qair ! specific humidity at reference height [kg/kg]
- real (kind=kind_phys), intent(in ) :: ur ! wind speed [m/s]
- real (kind=kind_phys), intent(in ) :: zlvl ! reference height [m]
- real (kind=kind_phys), intent(in ) :: tgb ! ground temperature [K]
- logical, intent(in ) :: thsfc_loc ! flag for using sfc-based theta
- real (kind=kind_phys), intent(in ) :: prslkix ! in exner function
- real (kind=kind_phys), intent(in ) :: prsik1x ! in exner function
- real (kind=kind_phys), intent(in ) :: prslk1x ! in exner function
- real (kind=kind_phys), intent(in ) :: z0m ! roughness length, momentum, ground [m]
- real (kind=kind_phys), intent(in ) :: z0h ! roughness length, sensible heat, ground [m]
- real (kind=kind_phys), intent(in ) :: zpd ! zero plane displacement [m]
- real (kind=kind_phys), intent(in ) :: snowh ! snow depth [m]
- real (kind=kind_phys), intent(in ) :: fveg ! fractional vegetation cover
- real (kind=kind_phys), intent(in ) :: garea1 ! grid area [km2]
- real (kind=kind_phys), intent(inout) :: ustarx ! friction velocity [m/s]
- real (kind=kind_phys), intent(inout) :: fm ! momentum stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fh ! sen heat stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fm2 ! sen heat stability correction, weighted by prior iters
- real (kind=kind_phys), intent(inout) :: fh2 ! sen heat stability correction, weighted by prior iters
- real (kind=kind_phys), intent( out) :: fv ! friction velocity (m/s)
- real (kind=kind_phys), intent( out) :: cm ! drag coefficient for momentum
- real (kind=kind_phys), intent( out) :: ch ! drag coefficient for heat
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in ) :: iloc !< grid index
+ integer, intent(in ) :: jloc !< grid index
+ integer, intent(in ) :: iter !< iteration index
+ real (kind=kind_phys), intent(in ) :: sfctmp !< temperature at reference height [K]
+ real (kind=kind_phys), intent(in ) :: qair !< specific humidity at reference height [kg/kg]
+ real (kind=kind_phys), intent(in ) :: ur !< wind speed [m/s]
+ real (kind=kind_phys), intent(in ) :: zlvl !< reference height [m]
+ real (kind=kind_phys), intent(in ) :: tgb !< ground temperature [K]
+ logical, intent(in ) :: thsfc_loc !< flag for using sfc-based theta
+ real (kind=kind_phys), intent(in ) :: prslkix !< in exner function
+ real (kind=kind_phys), intent(in ) :: prsik1x !< in exner function
+ real (kind=kind_phys), intent(in ) :: prslk1x !< in exner function
+ real (kind=kind_phys), intent(in ) :: z0m !< roughness length, momentum, ground [m]
+ real (kind=kind_phys), intent(in ) :: z0h !< roughness length, sensible heat, ground [m]
+ real (kind=kind_phys), intent(in ) :: zpd !< zero plane displacement [m]
+ real (kind=kind_phys), intent(in ) :: snowh !< snow depth [m]
+ real (kind=kind_phys), intent(in ) :: fveg !< fractional vegetation cover
+ real (kind=kind_phys), intent(in ) :: garea1 !< grid area [km2]
+ real (kind=kind_phys), intent(inout) :: ustarx !< friction velocity [m/s]
+ real (kind=kind_phys), intent(inout) :: fm !< momentum stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fh !< sen heat stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fm2 !< sen heat stability correction, weighted by prior iters
+ real (kind=kind_phys), intent(inout) :: fh2 !< sen heat stability correction, weighted by prior iters
+ real (kind=kind_phys), intent( out) :: fv !< friction velocity (m/s)
+ real (kind=kind_phys), intent( out) :: cm !< drag coefficient for momentum
+ real (kind=kind_phys), intent( out) :: ch !< drag coefficient for heat
real (kind=kind_phys) :: snwd ! snow depth [mm]
real (kind=kind_phys) :: zlvlb ! reference height - zpd [m]
@@ -5379,25 +5386,25 @@ subroutine thermalz0(parameters,fveg,z0m,z0mg,zlvl,zpd,ezpd,ustarx, & !
! -------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer , intent(in ) :: vegtyp ! vegetation type
- integer , intent(in ) :: icom ! 0=bared 1=vege 2=composition
- real (kind=kind_phys), intent(in ) :: fveg ! green vegetation fraction [0.0-1.0]
- real (kind=kind_phys), intent(in ) :: z0m ! z0 momentum (m)
- real (kind=kind_phys), intent(in ) :: z0mg ! z0 momentum, ground (m)
- real (kind=kind_phys), intent(in ) :: zlvl ! reference height [m]
- real (kind=kind_phys), intent(in ) :: zpd ! zero plane displacement (m)
- real (kind=kind_phys), intent(in ) :: ezpd ! zero plane displacement (m)
- real (kind=kind_phys), intent(in ) :: ustarx ! friction velocity (m/s)
- real (kind=kind_phys), intent(in ) :: vaie ! reference height [m]
- real (kind=kind_phys), intent(in ) :: ur ! wind speed [m/s]
- real (kind=kind_phys), intent(inout) :: csigmaf0 !
- real (kind=kind_phys), intent(inout) :: csigmaf1 !
- real (kind=kind_phys), intent(in ) :: aone !
- real (kind=kind_phys), intent(in ) :: cdmnv !
- real (kind=kind_phys), intent(in ) :: cdmng !
- real (kind=kind_phys), intent(out ) :: z0mt ! composited z0 momentum (m)
- real (kind=kind_phys), intent(out ) :: z0ht ! composited z0 momentum (m)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer , intent(in ) :: vegtyp !< vegetation type
+ integer , intent(in ) :: icom !< 0=bared 1=vege 2=composition
+ real (kind=kind_phys), intent(in ) :: fveg !< green vegetation fraction [0.0-1.0]
+ real (kind=kind_phys), intent(in ) :: z0m !< z0 momentum (m)
+ real (kind=kind_phys), intent(in ) :: z0mg !< z0 momentum, ground (m)
+ real (kind=kind_phys), intent(in ) :: zlvl !< reference height [m]
+ real (kind=kind_phys), intent(in ) :: zpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in ) :: ezpd !< zero plane displacement (m)
+ real (kind=kind_phys), intent(in ) :: ustarx !< friction velocity (m/s)
+ real (kind=kind_phys), intent(in ) :: vaie !< reference height [m]
+ real (kind=kind_phys), intent(in ) :: ur !< wind speed [m/s]
+ real (kind=kind_phys), intent(inout) :: csigmaf0 !<
+ real (kind=kind_phys), intent(inout) :: csigmaf1 !<
+ real (kind=kind_phys), intent(in ) :: aone !<
+ real (kind=kind_phys), intent(in ) :: cdmnv !<
+ real (kind=kind_phys), intent(in ) :: cdmng !<
+ real (kind=kind_phys), intent(out ) :: z0mt !< composited z0 momentum (m)
+ real (kind=kind_phys), intent(out ) :: z0ht !< composited z0 momentum (m)
! local
real (kind=kind_phys) :: czil1 ! canopy based czil
@@ -5523,14 +5530,14 @@ subroutine esat(t, esw, esi, desw, desi)
!---------------------------------------------------------------------------------------------------
! in
- real (kind=kind_phys), intent(in) :: t !temperature
+ real (kind=kind_phys), intent(in) :: t !< temperature
!out
- real (kind=kind_phys), intent(out) :: esw !saturation vapor pressure over water (pa)
- real (kind=kind_phys), intent(out) :: esi !saturation vapor pressure over ice (pa)
- real (kind=kind_phys), intent(out) :: desw !d(esat)/dt over water (pa/k)
- real (kind=kind_phys), intent(out) :: desi !d(esat)/dt over ice (pa/k)
+ real (kind=kind_phys), intent(out) :: esw !< saturation vapor pressure over water (pa)
+ real (kind=kind_phys), intent(out) :: esi !< saturation vapor pressure over ice (pa)
+ real (kind=kind_phys), intent(out) :: desw !< d(esat)/dt over water (pa/k)
+ real (kind=kind_phys), intent(out) :: desi !< d(esat)/dt over ice (pa/k)
! local
@@ -5569,6 +5576,7 @@ end subroutine esat
!== begin stomata ==================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine stomata (parameters,vegtyp ,mpe ,apar ,foln ,iloc , jloc, & !in
tv ,ei ,ea ,sfctmp ,sfcprs , & !in
o2 ,co2 ,igs ,btran ,rb , & !in
@@ -5577,29 +5585,29 @@ subroutine stomata (parameters,vegtyp ,mpe ,apar ,foln ,iloc , jlo
implicit none
! --------------------------------------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer,intent(in) :: iloc !grid index
- integer,intent(in) :: jloc !grid index
- integer,intent(in) :: vegtyp !vegetation physiology type
-
- real (kind=kind_phys), intent(in) :: igs !growing season index (0=off, 1=on)
- real (kind=kind_phys), intent(in) :: mpe !prevents division by zero errors
-
- real (kind=kind_phys), intent(in) :: tv !foliage temperature (k)
- real (kind=kind_phys), intent(in) :: ei !vapor pressure inside leaf (sat vapor press at tv) (pa)
- real (kind=kind_phys), intent(in) :: ea !vapor pressure of canopy air (pa)
- real (kind=kind_phys), intent(in) :: apar !par absorbed per unit lai (w/m2)
- real (kind=kind_phys), intent(in) :: o2 !atmospheric o2 concentration (pa)
- real (kind=kind_phys), intent(in) :: co2 !atmospheric co2 concentration (pa)
- real (kind=kind_phys), intent(in) :: sfcprs !air pressure at reference height (pa)
- real (kind=kind_phys), intent(in) :: sfctmp !air temperature at reference height (k)
- real (kind=kind_phys), intent(in) :: btran !soil water transpiration factor (0 to 1)
- real (kind=kind_phys), intent(in) :: foln !foliage nitrogen concentration (%)
- real (kind=kind_phys), intent(in) :: rb !boundary layer resistance (s/m)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer,intent(in) :: iloc !< grid index
+ integer,intent(in) :: jloc !< grid index
+ integer,intent(in) :: vegtyp !< vegetation physiology type
+
+ real (kind=kind_phys), intent(in) :: igs !< growing season index (0=off, 1=on)
+ real (kind=kind_phys), intent(in) :: mpe !< prevents division by zero errors
+
+ real (kind=kind_phys), intent(in) :: tv !< foliage temperature (k)
+ real (kind=kind_phys), intent(in) :: ei !< vapor pressure inside leaf (sat vapor press at tv) (pa)
+ real (kind=kind_phys), intent(in) :: ea !< vapor pressure of canopy air (pa)
+ real (kind=kind_phys), intent(in) :: apar !< par absorbed per unit lai (w/m2)
+ real (kind=kind_phys), intent(in) :: o2 !< atmospheric o2 concentration (pa)
+ real (kind=kind_phys), intent(in) :: co2 !< atmospheric co2 concentration (pa)
+ real (kind=kind_phys), intent(in) :: sfcprs !< air pressure at reference height (pa)
+ real (kind=kind_phys), intent(in) :: sfctmp !< air temperature at reference height (k)
+ real (kind=kind_phys), intent(in) :: btran !< soil water transpiration factor (0 to 1)
+ real (kind=kind_phys), intent(in) :: foln !< foliage nitrogen concentration (%)
+ real (kind=kind_phys), intent(in) :: rb !< boundary layer resistance (s/m)
! output
- real (kind=kind_phys), intent(out) :: rs !leaf stomatal resistance (s/m)
- real (kind=kind_phys), intent(out) :: psn !foliage photosynthesis (umol co2 /m2/ s) [always +]
+ real (kind=kind_phys), intent(out) :: rs !< leaf stomatal resistance (s/m)
+ real (kind=kind_phys), intent(out) :: psn !< foliage photosynthesis (umol co2 /m2/ s) [always +]
! in&out
real (kind=kind_phys) :: rlb !boundary layer resistance (s m2 / umol)
@@ -5726,19 +5734,19 @@ subroutine canres (parameters,par ,sfctmp,rcsoil ,eah ,sfcprs , & !in
! --------------------------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- real (kind=kind_phys), intent(in) :: par !par absorbed per unit sunlit lai (w/m2)
- real (kind=kind_phys), intent(in) :: sfctmp !canopy air temperature
- real (kind=kind_phys), intent(in) :: sfcprs !surface pressure (pa)
- real (kind=kind_phys), intent(in) :: eah !water vapor pressure (pa)
- real (kind=kind_phys), intent(in) :: rcsoil !soil moisture stress factor
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ real (kind=kind_phys), intent(in) :: par !< par absorbed per unit sunlit lai (w/m2)
+ real (kind=kind_phys), intent(in) :: sfctmp !< canopy air temperature
+ real (kind=kind_phys), intent(in) :: sfcprs !< surface pressure (pa)
+ real (kind=kind_phys), intent(in) :: eah !< water vapor pressure (pa)
+ real (kind=kind_phys), intent(in) :: rcsoil !< soil moisture stress factor
!outputs
- real (kind=kind_phys), intent(out) :: rc !canopy resistance per unit lai
- real (kind=kind_phys), intent(out) :: psn !foliage photosynthesis (umolco2/m2/s)
+ real (kind=kind_phys), intent(out) :: rc !< canopy resistance per unit lai
+ real (kind=kind_phys), intent(out) :: psn !< foliage photosynthesis (umolco2/m2/s)
!local
@@ -5792,6 +5800,7 @@ end subroutine canres
!== begin calhum ===================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine calhum(parameters,sfctmp, sfcprs, q2sat, dqsdt2)
implicit none
@@ -5846,29 +5855,29 @@ subroutine tsnosoi (parameters,ice ,nsoil ,nsnow ,isnow ,ist , & !
! --------------------------------------------------------------------------------------------------
!input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc
- integer, intent(in) :: jloc
- integer, intent(in) :: ice !
- integer, intent(in) :: nsoil !no of soil layers (4)
- integer, intent(in) :: nsnow !maximum no of snow layers (3)
- integer, intent(in) :: isnow !actual no of snow layers
- integer, intent(in) :: ist !surface type
-
- real (kind=kind_phys), intent(in) :: dt !time step (s)
- real (kind=kind_phys), intent(in) :: tbot !
- real (kind=kind_phys), intent(in) :: ssoil !ground heat flux (w/m2)
- real (kind=kind_phys), intent(in) :: sag !solar rad. absorbed by ground (w/m2)
- real (kind=kind_phys), intent(in) :: snowh !snow depth (m)
- real (kind=kind_phys), intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: zsnso !layer-bot. depth from snow surf.(m)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !snow/soil layer thickness (m)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !thermal conductivity
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !heat capacity (j/m3/k)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !<
+ integer, intent(in) :: jloc !<
+ integer, intent(in) :: ice !<
+ integer, intent(in) :: nsoil !< no of soil layers (4)
+ integer, intent(in) :: nsnow !< maximum no of snow layers (3)
+ integer, intent(in) :: isnow !< actual no of snow layers
+ integer, intent(in) :: ist !< surface type
+
+ real (kind=kind_phys), intent(in) :: dt !< time step (s)
+ real (kind=kind_phys), intent(in) :: tbot !<
+ real (kind=kind_phys), intent(in) :: ssoil !< ground heat flux (w/m2)
+ real (kind=kind_phys), intent(in) :: sag !< solar rad. absorbed by ground (w/m2)
+ real (kind=kind_phys), intent(in) :: snowh !< snow depth (m)
+ real (kind=kind_phys), intent(in) :: tg !< ground temperature (k)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: zsnso !< layer-bot. depth from snow surf.(m)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< snow/soil layer thickness (m)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !< thermal conductivity
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !< heat capacity (j/m3/k)
!input and output
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !<
#ifdef CCPP
character(len=*) , intent(inout) :: errmsg
integer , intent(inout) :: errflg
@@ -5982,28 +5991,28 @@ subroutine hrt (parameters,nsnow ,nsoil ,isnow ,zsnso , &
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: nsoil !no of soil layers (4)
- integer, intent(in) :: nsnow !maximum no of snow layers (3)
- integer, intent(in) :: isnow !actual no of snow layers
- real (kind=kind_phys), intent(in) :: tbot !bottom soil temp. at zbot (k)
- real (kind=kind_phys), intent(in) :: zbot !depth of lower boundary condition (m)
- !from soil surface not snow surface
- real (kind=kind_phys), intent(in) :: dt !time step (s)
- real (kind=kind_phys), intent(in) :: ssoil !ground heat flux (w/m2)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: zsnso !depth of layer-bottom of snow/soil (m)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !snow/soil temperature (k)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !thermal conductivity [w/m/k]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !heat capacity [j/m3/k]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: phi !light through water (w/m2)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: nsoil !< no of soil layers (4)
+ integer, intent(in) :: nsnow !< maximum no of snow layers (3)
+ integer, intent(in) :: isnow !, actual no of snow layers
+ real (kind=kind_phys), intent(in) :: tbot !< bottom soil temp. at zbot (k)
+ real (kind=kind_phys), intent(in) :: zbot !< depth of lower boundary condition (m)
+ !! from soil surface not snow surface
+ real (kind=kind_phys), intent(in) :: dt !< time step (s)
+ real (kind=kind_phys), intent(in) :: ssoil !< ground heat flux (w/m2)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: zsnso !< depth of layer-bottom of snow/soil (m)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !< snow/soil temperature (k)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: df !< thermal conductivity [w/m/k]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !< heat capacity [j/m3/k]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: phi !< light through water (w/m2)
! output
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: rhsts !right-hand side of the matrix
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: ai !left-hand side coefficient
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: bi !left-hand side coefficient
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: ci !left-hand side coefficient
- real (kind=kind_phys), intent(out) :: botflx !energy influx from soil bottom (w/m2)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: rhsts !< right-hand side of the matrix
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: ai !< left-hand side coefficient
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: bi !< left-hand side coefficient
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(out) :: ci !< left-hand side coefficient
+ real (kind=kind_phys), intent(out) :: botflx !< energy influx from soil bottom (w/m2)
! local
@@ -6129,6 +6138,7 @@ end subroutine hstep
!== begin rosr12 ===================================================================================
!>\ingroup NoahMP_LSM
+!! solve the tri-diagonal matrix equation
subroutine rosr12 (p,a,b,c,d,delta,ntop,nsoil,nsnow)
! ----------------------------------------------------------------------
! subroutine rosr12
@@ -6208,32 +6218,32 @@ subroutine phasechange (parameters,nsnow ,nsoil ,isnow ,dt ,fact ,
! ----------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsnow !maximum no. of snow layers [=3]
- integer, intent(in) :: nsoil !no. of soil layers [=4]
- integer, intent(in) :: isnow !actual no. of snow layers [<=3]
- integer, intent(in) :: ist !surface type: 1->soil; 2->lake
- real (kind=kind_phys), intent(in) :: dt !land model time step (sec)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: fact !temporary
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !snow/soil layer thickness [m]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !heat capacity (j/m3/k)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsnow !< maximum no. of snow layers [=3]
+ integer, intent(in) :: nsoil !< no. of soil layers [=4]
+ integer, intent(in) :: isnow !< actual no. of snow layers [<=3]
+ integer, intent(in) :: ist !< surface type: 1->soil; 2->lake
+ real (kind=kind_phys), intent(in) :: dt !< land model time step (sec)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: fact !< temporary
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< snow/soil layer thickness [m]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: hcpct !< heat capacity (j/m3/k)
! outputs
integer, dimension(-nsnow+1:nsoil), intent(out) :: imelt !phase change index
- real (kind=kind_phys), intent(out) :: qmelt !snowmelt rate [mm/s]
- real (kind=kind_phys), intent(out) :: ponding!snowmelt when snow has no layer [mm]
+ real (kind=kind_phys), intent(out) :: qmelt !< snowmelt rate [mm/s]
+ real (kind=kind_phys), intent(out) :: ponding!< snowmelt when snow has no layer [mm]
! inputs and outputs
- real (kind=kind_phys), intent(inout) :: sneqv
- real (kind=kind_phys), intent(inout) :: snowh
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow/soil layer temperature [k]
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !soil liquid water [m3/m3]
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: smc !total soil water [m3/m3]
- real (kind=kind_phys), dimension(-nsnow+1:0) , intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1:0) , intent(inout) :: snliq !snow layer liquid water [mm]
+ real (kind=kind_phys), intent(inout) :: sneqv !<
+ real (kind=kind_phys), intent(inout) :: snowh !<
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow/soil layer temperature [k]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !< soil liquid water [m3/m3]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: smc !< total soil water [m3/m3]
+ real (kind=kind_phys), dimension(-nsnow+1:0) , intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1:0) , intent(inout) :: snliq !< snow layer liquid water [mm]
#ifdef CCPP
character(len=*) , intent(inout) :: errmsg
integer , intent(inout) :: errflg
@@ -6581,6 +6591,7 @@ end subroutine frh2o
!== begin water ====================================================================================
!>\ingroup NoahMP_LSM
+!! compute water budgets (water storages, et components, and runoff)
subroutine water (parameters,vegtyp ,nsnow ,nsoil ,imelt ,dt ,uu , & !in
vv ,fcev ,fctr ,qprecc ,qprecl ,elai , & !in
esai ,sfctmp ,qvap ,qdew ,zsoil ,btrani , & !in
@@ -6601,83 +6612,83 @@ subroutine water (parameters,vegtyp ,nsnow ,nsoil ,imelt ,dt ,uu , &
implicit none
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: vegtyp !vegetation type
- integer, intent(in) :: nsnow !maximum no. of snow layers
- integer , intent(in) :: ist !surface type 1-soil; 2-lake
- integer, intent(in) :: nsoil !no. of soil layers
- integer, dimension(-nsnow+1:0) , intent(in) :: imelt !melting state index [1-melt; 2-freeze]
- real (kind=kind_phys), intent(in) :: dt !main time step (s)
- real (kind=kind_phys), intent(in) :: uu !u-direction wind speed [m/s]
- real (kind=kind_phys), intent(in) :: vv !v-direction wind speed [m/s]
- real (kind=kind_phys), intent(in) :: fcev !canopy evaporation (w/m2) [+ to atm ]
- real (kind=kind_phys), intent(in) :: fctr !transpiration (w/m2) [+ to atm]
- real (kind=kind_phys), intent(in) :: qprecc !convective precipitation (mm/s)
- real (kind=kind_phys), intent(in) :: qprecl !large-scale precipitation (mm/s)
- real (kind=kind_phys), intent(in) :: elai !leaf area index, after burying by snow
- real (kind=kind_phys), intent(in) :: esai !stem area index, after burying by snow
- real (kind=kind_phys), intent(in) :: sfctmp !surface air temperature [k]
- real (kind=kind_phys), intent(in) :: qvap !soil surface evaporation rate[mm/s]
- real (kind=kind_phys), intent(in) :: qdew !soil surface dew rate[mm/s]
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !depth of layer-bottom from soil surface
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: btrani !soil water stress factor (0 to 1)
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: ficeold !ice fraction at last timestep
-! real (kind=kind_phys) , intent(in) :: ponding ![mm]
- real (kind=kind_phys) , intent(in) :: tg !ground temperature (k)
- real (kind=kind_phys) , intent(in) :: fveg !greeness vegetation fraction (-)
- real (kind=kind_phys) , intent(in) :: bdfall !bulk density of snowfall (kg/m3) ! mb/an: v3.7
- real (kind=kind_phys) , intent(in) :: fp !fraction of the gridcell that receives precipitation ! mb/an: v3.7
- real (kind=kind_phys) , intent(in) :: rain !rainfall (mm/s) ! mb/an: v3.7
- real (kind=kind_phys) , intent(in) :: snow !snowfall (mm/s) ! mb/an: v3.7
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: smceq !equilibrium soil water content [m3/m3] (used in m-m&f groundwater dynamics)
- real (kind=kind_phys) , intent(in) :: qsnow !snow at ground srf (mm/s) [+]
- real (kind=kind_phys) , intent(in) :: qrain !rain at ground srf (mm) [+]
- real (kind=kind_phys) , intent(in) :: snowhin !snow depth increasing rate (m/s)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: vegtyp !< vegetation type
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ integer , intent(in) :: ist !< surface type 1-soil; 2-lake
+ integer, intent(in) :: nsoil !< no. of soil layers
+ integer, dimension(-nsnow+1:0) , intent(in) :: imelt !< melting state index [1-melt; 2-freeze]
+ real (kind=kind_phys), intent(in) :: dt !< main time step (s)
+ real (kind=kind_phys), intent(in) :: uu !< u-direction wind speed [m/s]
+ real (kind=kind_phys), intent(in) :: vv !< v-direction wind speed [m/s]
+ real (kind=kind_phys), intent(in) :: fcev !\ingroup NoahMP_LSM
+!!
subroutine snowwater (parameters,nsnow ,nsoil ,imelt ,dt ,zsoil , & !in
sfctmp ,snowhin,qsnow ,qsnfro ,qsnsub , & !in
qrain ,ficeold,iloc ,jloc , & !in
@@ -6957,39 +6969,39 @@ subroutine snowwater (parameters,nsnow ,nsoil ,imelt ,dt ,zsoil , & !in
implicit none
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsnow !maximum no. of snow layers
- integer, intent(in) :: nsoil !no. of soil layers
- integer, dimension(-nsnow+1:0) , intent(in) :: imelt !melting state index [0-no melt;1-melt]
- real (kind=kind_phys), intent(in) :: dt !time step (s)
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !depth of layer-bottom from soil surface
- real (kind=kind_phys), intent(in) :: sfctmp !surface air temperature [k]
- real (kind=kind_phys), intent(in) :: snowhin!snow depth increasing rate (m/s)
- real (kind=kind_phys), intent(in) :: qsnow !snow at ground srf (mm/s) [+]
- real (kind=kind_phys), intent(in) :: qsnfro !snow surface frost rate[mm/s]
- real (kind=kind_phys), intent(in) :: qsnsub !snow surface sublimation rate[mm/s]
- real (kind=kind_phys), intent(in) :: qrain !snow surface rain rate[mm/s]
- real (kind=kind_phys), dimension(-nsnow+1:0) , intent(in) :: ficeold!ice fraction at last timestep
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ integer, intent(in) :: nsoil !< no. of soil layers
+ integer, dimension(-nsnow+1:0) , intent(in) :: imelt !< melting state index [0-no melt;1-melt]
+ real (kind=kind_phys), intent(in) :: dt !< time step (s)
+ real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !< depth of layer-bottom from soil surface
+ real (kind=kind_phys), intent(in) :: sfctmp !< surface air temperature [k]
+ real (kind=kind_phys), intent(in) :: snowhin!< snow depth increasing rate (m/s)
+ real (kind=kind_phys), intent(in) :: qsnow !< snow at ground srf (mm/s) [+]
+ real (kind=kind_phys), intent(in) :: qsnfro !< snow surface frost rate[mm/s]
+ real (kind=kind_phys), intent(in) :: qsnsub !< snow surface sublimation rate[mm/s]
+ real (kind=kind_phys), intent(in) :: qrain !< snow surface rain rate[mm/s]
+ real (kind=kind_phys), dimension(-nsnow+1:0) , intent(in) :: ficeold!< ice fraction at last timestep
! input & output
- integer, intent(inout) :: isnow !actual no. of snow layers
- real (kind=kind_phys), intent(inout) :: snowh !snow height [m]
- real (kind=kind_phys), intent(inout) :: sneqv !snow water eqv. [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !snow layer liquid water [mm]
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !soil liquid moisture (m3/m3)
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !soil ice moisture (m3/m3)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow layer temperature [k]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: zsnso !depth of snow/soil layer-bottom
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !snow/soil layer thickness [m]
+ integer, intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), intent(inout) :: snowh !< snow height [m]
+ real (kind=kind_phys), intent(inout) :: sneqv !< snow water eqv. [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !< snow layer liquid water [mm]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !< soil liquid moisture (m3/m3)
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !< soil ice moisture (m3/m3)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow layer temperature [k]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: zsnso !< depth of snow/soil layer-bottom
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !< snow/soil layer thickness [m]
! output
- real (kind=kind_phys), intent(out) :: qsnbot !melting water out of snow bottom [mm/s]
- real (kind=kind_phys), intent(out) :: snoflow!glacier flow [mm]
- real (kind=kind_phys), intent(out) :: ponding1
- real (kind=kind_phys), intent(out) :: ponding2
+ real (kind=kind_phys), intent(out) :: qsnbot !< melting water out of snow bottom [mm/s]
+ real (kind=kind_phys), intent(out) :: snoflow!< glacier flow [mm]
+ real (kind=kind_phys), intent(out) :: ponding1 !<
+ real (kind=kind_phys), intent(out) :: ponding2 !<
! local
integer :: iz,i
@@ -7097,25 +7109,25 @@ subroutine snowfall (parameters,nsoil ,nsnow ,dt ,qsnow ,snowhin , & !in
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsoil !no. of soil layers
- integer, intent(in) :: nsnow !maximum no. of snow layers
- real (kind=kind_phys), intent(in) :: dt !main time step (s)
- real (kind=kind_phys), intent(in) :: qsnow !snow at ground srf (mm/s) [+]
- real (kind=kind_phys), intent(in) :: snowhin!snow depth increasing rate (m/s)
- real (kind=kind_phys), intent(in) :: sfctmp !surface air temperature [k]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsoil !< no. of soil layers
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ real (kind=kind_phys), intent(in) :: dt !< main time step (s)
+ real (kind=kind_phys), intent(in) :: qsnow !< snow at ground srf (mm/s) [+]
+ real (kind=kind_phys), intent(in) :: snowhin!< snow depth increasing rate (m/s)
+ real (kind=kind_phys), intent(in) :: sfctmp !< surface air temperature [k]
! input and output
- integer, intent(inout) :: isnow !actual no. of snow layers
- real (kind=kind_phys), intent(inout) :: snowh !snow depth [m]
- real (kind=kind_phys), intent(inout) :: sneqv !swow water equivalent [m]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !thickness of snow/soil layers (m)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow layer temperature [k]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !snow layer liquid water [mm]
+ integer, intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), intent(inout) :: snowh !< snow depth [m]
+ real (kind=kind_phys), intent(inout) :: sneqv !< swow water equivalent [m]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !< thickness of snow/soil layers (m)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow layer temperature [k]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !< snow layer liquid water [mm]
! local
@@ -7156,6 +7168,7 @@ end subroutine snowfall
!== begin combine ==================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine combine (parameters,nsnow ,nsoil ,iloc ,jloc , & !in
isnow ,sh2o ,stc ,snice ,snliq , & !inout
dzsnso ,sice ,snowh ,sneqv , & !inout
@@ -7165,25 +7178,25 @@ subroutine combine (parameters,nsnow ,nsoil ,iloc ,jloc , & !in
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc
- integer, intent(in) :: jloc
- integer, intent(in) :: nsnow !maximum no. of snow layers
- integer, intent(in) :: nsoil !no. of soil layers
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !<
+ integer, intent(in) :: jloc !<
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ integer, intent(in) :: nsoil !< no. of soil layers
! input and output
- integer, intent(inout) :: isnow !actual no. of snow layers
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !soil liquid moisture (m3/m3)
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !soil ice moisture (m3/m3)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow layer temperature [k]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !snow layer liquid water [mm]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso!snow layer depth [m]
- real (kind=kind_phys), intent(inout) :: sneqv !snow water equivalent [m]
- real (kind=kind_phys), intent(inout) :: snowh !snow depth [m]
- real (kind=kind_phys), intent(out) :: ponding1
- real (kind=kind_phys), intent(out) :: ponding2
+ integer, intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !< soil liquid moisture (m3/m3)
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !< soil ice moisture (m3/m3)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow layer temperature [k]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !< snow layer liquid water [mm]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso!< snow layer depth [m]
+ real (kind=kind_phys), intent(inout) :: sneqv !< snow water equivalent [m]
+ real (kind=kind_phys), intent(inout) :: snowh !< snow depth [m]
+ real (kind=kind_phys), intent(out) :: ponding1 !<
+ real (kind=kind_phys), intent(out) :: ponding2 !<
! local variables:
@@ -7345,6 +7358,7 @@ end subroutine combine
!== begin divide ===================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine divide (parameters,nsnow ,nsoil , & !in
isnow ,stc ,snice ,snliq ,dzsnso ) !inout
! ----------------------------------------------------------------------
@@ -7352,17 +7366,17 @@ subroutine divide (parameters,nsnow ,nsoil , & !in
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: nsnow !maximum no. of snow layers [ =3]
- integer, intent(in) :: nsoil !no. of soil layers [ =4]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: nsnow !< maximum no. of snow layers [ =3]
+ integer, intent(in) :: nsoil !< no. of soil layers [ =4]
! input and output
- integer , intent(inout) :: isnow !actual no. of snow layers
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow layer temperature [k]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !snow layer liquid water [mm]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso!snow layer depth [m]
+ integer , intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow layer temperature [k]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(inout) :: snliq !< snow layer liquid water [mm]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso!< snow layer depth [m]
! local variables:
@@ -7474,6 +7488,7 @@ end subroutine divide
!== begin combo ====================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine combo(parameters,dz, wliq, wice, t, dz2, wliq2, wice2, t2)
! ----------------------------------------------------------------------
implicit none
@@ -7482,15 +7497,15 @@ subroutine combo(parameters,dz, wliq, wice, t, dz2, wliq2, wice2, t2)
! ----------------------------------------------------------------------s
! input
- type (noahmp_parameters), intent(in) :: parameters
- real (kind=kind_phys), intent(in) :: dz2 !nodal thickness of 2 elements being combined [m]
- real (kind=kind_phys), intent(in) :: wliq2 !liquid water of element 2 [kg/m2]
- real (kind=kind_phys), intent(in) :: wice2 !ice of element 2 [kg/m2]
- real (kind=kind_phys), intent(in) :: t2 !nodal temperature of element 2 [k]
- real (kind=kind_phys), intent(inout) :: dz !nodal thickness of 1 elements being combined [m]
- real (kind=kind_phys), intent(inout) :: wliq !liquid water of element 1
- real (kind=kind_phys), intent(inout) :: wice !ice of element 1 [kg/m2]
- real (kind=kind_phys), intent(inout) :: t !node temperature of element 1 [k]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ real (kind=kind_phys), intent(in) :: dz2 !< nodal thickness of 2 elements being combined [m]
+ real (kind=kind_phys), intent(in) :: wliq2 !< liquid water of element 2 [kg/m2]
+ real (kind=kind_phys), intent(in) :: wice2 !< ice of element 2 [kg/m2]
+ real (kind=kind_phys), intent(in) :: t2 !< nodal temperature of element 2 [k]
+ real (kind=kind_phys), intent(inout) :: dz !< nodal thickness of 1 elements being combined [m]
+ real (kind=kind_phys), intent(inout) :: wliq !< liquid water of element 1
+ real (kind=kind_phys), intent(inout) :: wice !< ice of element 1 [kg/m2]
+ real (kind=kind_phys), intent(inout) :: t !< node temperature of element 1 [k]
! local
@@ -7529,6 +7544,7 @@ end subroutine combo
!== begin compact ==================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine compact (parameters,nsnow ,nsoil ,dt ,stc ,snice , & !in
snliq ,zsoil ,imelt ,ficeold,iloc , jloc , & !in
isnow ,dzsnso ,zsnso ) !inout
@@ -7536,23 +7552,23 @@ subroutine compact (parameters,nsnow ,nsoil ,dt ,stc ,snice , & !in
implicit none
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsoil !no. of soil layers [ =4]
- integer, intent(in) :: nsnow !maximum no. of snow layers [ =3]
- integer, dimension(-nsnow+1:0) , intent(in) :: imelt !melting state index [0-no melt;1-melt]
- real (kind=kind_phys), intent(in) :: dt !time step (sec)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !snow layer temperature [k]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: snliq !snow layer liquid water [mm]
- real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !depth of layer-bottom from soil srf
- real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: ficeold!ice fraction at last timestep
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsoil !< no. of soil layers [ =4]
+ integer, intent(in) :: nsnow !< maximum no. of snow layers [ =3]
+ integer, dimension(-nsnow+1:0) , intent(in) :: imelt !< melting state index [0-no melt;1-melt]
+ real (kind=kind_phys), intent(in) :: dt !< time step (sec)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: stc !< snow layer temperature [k]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: snliq !< snow layer liquid water [mm]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(in) :: zsoil !< depth of layer-bottom from soil srf
+ real (kind=kind_phys), dimension(-nsnow+1: 0), intent(in) :: ficeold!< ice fraction at last timestep
! input and output
- integer, intent(inout) :: isnow ! actual no. of snow layers
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso ! snow layer thickness [m]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: zsnso ! depth of snow/soil layer-bottom
+ integer, intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !< snow layer thickness [m]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: zsnso !< depth of snow/soil layer-bottom
! local
real (kind=kind_phys), parameter :: c2 = 21.e-3 ![m3/kg] ! default 21.e-3
@@ -7651,31 +7667,31 @@ subroutine snowh2o (parameters,nsnow ,nsoil ,dt ,qsnfro ,qsnsub , & !in
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsnow !maximum no. of snow layers[=3]
- integer, intent(in) :: nsoil !no. of soil layers[=4]
- real (kind=kind_phys), intent(in) :: dt !time step
- real (kind=kind_phys), intent(in) :: qsnfro !snow surface frost rate[mm/s]
- real (kind=kind_phys), intent(in) :: qsnsub !snow surface sublimation rate[mm/s]
- real (kind=kind_phys), intent(in) :: qrain !snow surface rain rate[mm/s]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsnow !< maximum no. of snow layers[=3]
+ integer, intent(in) :: nsoil !< no. of soil layers[=4]
+ real (kind=kind_phys), intent(in) :: dt !< time step
+ real (kind=kind_phys), intent(in) :: qsnfro !< snow surface frost rate[mm/s]
+ real (kind=kind_phys), intent(in) :: qsnsub !< snow surface sublimation rate[mm/s]
+ real (kind=kind_phys), intent(in) :: qrain !< snow surface rain rate[mm/s]
! output
- real (kind=kind_phys), intent(out) :: qsnbot !melting water out of snow bottom [mm/s]
+ real (kind=kind_phys), intent(out) :: qsnbot !< melting water out of snow bottom [mm/s]
! input and output
- integer, intent(inout) :: isnow !actual no. of snow layers
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso ! snow layer depth [m]
- real (kind=kind_phys), intent(inout) :: snowh !snow height [m]
- real (kind=kind_phys), intent(inout) :: sneqv !snow water eqv. [mm]
- real (kind=kind_phys), dimension(-nsnow+1:0), intent(inout) :: snice !snow layer ice [mm]
- real (kind=kind_phys), dimension(-nsnow+1:0), intent(inout) :: snliq !snow layer liquid water [mm]
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !soil liquid moisture (m3/m3)
- real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !soil ice moisture (m3/m3)
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !snow layer temperature [k]
+ integer, intent(inout) :: isnow !< actual no. of snow layers
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: dzsnso !< snow layer depth [m]
+ real (kind=kind_phys), intent(inout) :: snowh !< snow height [m]
+ real (kind=kind_phys), intent(inout) :: sneqv !< snow water eqv. [mm]
+ real (kind=kind_phys), dimension(-nsnow+1:0), intent(inout) :: snice !< snow layer ice [mm]
+ real (kind=kind_phys), dimension(-nsnow+1:0), intent(inout) :: snliq !< snow layer liquid water [mm]
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sh2o !< soil liquid moisture (m3/m3)
+ real (kind=kind_phys), dimension( 1:nsoil), intent(inout) :: sice !< soil ice moisture (m3/m3)
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(inout) :: stc !< snow layer temperature [k]
! local variables:
@@ -7802,34 +7818,34 @@ subroutine soilwater (parameters,nsoil ,nsnow ,dt ,zsoil ,dzsnso , & !in
implicit none
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: iloc !grid index
- integer, intent(in) :: jloc !grid index
- integer, intent(in) :: nsoil !no. of soil layers
- integer, intent(in) :: nsnow !maximum no. of snow layers
- real (kind=kind_phys), intent(in) :: dt !time step (sec)
- real (kind=kind_phys), intent(in) :: qinsur !water input on soil surface [mm/s]
- real (kind=kind_phys), intent(in) :: qseva !evap from soil surface [mm/s]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !depth of soil layer-bottom [m]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: etrani !evapotranspiration from soil layers [mm/s]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !snow/soil layer depth [m]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sice !soil ice content [m3/m3]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: iloc !< grid index
+ integer, intent(in) :: jloc !< grid index
+ integer, intent(in) :: nsoil !< no. of soil layers
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ real (kind=kind_phys), intent(in) :: dt !< time step (sec)
+ real (kind=kind_phys), intent(in) :: qinsur !< water input on soil surface [mm/s]
+ real (kind=kind_phys), intent(in) :: qseva !< evap from soil surface [mm/s]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !< depth of soil layer-bottom [m]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: etrani !< evapotranspiration from soil layers [mm/s]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< snow/soil layer depth [m]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sice !< soil ice content [m3/m3]
integer, intent(in) :: vegtyp
! input & output
- real (kind=kind_phys), dimension(1:nsoil), intent(inout) :: sh2o !soil liquid water content [m3/m3]
- real (kind=kind_phys), dimension(1:nsoil), intent(inout) :: smc !total soil water content [m3/m3]
- real (kind=kind_phys), intent(inout) :: zwt !water table depth [m]
- real (kind=kind_phys), intent(inout) :: smcwtd !soil moisture between bottom of the soil and the water table [m3/m3]
- real (kind=kind_phys) , intent(inout) :: deeprech
+ real (kind=kind_phys), dimension(1:nsoil), intent(inout) :: sh2o !< soil liquid water content [m3/m3]
+ real (kind=kind_phys), dimension(1:nsoil), intent(inout) :: smc !< total soil water content [m3/m3]
+ real (kind=kind_phys), intent(inout) :: zwt !< water table depth [m]
+ real (kind=kind_phys), intent(inout) :: smcwtd !< soil moisture between bottom of the soil and the water table [m3/m3]
+ real (kind=kind_phys) , intent(inout) :: deeprech !<
! output
- real (kind=kind_phys), intent(out) :: qdrain !soil-bottom free drainage [mm/s]
- real (kind=kind_phys), intent(out) :: runsrf !surface runoff [mm/s]
- real (kind=kind_phys), intent(out) :: runsub !subsurface runoff [mm/s]
- real (kind=kind_phys), intent(out) :: fcrmax !maximum of fcr (-)
- real (kind=kind_phys), dimension(1:nsoil), intent(out) :: wcnd !hydraulic conductivity (m/s)
+ real (kind=kind_phys), intent(out) :: qdrain !< soil-bottom free drainage [mm/s]
+ real (kind=kind_phys), intent(out) :: runsrf !< surface runoff [mm/s]
+ real (kind=kind_phys), intent(out) :: runsub !< subsurface runoff [mm/s]
+ real (kind=kind_phys), intent(out) :: fcrmax !< maximum of fcr (-)
+ real (kind=kind_phys), dimension(1:nsoil), intent(out) :: wcnd !< hydraulic conductivity (m/s)
! local
integer :: k,iz !do-loop index
@@ -8071,16 +8087,16 @@ subroutine zwteq (parameters,nsoil ,nsnow ,zsoil ,dzsnso ,sh2o ,zwt)
! ----------------------------------------------------------------------
! input
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: nsoil !no. of soil layers
- integer, intent(in) :: nsnow !maximum no. of snow layers
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !depth of soil layer-bottom [m]
- real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !snow/soil layer depth [m]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sh2o !soil liquid water content [m3/m3]
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: nsoil !< no. of soil layers
+ integer, intent(in) :: nsnow !< maximum no. of snow layers
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !< depth of soil layer-bottom [m]
+ real (kind=kind_phys), dimension(-nsnow+1:nsoil), intent(in) :: dzsnso !< snow/soil layer depth [m]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sh2o !< soil liquid water content [m3/m3]
! output
- real (kind=kind_phys), intent(out) :: zwt !water table depth [m]
+ real (kind=kind_phys), intent(out) :: zwt !< water table depth [m]
! locals
@@ -8130,18 +8146,18 @@ subroutine infil (parameters,nsoil ,dt ,zsoil ,sh2o ,sice , & !in
implicit none
! --------------------------------------------------------------------------------
! inputs
- type (noahmp_parameters), intent(in) :: parameters
- integer, intent(in) :: nsoil !no. of soil layers
- real (kind=kind_phys), intent(in) :: dt !time step (sec)
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !depth of soil layer-bottom [m]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sh2o !soil liquid water content [m3/m3]
- real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sice !soil ice content [m3/m3]
- real (kind=kind_phys), intent(in) :: qinsur !water input on soil surface [mm/s]
- real (kind=kind_phys), intent(in) :: sicemax!maximum soil ice content (m3/m3)
+ type (noahmp_parameters), intent(in) :: parameters !<
+ integer, intent(in) :: nsoil !< no. of soil layers
+ real (kind=kind_phys), intent(in) :: dt !< time step (sec)
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: zsoil !< depth of soil layer-bottom [m]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sh2o !< soil liquid water content [m3/m3]
+ real (kind=kind_phys), dimension(1:nsoil), intent(in) :: sice !< soil ice content [m3/m3]
+ real (kind=kind_phys), intent(in) :: qinsur !< water input on soil surface [mm/s]
+ real (kind=kind_phys), intent(in) :: sicemax!< maximum soil ice content (m3/m3)
! outputs
- real (kind=kind_phys), intent(out) :: runsrf !surface runoff [mm/s]
- real (kind=kind_phys), intent(out) :: pddum !infiltration rate at surface
+ real (kind=kind_phys), intent(out) :: runsrf !< surface runoff [mm/s]
+ real (kind=kind_phys), intent(out) :: pddum !< infiltration rate at surface
! locals
integer :: ialp1, j, jj, k
@@ -8575,6 +8591,7 @@ end subroutine wdfcnd2
!== begin groundwater ==============================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine groundwater(parameters,nsnow ,nsoil ,dt ,sice ,zsoil , & !in
stc ,wcnd ,fcrmax ,iloc ,jloc , & !in
sh2o ,zwt ,wa ,wt , & !inout
@@ -8912,6 +8929,7 @@ end subroutine shallowwatertable
!== begin carbon ===================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine carbon (parameters,nsnow ,nsoil ,vegtyp ,dt ,zsoil , & !in
dzsnso ,stc ,smc ,tv ,tg ,psn , & !in
foln ,btran ,apar ,fveg ,igs , & !in
@@ -9703,6 +9721,7 @@ end subroutine co2flux_crop
!== begin growing_gdd ==============================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine growing_gdd (parameters, & !in
t2m , dt, julian, & !in
gdd , & !inout
@@ -9712,19 +9731,19 @@ subroutine growing_gdd (parameters, & !in
! input
type (noahmp_parameters), intent(in) :: parameters
- real (kind=kind_phys) , intent(in) :: t2m !air temperature
- real (kind=kind_phys) , intent(in) :: dt !time step (s)
- real (kind=kind_phys) , intent(in) :: julian !julian day of year (fractional) ( 0 <= julian < yearlen )
+ real (kind=kind_phys) , intent(in) :: t2m !< air temperature
+ real (kind=kind_phys) , intent(in) :: dt !< time step (s)
+ real (kind=kind_phys) , intent(in) :: julian !< julian day of year (fractional) ( 0 <= julian < yearlen )
! input and output
- real (kind=kind_phys) , intent(inout) :: gdd !growing degress days
+ real (kind=kind_phys) , intent(inout) :: gdd !< growing degress days
! output
- integer , intent(out) :: ipa !planting index index(0=off, 1=on)
- integer , intent(out) :: iha !havestindex(0=on,1=off)
- integer , intent(out) :: pgs !plant growth stage(1=s1,2=s2,3=s3)
+ integer , intent(out) :: ipa !< planting index index(0=off, 1=on)
+ integer , intent(out) :: iha !< havestindex(0=on,1=off)
+ integer , intent(out) :: pgs !< plant growth stage(1=s1,2=s2,3=s3)
!local
@@ -9800,6 +9819,7 @@ end subroutine growing_gdd
!== begin psn_crop =================================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine psn_crop ( parameters, & !in
soldn, xlai,t2m, & !in
psncrop ) !out
@@ -9808,10 +9828,10 @@ subroutine psn_crop ( parameters, & !in
! input
type (noahmp_parameters), intent(in) :: parameters
- real (kind=kind_phys) , intent(in) :: soldn ! downward solar radiation
- real (kind=kind_phys) , intent(in) :: xlai ! lai
- real (kind=kind_phys) , intent(in) :: t2m ! air temp
- real (kind=kind_phys) , intent(out) :: psncrop !
+ real (kind=kind_phys) , intent(in) :: soldn !< downward solar radiation
+ real (kind=kind_phys) , intent(in) :: xlai !< lai
+ real (kind=kind_phys) , intent(in) :: t2m !< air temp
+ real (kind=kind_phys) , intent(out) :: psncrop !<
!local
@@ -9980,31 +10000,32 @@ end subroutine psn_crop
!== begin noahmp_options ===========================================================================
!>\ingroup NoahMP_LSM
+!!
subroutine noahmp_options(idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc ,iopt_frz , &
iopt_inf ,iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot, iopt_stc, &
iopt_rsf , iopt_soil, iopt_pedo, iopt_crop ,iopt_trs )
implicit none
- integer, intent(in) :: idveg !dynamic vegetation (1 -> off ; 2 -> on) with opt_crs = 1
- integer, intent(in) :: iopt_crs !canopy stomatal resistance (1-> ball-berry; 2->jarvis)
- integer, intent(in) :: iopt_btr !soil moisture factor for stomatal resistance (1-> noah; 2-> clm; 3-> ssib)
- integer, intent(in) :: iopt_run !runoff and groundwater (1->simgm; 2->simtop; 3->schaake96; 4->bats)
- integer, intent(in) :: iopt_sfc !surface layer drag coeff (ch & cm) (1->m-o; 2->chen97)
- integer, intent(in) :: iopt_frz !supercooled liquid water (1-> ny06; 2->koren99)
- integer, intent(in) :: iopt_inf !frozen soil permeability (1-> ny06; 2->koren99)
- integer, intent(in) :: iopt_rad !radiation transfer (1->gap=f(3d,cosz); 2->gap=0; 3->gap=1-fveg)
- integer, intent(in) :: iopt_alb !snow surface albedo (1->bats; 2->class)
- integer, intent(in) :: iopt_snf !rainfall & snowfall (1-jordan91; 2->bats; 3->noah)
- integer, intent(in) :: iopt_tbot !lower boundary of soil temperature (1->zero-flux; 2->noah)
-
- integer, intent(in) :: iopt_stc !snow/soil temperature time scheme (only layer 1)
- ! 1 -> semi-implicit; 2 -> full implicit (original noah)
- integer, intent(in) :: iopt_rsf !surface resistance (1->sakaguchi/zeng; 2->seller; 3->mod sellers; 4->1+snow)
- integer, intent(in) :: iopt_soil !soil parameters set-up option
- integer, intent(in) :: iopt_pedo !pedo-transfer function (1->saxton and rawls)
- integer, intent(in) :: iopt_crop !crop model option (0->none; 1->liu et al.)
- integer, intent(in) :: iopt_trs !thermal roughness scheme option (1->z0h=z0; 2->rb reversed)
+ integer, intent(in) :: idveg !< dynamic vegetation (1 -> off ; 2 -> on) with opt_crs = 1
+ integer, intent(in) :: iopt_crs !< canopy stomatal resistance (1-> ball-berry; 2->jarvis)
+ integer, intent(in) :: iopt_btr !< soil moisture factor for stomatal resistance (1-> noah; 2-> clm; 3-> ssib)
+ integer, intent(in) :: iopt_run !< runoff and groundwater (1->simgm; 2->simtop; 3->schaake96; 4->bats)
+ integer, intent(in) :: iopt_sfc !< surface layer drag coeff (ch & cm) (1->m-o; 2->chen97)
+ integer, intent(in) :: iopt_frz !< supercooled liquid water (1-> ny06; 2->koren99)
+ integer, intent(in) :: iopt_inf !< frozen soil permeability (1-> ny06; 2->koren99)
+ integer, intent(in) :: iopt_rad !< radiation transfer (1->gap=f(3d,cosz); 2->gap=0; 3->gap=1-fveg)
+ integer, intent(in) :: iopt_alb !< snow surface albedo (1->bats; 2->class)
+ integer, intent(in) :: iopt_snf !< rainfall & snowfall (1-jordan91; 2->bats; 3->noah)
+ integer, intent(in) :: iopt_tbot !< lower boundary of soil temperature (1->zero-flux; 2->noah)
+
+ integer, intent(in) :: iopt_stc !< snow/soil temperature time scheme (only layer 1)
+ !! 1 -> semi-implicit; 2 -> full implicit (original noah)
+ integer, intent(in) :: iopt_rsf !< surface resistance (1->sakaguchi/zeng; 2->seller; 3->mod sellers; 4->1+snow)
+ integer, intent(in) :: iopt_soil !< soil parameters set-up option
+ integer, intent(in) :: iopt_pedo !< pedo-transfer function (1->saxton and rawls)
+ integer, intent(in) :: iopt_crop !< crop model option (0->none; 1->liu et al.)
+ integer, intent(in) :: iopt_trs !< thermal roughness scheme option (1->z0h=z0; 2->rb reversed)
! -------------------------------------------------------------------------------------------------
@@ -10029,6 +10050,8 @@ subroutine noahmp_options(idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc
end subroutine noahmp_options
+!>\ingroup NoahMP_LSM
+!!
subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
p1d ,psfcpa,pblhx ,dx ,znt , &
ep_1, ep_2, cp, &
@@ -10036,55 +10059,55 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
tsk ,qx ,zlvl ,iz0tlnd,qsfc , &
hfx ,qfx ,cm ,chs ,chs2 , &
cqs2 , &
- rmolx ,ust , rbx, fmx, fhx,stressx,&
+ rmolx ,ust , rbx, fmx, fhx,stressx,&
fm10x, fh2x, wspdx,flhcx,flqcx)
-!-------------------------------------------------------------------
- implicit none
-!-------------------------------------------------------------------
-
-! input
+!-------------------------------------------------------------------
+ implicit none
+!-------------------------------------------------------------------
+
+! input
- integer,intent(in ) :: iloc
- integer,intent(in ) :: jloc
+ integer,intent(in ) :: iloc
+ integer,intent(in ) :: jloc
integer, intent(in) :: itime
integer, intent(in) :: psi_opt
- integer, intent(in) :: isice ! for the glacier/snowh > 0.1m
-
- real(kind=kind_phys), intent(in ) :: pblhx ! planetary boundary layer height
- real(kind=kind_phys), intent(in ) :: tsk ! skin temperature
- real(kind=kind_phys), intent(in ) :: psfcpa ! pressure in pascal
- real(kind=kind_phys), intent(in ) :: p1d !lowest model layer pressure (pa)
- real(kind=kind_phys), intent(in ) :: t1d !lowest model layer temperature
- real(kind=kind_phys), intent(in ) :: qx !water vapor specific humidity (kg/kg) from input
- real(kind=kind_phys), intent(in ) :: zlvl ! thickness of lowest full level layer
- real(kind=kind_phys), intent(in ) :: hfx ! sensible heat flux
- real(kind=kind_phys), intent(in ) :: qfx ! moisture flux
- real(kind=kind_phys), intent(in ) :: dx ! horisontal grid spacing
- real(kind=kind_phys), intent(in ) :: ux ! u and v winds
- real(kind=kind_phys), intent(in ) :: vx
- real(kind=kind_phys), intent(in ) :: znt ! z0m in m or inout
- real(kind=kind_phys), intent(in ) :: snwh ! in mm
+ integer, intent(in) :: isice !< for the glacier/snowh > 0.1m
+
+ real(kind=kind_phys), intent(in ) :: pblhx !< planetary boundary layer height
+ real(kind=kind_phys), intent(in ) :: tsk !< skin temperature
+ real(kind=kind_phys), intent(in ) :: psfcpa !< pressure in pascal
+ real(kind=kind_phys), intent(in ) :: p1d !< lowest model layer pressure (pa)
+ real(kind=kind_phys), intent(in ) :: t1d !< lowest model layer temperature
+ real(kind=kind_phys), intent(in ) :: qx !< water vapor specific humidity (kg/kg) from input
+ real(kind=kind_phys), intent(in ) :: zlvl !< thickness of lowest full level layer
+ real(kind=kind_phys), intent(in ) :: hfx !< sensible heat flux
+ real(kind=kind_phys), intent(in ) :: qfx !< moisture flux
+ real(kind=kind_phys), intent(in ) :: dx !< horisontal grid spacing
+ real(kind=kind_phys), intent(in ) :: ux !< u and v winds
+ real(kind=kind_phys), intent(in ) :: vx !<
+ real(kind=kind_phys), intent(in ) :: znt !< z0m in m or inout
+ real(kind=kind_phys), intent(in ) :: snwh !< in mm
real(kind=kind_phys), intent(in ) :: ep_1
real(kind=kind_phys), intent(in ) :: ep_2
real(kind=kind_phys), intent(in ) :: cp
-! optional vars
+! optional vars
- integer,optional,intent(in ) :: iz0tlnd
+ integer,optional,intent(in ) :: iz0tlnd
real(kind=kind_phys), intent(inout) :: qsfc
- real(kind=kind_phys), intent(inout) :: ust
- real(kind=kind_phys), intent(inout) :: chs
- real(kind=kind_phys), intent(inout) :: chs2
- real(kind=kind_phys), intent(inout) :: cqs2
- real(kind=kind_phys), intent(inout) :: cm
+ real(kind=kind_phys), intent(inout) :: ust
+ real(kind=kind_phys), intent(inout) :: chs
+ real(kind=kind_phys), intent(inout) :: chs2
+ real(kind=kind_phys), intent(inout) :: cqs2
+ real(kind=kind_phys), intent(inout) :: cm
- real(kind=kind_phys), intent(inout) :: rmolx
+ real(kind=kind_phys), intent(inout) :: rmolx
real(kind=kind_phys), intent(inout) :: rbx
real(kind=kind_phys), intent(inout) :: fmx
real(kind=kind_phys), intent(inout) :: fhx
@@ -10094,57 +10117,57 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
real(kind=kind_phys), intent(inout) :: wspdx
real(kind=kind_phys), intent(inout) :: flhcx
- real(kind=kind_phys), intent(inout) :: flqcx
+ real(kind=kind_phys), intent(inout) :: flqcx
real(kind=kind_phys) :: zolx
real(kind=kind_phys) :: molx
-
-! diagnostics out
-! real, intent(out) :: u10
-! real, intent(out) :: v10
-! real, intent(out) :: th2
-! real, intent(out) :: t2
-! real, intent(out) :: q2
-! real, intent(out) :: qsfc
-
-
-! local
-
- real(kind=kind_phys) :: za ! height of full-sigma level
- real(kind=kind_phys) :: thvx ! virtual potential temperature
- real(kind=kind_phys) :: zqkl ! height of upper half level
- real(kind=kind_phys) :: zqklp1 ! height of lower half level (surface)
- real(kind=kind_phys) :: thx ! potential temperature
- real(kind=kind_phys) :: psih ! similarity function for heat
- real(kind=kind_phys) :: psih2 ! similarity function for heat 2m
- real(kind=kind_phys) :: psih10 ! similarity function for heat 10m
- real(kind=kind_phys) :: psim ! similarity function for momentum
- real(kind=kind_phys) :: psim2 ! similarity function for momentum 2m
- real(kind=kind_phys) :: psim10 ! similarity function for momentum 10m
-
- real(kind=kind_phys) :: gz1oz0 ! log(za/z0)
- real(kind=kind_phys) :: gz2oz0 ! log(z2/z0)
- real(kind=kind_phys) :: gz10oz0 ! log(z10/z0)
-
- real(kind=kind_phys) :: rhox ! density
- real(kind=kind_phys) :: govrth ! g/theta for stability l
- real(kind=kind_phys) :: tgdsa ! tsk
- real(kind=kind_phys) :: tvir ! temporal variable src4 -> tvir
- real(kind=kind_phys) :: thgb ! potential temperature ground
- real(kind=kind_phys) :: psfcx ! surface pressure
- real(kind=kind_phys) :: cpm
- real(kind=kind_phys) :: qgh
-
- integer :: n,i,k,kk,l,nzol,nk,nzol2,nzol10
+
+! diagnostics out
+! real, intent(out) :: u10
+! real, intent(out) :: v10
+! real, intent(out) :: th2
+! real, intent(out) :: t2
+! real, intent(out) :: q2
+! real, intent(out) :: qsfc
+
+
+! local
+
+ real(kind=kind_phys) :: za ! height of full-sigma level
+ real(kind=kind_phys) :: thvx ! virtual potential temperature
+ real(kind=kind_phys) :: zqkl ! height of upper half level
+ real(kind=kind_phys) :: zqklp1 ! height of lower half level (surface)
+ real(kind=kind_phys) :: thx ! potential temperature
+ real(kind=kind_phys) :: psih ! similarity function for heat
+ real(kind=kind_phys) :: psih2 ! similarity function for heat 2m
+ real(kind=kind_phys) :: psih10 ! similarity function for heat 10m
+ real(kind=kind_phys) :: psim ! similarity function for momentum
+ real(kind=kind_phys) :: psim2 ! similarity function for momentum 2m
+ real(kind=kind_phys) :: psim10 ! similarity function for momentum 10m
+
+ real(kind=kind_phys) :: gz1oz0 ! log(za/z0)
+ real(kind=kind_phys) :: gz2oz0 ! log(z2/z0)
+ real(kind=kind_phys) :: gz10oz0 ! log(z10/z0)
+
+ real(kind=kind_phys) :: rhox ! density
+ real(kind=kind_phys) :: govrth ! g/theta for stability l
+ real(kind=kind_phys) :: tgdsa ! tsk
+ real(kind=kind_phys) :: tvir ! temporal variable src4 -> tvir
+ real(kind=kind_phys) :: thgb ! potential temperature ground
+ real(kind=kind_phys) :: psfcx ! surface pressure
+ real(kind=kind_phys) :: cpm
+ real(kind=kind_phys) :: qgh
+
+ integer :: n,i,k,kk,l,nzol,nk,nzol2,nzol10
real(kind=kind_phys) :: zolzt, zolz0, zolza
real(kind=kind_phys) :: gz1ozt,gz2ozt,gz10ozt
-
- real(kind=kind_phys) :: pl,thcon,tvcon,e1
- real(kind=kind_phys) :: zl,tskv,dthvdz,dthvm,vconv,rzol,rzol2,rzol10,zol2,zol10
- real(kind=kind_phys) :: dtg,psix,dtthx,psix10,psit,psit2,psiq,psiq2,psiq10
- real(kind=kind_phys) :: fluxc,vsgd,z0q,visc,restar,czil,restar2
+
+ real(kind=kind_phys) :: pl,thcon,tvcon,e1
+ real(kind=kind_phys) :: zl,tskv,dthvdz,dthvm,vconv,rzol,rzol2,rzol10,zol2,zol10
+ real(kind=kind_phys) :: dtg,psix,dtthx,psix10,psit,psit2,psiq,psiq2,psiq10
+ real(kind=kind_phys) :: fluxc,vsgd,z0q,visc,restar,czil,restar2
real(kind=kind_phys) :: dqg
real(kind=kind_phys) :: tabs
@@ -10156,12 +10179,12 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
real(kind=kind_phys) :: qstar
real(kind=kind_phys) :: ep2
real(kind=kind_phys) :: ep_3
-!-------------------------------------------------------------------
+!-------------------------------------------------------------------
- psfcx=psfcpa/1000. ! to kPa for saturation check
+ psfcx=psfcpa/1000. ! to kPa for saturation check
ep2=ep_2
ep_3=1.-ep_2
-
+
if (itime == 1) then !init SP, MR
if (isice == 0) then
tabs = 0.5*(tsk + t1d)
@@ -10227,24 +10250,24 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
endif
endif !done INIT if itime=1
-! convert (tah or tgb = tsk) temperature to potential temperature.
- tgdsa = tsk
+! convert (tah or tgb = tsk) temperature to potential temperature.
+ tgdsa = tsk
thgb = tsk*(p1000mb/psfcpa)**(rair/cpair) !psfcpa is pa
! store virtual, virtual potential and potential temperature
- pl = p1d/1000.
- thx = t1d*(p1000mb*0.001/pl)**(rair/cpair)
+ pl = p1d/1000.
+ thx = t1d*(p1000mb*0.001/pl)**(rair/cpair)
t1dc = t1d - 273.15
- thvx = thx*(1.+ep_1*qx) !qx is SH from input
+ thvx = thx*(1.+ep_1*qx) !qx is SH from input
tvir = t1d*(1.+ep_1*qx)
- rhox=psfcx*1000./(rair*tvir)
- govrth=grav/thx
+ rhox=psfcx*1000./(rair*tvir)
+ govrth=grav/thx
za = zlvl
-
- !za=0.5*dz8w
+
+ !za=0.5*dz8w
! directly from input; check units
@@ -10279,21 +10302,21 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
! cpm=cp*(1.+0.84*qx) ! qx is SH
cpm=cp*(1.+0.84*qx/(1.0-qx) )
- wspdx=sqrt(ux*ux+vx*vx)
+ wspdx=sqrt(ux*ux+vx*vx)
- tskv=thgb*(1.+ep_1*qsfc) !avg with tsurf not used
- dthvdz=(thvx-tskv)
+ tskv=thgb*(1.+ep_1*qsfc) !avg with tsurf not used
+ dthvdz=(thvx-tskv)
- fluxc = max(hfx/rhox/cp + ep_1*tskv*qfx/rhox,0.) !hfx + qfx are fluxes units: wm^-2 and kg m^-2 s^-1
-! vconv = vconvc*(g/tgdsa*pblh*fluxc)**.33
+ fluxc = max(hfx/rhox/cp + ep_1*tskv*qfx/rhox,0.) !hfx + qfx are fluxes units: wm^-2 and kg m^-2 s^-1
+! vconv = vconvc*(g/tgdsa*pblh*fluxc)**.33
vconv = vconvc*(grav/tgdsa*min(1.5*pblhx,4000.0)*fluxc)**.33 !wstar
-! vsgd = 0.32 * (max(dx/5000.-1.,0.))**.33
+! vsgd = 0.32 * (max(dx/5000.-1.,0.))**.33
- vsgd = min(0.32 * (max(dx/5000.-1.,0.))**.33,0.5)
- wspdx=sqrt(wspdx*wspdx+vconv*vconv+vsgd*vsgd)
- wspdx=max(wspdx,0.1) !0.1 is wmin
- rbx=govrth*za*dthvdz/(wspdx*wspdx) !buld rich #
+ vsgd = min(0.32 * (max(dx/5000.-1.,0.))**.33,0.5)
+ wspdx=sqrt(wspdx*wspdx+vconv*vconv+vsgd*vsgd)
+ wspdx=max(wspdx,0.1) !0.1 is wmin
+ rbx=govrth*za*dthvdz/(wspdx*wspdx) !buld rich #
if (itime == 1) then
rbx=max(rbx,-2.0)
@@ -10304,7 +10327,7 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
endif
-! visc=(1.32+0.009*(t1d-273.15))*1.e-5
+! visc=(1.32+0.009*(t1d-273.15))*1.e-5
! kinematic viscosity
@@ -10314,7 +10337,7 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
!compute roughness reynolds number (restar) using default znt
!the GFS option has been removed
- restar=max(ust*znt/visc,0.1)
+ restar=max(ust*znt/visc,0.1)
! get zt, zq based on the input
! the GFS roughness option and spp_pbl have been removed
@@ -10548,6 +10571,8 @@ subroutine sfcdif4(iloc ,jloc ,ux ,vx ,t1d , &
end subroutine sfcdif4
+!>\ingroup NoahMP_LSM
+!!
subroutine zilitinkevich_1995(z_0,zt,zq,restar,ustar,vkc,&
& landsea,iz0tlnd2,spp_pbl,rstoch)
@@ -10612,6 +10637,7 @@ subroutine zilitinkevich_1995(z_0,zt,zq,restar,ustar,vkc,&
end subroutine zilitinkevich_1995
+!>\ingroup NoahMP_LSM
!!data. the formula for land uses a constant ratio (z_0/7.4) taken
!!from garratt (1992).
subroutine garratt_1992(zt,zq,z_0,ren,landsea)
@@ -10809,13 +10835,15 @@ subroutine li_etal_2010(zl, rib, zaz0, z0zt)
end subroutine li_etal_2010
!-------------------------------------------------------------------
+!>\ingroup NoahMP_LSM
+!!
real*8 function zolri(ri,za,z0,zt,zol1,psi_opt)
- ! this iterative algorithm was taken from the revised surface layer
- ! scheme in wrf-arw, written by pedro jimenez and jimy dudhia and
- ! summarized in jimenez et al. (2012, mwr). this function was adapted
- ! to input the thermal roughness length, zt, (as well as z0) and use initial
- ! estimate of z/l.
+ !> this iterative algorithm was taken from the revised surface layer
+ !! scheme in wrf-arw, written by pedro jimenez and jimy dudhia and
+ !! summarized in jimenez et al. (2012, mwr). this function was adapted
+ !! to input the thermal roughness length, zt, (as well as z0) and use initial
+ !! estimate of z/l.
implicit none
real (kind=kind_phys), intent(in) :: ri,za,z0,zt,zol1
@@ -10995,6 +11023,8 @@ real*8 function zolrib(ri,za,z0,zt,logz0,logzt,zol1,psi_opt)
end function
!====================================================================
+!>\ingroup NoahMP_LSM
+!!
subroutine psi_init(psi_opt,errmsg,errflg)
integer :: n,psi_opt
diff --git a/physics/mynnedmf_wrapper.F90 b/physics/mynnedmf_wrapper.F90
index 9ad6f4aa3..08a28f2bd 100644
--- a/physics/mynnedmf_wrapper.F90
+++ b/physics/mynnedmf_wrapper.F90
@@ -2,7 +2,6 @@
!! This file contains all of the code related to running the MYNN
!! eddy-diffusivity mass-flux scheme.
-!>\ingroup gsd_mynn_edmf
!> The following references best describe the code within
!! Olson et al. (2019, NOAA Technical Memorandum)
!! Nakanishi and Niino (2009) \cite NAKANISHI_2009
@@ -91,7 +90,8 @@ subroutine mynnedmf_wrapper_init ( &
end subroutine mynnedmf_wrapper_init
-! \brief This scheme (1) performs pre-mynnedmf work, (2) runs the mynnedmf, and (3) performs post-mynnedmf work
+!>\defgroup gp_mynnedmf MYNN-EDMF PBL and Shallow Convection Module
+!> This scheme (1) performs pre-mynnedmf work, (2) runs the mynnedmf, and (3) performs post-mynnedmf work
!> \section arg_table_mynnedmf_wrapper_run Argument Table
!! \htmlinclude mynnedmf_wrapper_run.html
!!
diff --git a/physics/noahmpdrv.F90 b/physics/noahmpdrv.F90
index d5b1c0485..598a11b31 100644
--- a/physics/noahmpdrv.F90
+++ b/physics/noahmpdrv.F90
@@ -128,8 +128,6 @@ end subroutine noahmpdrv_init
!! - Call penman() to calculate potential evaporation.
!! - Calculate the surface specific humidity and convert surface sensible and latent heat fluxes in W m-2 from their kinematic values.
!! - If a "guess" run, restore the land-related prognostic fields.
-! !
-!-----------------------------------
subroutine noahmpdrv_run &
!...................................
! --- inputs:
diff --git a/physics/progsigma_calc.f90 b/physics/progsigma_calc.f90
index f83514f27..0b37c30c9 100644
--- a/physics/progsigma_calc.f90
+++ b/physics/progsigma_calc.f90
@@ -2,17 +2,15 @@
!! This file contains the subroutine that calculates the prognostic
!! updraft area fraction that is used for closure computations in
!! saSAS deep and shallow convection, based on a moisture budget
-!! as described in Bengtsson et al. 2022.
+!! as described in Bengtsson et al. 2022 \cite Bengtsson_2022.
-!>\ingroup samfdeepcnv
-!! This subroutine computes a prognostic updraft area fraction
+!>\ingroup SAMFdeep
+!>\ingroup SAMF_shal
+!> This subroutine computes a prognostic updraft area fraction
!! used in the closure computations in the samfdeepcnv.f scheme
-!>\ingroup samfshalcnv
!! This subroutine computes a prognostic updraft area fracftion
!! used in the closure computations in the samfshalcnv. scheme
-!!\section progsigma General Algorithm
-!> @{
-
+!!\section gen_progsigma progsigma_calc General Algorithm
subroutine progsigma_calc (im,km,flag_init,flag_restart, &
flag_shallow,del,tmf,qmicro,dbyo1,zdqca,omega_u,zeta,hvap, &
delt,prevsq,q,kbcon1,ktcon,cnvflg,sigmain,sigmaout, &
@@ -227,10 +225,4 @@ subroutine progsigma_calc (im,km,flag_init,flag_restart, &
enddo
endif
-
end subroutine progsigma_calc
-!> @}
-!! @}
-
-
-
diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f
index 93ca3b1a0..3d5131ae6 100644
--- a/physics/radiation_aerosols.f
+++ b/physics/radiation_aerosols.f
@@ -560,7 +560,7 @@ subroutine aer_init &
lalwflg= (mod(iaerflg/10,10) > 0) ! control flag for lw tropospheric aerosol
lavoflg= (mod(iaerflg/100,10) >0) ! control flag for stratospheric volcanic aeros
-!> -# Call wrt_aerlog() to write aerosol parameter configuration to output logs.
+!> -# Call wrt_aerlog to write aerosol parameter configuration to output logs.
if ( me == 0 ) then
@@ -613,7 +613,7 @@ subroutine aer_init &
if ( iaerflg /= 100 ) then
-!> -# Call set_spectrum() to set up spectral one wavenumber solar/IR
+!> -# Call set_spectrum to set up spectral one wavenumber solar/IR
!! fluxes.
call set_spectrum
@@ -648,7 +648,7 @@ subroutine aer_init &
endif ! end if_iaerflg_block
-!> -# Call set_volcaer() to invoke stratospheric volcanic aerosol
+!> -# Call set_volcaer to invoke stratospheric volcanic aerosol
!! initialization.
if ( lavoflg ) then
diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f
index f7e017849..47b9b79fa 100644
--- a/physics/radiation_clouds.f
+++ b/physics/radiation_clouds.f
@@ -144,8 +144,7 @@
!> \defgroup module_radiation_clouds Radiation Clouds Module
!! This module computes cloud related quantities for radiation
!! computations.
-!>@{
-!!
+!> @{
!! Knowledge of cloud properties and their vertical structure is
!! important for meteorological studies due to their impact on both the
!! Earth's radiation budget and adiabatic heating within the atmosphere.
@@ -166,9 +165,6 @@
!!\n ISUBC=0: grid averaged quantities, without sub-grid cloud approximation
!!\n ISUBC=1: with McICA sub-grid approximation (use prescribed permutation seeds)
!!\n ISUBC=2: with McICA sub-grid approximation (use random permutation seeds)
-!!
-!!\version NCEP-Radiation_clouds v5.1 Nov 2012
-!!
!> This module computes cloud related quantities for radiation computations.
module module_radiation_clouds
@@ -2319,19 +2315,17 @@ subroutine progcld_thompson_wsm6 &
!............................................
end subroutine progcld_thompson_wsm6
!............................................
-!mz
-
-! This subroutine added by G. Thompson specifically to account for
-! explicit (microphysics-produced) cloud liquid water, cloud ice, and
-! snow with 100% cloud fraction. Also, a parameterization for cloud
-! fraction less than 1.0 but greater than 0.0 follows Mocko and Cotton
-! (1996) from Sundqvist et al. (1989) with cloud fraction increasing
-! as RH increases above a critical value. In locations with non-zero
-! (but less than 1.0) cloud fraction, there MUST be a value assigned
-! to cloud liquid water and ice or else there is zero impact in the
-! RRTMG radiation scheme.
+!> This subroutine added by G. Thompson specifically to account for
+!! explicit (microphysics-produced) cloud liquid water, cloud ice, and
+!! snow with 100% cloud fraction. Also, a parameterization for cloud
+!! fraction less than 1.0 but greater than 0.0 follows Mocko and Cotton
+!! (1996) from Sundqvist et al. (1989) with cloud fraction increasing
+!! as RH increases above a critical value. In locations with non-zero
+!! (but less than 1.0) cloud fraction, there MUST be a value assigned
+!! to cloud liquid water and ice or else there is zero impact in the
+!! RRTMG radiation scheme.
subroutine progcld_thompson &
& ( plyr,plvl,tlyr,qlyr,qstl,rhly,clw, & ! --- inputs:
& xlat,xlon,slmsk,dz,delp, &
@@ -2911,19 +2905,25 @@ end subroutine progclduni
!! output. The three cloud domain boundaries are defined by ptopc. The
!! cloud overlapping method is defined by control flag 'iovr', which is
!! also used by LW and SW radiation programs.
-!> \param plyr (IX,NLAY), model layer mean pressure in mb (100Pa)
-!> \param ptop1 (IX,4), pressure limits of cloud domain interfaces
+!! \param plyr (IX,NLAY), model layer mean pressure in mb (100Pa)
+!! \param ptop1 (IX,4), pressure limits of cloud domain interfaces
!! (sfc,low,mid,high) in mb (100Pa)
-!> \param cldtot (IX,NLAY), total or stratiform cloud profile in fraction
-!> \param cldcnv (IX,NLAY), convective cloud (for diagnostic scheme only)
-!> \param dz (IX,NLAY), layer thickness (km)
-!> \param de_lgth (IX), clouds decorrelation length (km)
-!> \param alpha (IX,NLAY), alpha decorrelation parameter
-!> \param IX horizontal dimension
-!> \param NLAY vertical layer dimensions
-!> \param clds (IX,5), fraction of clouds for low, mid, hi, tot, bl
-!> \param mtop (IX,3),vertical indices for low, mid, hi cloud tops
-!> \param mbot (IX,3),vertical indices for low, mid, hi cloud bases
+!! \param cldtot (IX,NLAY), total or stratiform cloud profile in fraction
+!! \param cldcnv (IX,NLAY), convective cloud (for diagnostic scheme only)
+!! \param dz (IX,NLAY), layer thickness (km)
+!! \param de_lgth (IX), clouds decorrelation length (km)
+!! \param alpha (IX,NLAY), alpha decorrelation parameter
+!! \param IX horizontal dimension
+!! \param NLAY vertical layer dimensions
+!! \param iovr_rand flag for random cloud overlap method
+!! \param iovr_maxrand flag for maximum-random cloud overlap method
+!! \param iovr_max flag for maximum cloud overlap method
+!! \param iovr_dcorr flag for decorrelation-length cloud overlap method
+!! \param iovr_exp flag for exponential cloud overlap method
+!! \param iovr_exprand flag for exponential-random cloud overlap method
+!! \param clds (IX,5), fraction of clouds for low, mid, hi, tot, bl
+!! \param mtop (IX,3),vertical indices for low, mid, hi cloud tops
+!! \param mbot (IX,3),vertical indices for low, mid, hi cloud bases
!!
!>\section detail Detailed Algorithm
subroutine gethml &
@@ -3344,21 +3344,16 @@ subroutine gethml &
end subroutine gethml
!-----------------------------------
-!+---+-----------------------------------------------------------------+
-!..Cloud fraction scheme by G. Thompson (NCAR-RAL), not intended for
-!.. combining with any cumulus or shallow cumulus parameterization
-!.. scheme cloud fractions. This is intended as a stand-alone for
-!.. cloud fraction and is relatively good at getting widespread stratus
-!.. and stratoCu without caring whether any deep/shallow Cu param schemes
-!.. is making sub-grid-spacing clouds/precip. Under the hood, this
-!.. scheme follows Mocko and Cotton (1995) in application of the
-!.. Sundqvist et al (1989) scheme but using a grid-scale dependent
-!.. RH threshold, one each for land v. ocean points based on
-!.. experiences with HWRF testing.
-!+---+-----------------------------------------------------------------+
-!
-!+---+-----------------------------------------------------------------+
-
+!> Cloud fraction scheme by G. Thompson (NCAR-RAL), not intended for
+!! combining with any cumulus or shallow cumulus parameterization
+!! scheme cloud fractions. This is intended as a stand-alone for
+!! cloud fraction and is relatively good at getting widespread stratus
+!! and stratoCu without caring whether any deep/shallow Cu param schemes
+!! is making sub-grid-spacing clouds/precip. Under the hood, this
+!! scheme follows Mocko and Cotton (1995) in application of the
+!! Sundqvist et al (1989) scheme but using a grid-scale dependent
+!! RH threshold, one each for land v. ocean points based on
+!! experiences with HWRF testing.
SUBROUTINE cal_cldfra3(CLDFRA, qv, qc, qi, qs, dz, &
& p, t, XLAND, gridkm, &
& modify_qvapor, max_relh, &
@@ -3501,11 +3496,9 @@ SUBROUTINE cal_cldfra3(CLDFRA, qv, qc, qi, qs, dz, &
END SUBROUTINE cal_cldfra3
-!+---+-----------------------------------------------------------------+
-!..From cloud fraction array, find clouds of multi-level depth and compute
-!.. a reasonable value of LWP or IWP that might be contained in that depth,
-!.. unless existing LWC/IWC is already there.
-
+!>From cloud fraction array, find clouds of multi-level depth and compute
+!! a reasonable value of LWP or IWP that might be contained in that depth,
+!! unless existing LWC/IWC is already there.
SUBROUTINE find_cloudLayers(qvs1d, cfr1d, T1d, P1d, Dz1d, entrmnt,&
& debugfl, qc1d, qi1d, qs1d, kts,kte)
!
@@ -3663,6 +3656,7 @@ END SUBROUTINE find_cloudLayers
!+---+-----------------------------------------------------------------+
+!>
SUBROUTINE adjust_cloudIce(cfr,qi,qs,qvs,T,dz,entr, k1,k2,kts,kte)
!
IMPLICIT NONE
@@ -3704,6 +3698,7 @@ END SUBROUTINE adjust_cloudIce
!+---+-----------------------------------------------------------------+
+!>
SUBROUTINE adjust_cloudH2O(cfr, qc, qvs,T,dz,entr, k1,k2,kts,kte)
!
IMPLICIT NONE
@@ -3746,9 +3741,8 @@ END SUBROUTINE adjust_cloudH2O
!+---+-----------------------------------------------------------------+
-!..Do not alter any grid-explicitly resolved hydrometeors, rather only
-!.. the supposed amounts due to the cloud fraction scheme.
-
+!> Do not alter any grid-explicitly resolved hydrometeors, rather only
+!! the supposed amounts due to the cloud fraction scheme.
SUBROUTINE adjust_cloudFinal(cfr, qc, qi, Rho,dz, kts,kte)
!
IMPLICIT NONE
@@ -3788,8 +3782,7 @@ SUBROUTINE adjust_cloudFinal(cfr, qc, qi, Rho,dz, kts,kte)
END SUBROUTINE adjust_cloudFinal
-!+---+-----------------------------------------------------------------+
-
+!> This subroutine computes the Xu-Randall cloud fraction scheme.
subroutine cloud_fraction_XuRandall &
& ( IX, NLAY, plyr, clwf, rhly, qstl, & ! --- inputs
& cldtot ) & ! --- outputs
@@ -3833,8 +3826,7 @@ subroutine cloud_fraction_XuRandall &
end subroutine cloud_fraction_XuRandall
-!+---+-----------------------------------------------------------------+
-
+!>
subroutine cloud_fraction_mass_flx_1 &
& ( IX, NLAY, lmfdeep2, xrc3, plyr, clwf, rhly, qstl, & ! --- inputs
& cldtot ) & ! --- outputs
@@ -3884,8 +3876,7 @@ subroutine cloud_fraction_mass_flx_1 &
end subroutine cloud_fraction_mass_flx_1
-!+---+-----------------------------------------------------------------+
-
+!>
subroutine cloud_fraction_mass_flx_2 &
& ( IX, NLAY, lmfdeep2, xrc3, plyr, clwf, rhly, qstl, & ! --- inputs
& cldtot ) & ! --- outputs
@@ -3941,5 +3932,4 @@ subroutine cloud_fraction_mass_flx_2 &
end subroutine cloud_fraction_mass_flx_2
!........................................!
end module module_radiation_clouds
-!> @}
-!========================================!
+!>@}
diff --git a/physics/radiation_gases.f b/physics/radiation_gases.f
index 0b8184e41..c958fc243 100644
--- a/physics/radiation_gases.f
+++ b/physics/radiation_gases.f
@@ -905,7 +905,8 @@ end subroutine gas_update
!! or -pi -> +pi arrangements
!!\param xlat (IMAX), grid latitude in radians, default range to
!! pi/2 -> -pi/2, otherwise see in-line comment
-!!\param IMAX, LMAX horizontal/vertical dimensions for output data
+!!\param IMAX horizontal dimension for output data
+!!\param LMAX vertical dimension for output data
!!\param gasdat (IMAX,LMAX,NF_VGAS) - gases volume mixing ratioes
!!\n (:,:,1) - co2
!!\n (:,:,2) - n2o
diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f
index 664e7d453..2fea84b5f 100644
--- a/physics/radiation_surface.f
+++ b/physics/radiation_surface.f
@@ -104,9 +104,6 @@
!! emissivity for LW radiation.
module module_radiation_surface
!
-!! \section arg_table_module_radiation_surface
-!! \htmlinclude module_radiation_surface.html
-!!
use physparam, only : ialbflg, iemsflg, semis_file, &
& kind_phys
use physcons, only : con_t0c, con_ttp, con_pi, con_tice
@@ -123,7 +120,6 @@ module module_radiation_surface
! & VTAGSFC='NCEP-Radiation_surface v5.0 Aug 2012 '
! --- constant parameters
- integer, parameter, public :: NF_ALBD = 4 ! number of surface albedo components
integer, parameter, public :: IMXEMS = 360 ! number of longtitude points in global emis-type map
integer, parameter, public :: JMXEMS = 180 ! number of latitude points in global emis-type map
real (kind=kind_phys), parameter :: f_zero = 0.0
@@ -142,7 +138,6 @@ module module_radiation_surface
!> This subroutine is the initialization program for surface radiation
!! related quantities (albedo, emissivity, etc.)
-!!\param me print control flag
!>\section gen_sfc_init sfc_init General Algorithm
!-----------------------------------
subroutine sfc_init &
@@ -224,9 +219,6 @@ subroutine sfc_init &
endif ! end if_ialbflg_block
!> - Initialization of surface emissivity section
-!! \n physparam::iemsflg
-!! - = 1: input SFC emissivity type map from "semis_file"
-!! - = 2: input SFC emissivity from land model
iemslw = mod(iemsflg, 10) ! emissivity control
@@ -299,33 +291,45 @@ end subroutine sfc_init
!! vis-nir, direct-diffused) according to control flag ialbflg.
!! \n 1) climatological surface albedo scheme (\cite briegleb_1992)
!! \n 2) MODIS retrieval based scheme from Boston univ.
-!!\param slmsk (IMAX), sea(0),land(1),ice(2) mask on fcst model grid
-!!\param snodi (IMAX), snow depth water equivalent in mm over ice
-!!\param sncovr (IMAX), snow cover over land
-!!\param snoalb (IMAX), maximum snow albedo over land (for deep snow)
-!!\param zorlf (IMAX), surface roughness in cm
-!!\param coszf (IMAX), cosin of solar zenith angle
-!!\param tsknf (IMAX), ground surface temperature in K
-!!\param tairf (IMAX), lowest model layer air temperature in K
-!!\param hprif (IMAX), topographic sdv in m
-!!\n --- for ialbflg=0 climtological albedo scheme ---
-!!\param alvsf (IMAX), 60 degree vis albedo with strong cosz dependency
-!!\param alnsf (IMAX), 60 degree nir albedo with strong cosz dependency
-!!\param alvwf (IMAX), 60 degree vis albedo with weak cosz dependency
-!!\param alnwf (IMAX), 60 degree nir albedo with weak cosz dependency
-!!\n --- for ialbflg=1 MODIS based land albedo scheme ---
-!!\param alvsf (IMAX), visible black sky albedo at zenith 60 degree
-!!\param alnsf (IMAX), near-ir black sky albedo at zenith 60 degree
-!!\param alvwf (IMAX), visible white sky albedo
-!!\param alnwf (IMAX), near-ir white sky albedo
-!!\param facsf (IMAX), fractional coverage with strong cosz dependency
-!!\param facwf (IMAX), fractional coverage with weak cosz dependency
-!!\param fice (IMAX), sea-ice fraction
-!!\param tisfc (IMAX), sea-ice surface temperature
-!!\param IMAX array horizontal dimension
-!!\param albppert (IMAX), a probability value in the interval [0,1]
-!!\param pertalb (5), magnitude of perturbation of surface albedo
-!!\param sfcalb (IMAX,NF_ALBD), mean sfc albedo
+!!\param slmsk sea(0),land(1),ice(2) mask on fcst model grid
+!!\param lsm flag for land surface model
+!!\param lsm_noahmp flag for NOAH MP land surface model
+!!\param lsm_ruc flag for RUC land surface model
+!!\param use_cice_alb flag for using uce albedos from CICE when coupled
+!!\param snodi snow depth water equivalent in mm over ice
+!!\param sncovr snow cover over land
+!!\param snoalb maximum snow albedo over land (for deep snow)
+!!\param zorlf surface roughness in cm
+!!\param coszf cosin of solar zenith angle
+!!\param tsknf ground surface temperature in K
+!!\param tairf lowest model layer air temperature in K
+!!\param hprif topographic sdv in m
+!!\param frac_grid flag for fractional landmask
+!!\param lakefrac fraction of horizontal grid area occupied by lake
+!!\param alvsf visible black sky albedo at zenith 60 degree
+!!\param alnsf near-ir black sky albedo at zenith 60 degree
+!!\param alvwf visible white sky albedo
+!!\param alnwf near-ir white sky albedo
+!!\param facsf fractional coverage with strong cosz dependency
+!!\param facwf fractional coverage with weak cosz dependency
+!!\param fice sea-ice fraction
+!!\param tisfc sea-ice surface temperature
+!!\param lsmalbdvis direct surface albedo visible band over land
+!!\param lsmalbdnir direct surface albedo NIR band over land
+!!\param lsmalbivis diffuse surface albedo visible band over land
+!!\param lsmalbinir diffuse surface albedo NIR band over land
+!!\param icealbdvis direct surface albedo visible band over ice
+!!\param icealbdnir direct surface albedo NIR band over ice
+!!\param icealbivis diffuse surface albedo visible band over ice
+!!\param icealbinir diffuse surface albedo NIR band over ice
+!!\param IMAX array horizontal dimension
+!!\param albppert a probability value in the interval [0,1]
+!!\param pertalb (5), magnitude of perturbation of surface albedo
+!!\param fracl land fraction for emissivity and albedo calculation
+!!\param fraco ocean fraction for emissivity of albedo calculation
+!!\param fraci ice fraction for emissivity of albedo calculation
+!!\param icy flag for ice surfce
+!!\param sfcalb mean sfc albedo
!!\n ( :, 1) - near ir direct beam albedo
!!\n ( :, 2) - near ir diffused albedo
!!\n ( :, 3) - uv+vis direct beam albedo
@@ -339,7 +343,7 @@ subroutine setalb &
& alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
& lsmalbdvis, lsmalbdnir, lsmalbivis, lsmalbinir, &
& icealbdvis, icealbdnir, icealbivis, icealbinir, &
- & IMAX, albPpert, pertalb, fracl, fraco, fraci, icy, &
+ & IMAX, NF_ALBD, albPpert, pertalb, fracl, fraco, fraci, icy,&
& sfcalb & ! --- outputs:
& )
@@ -405,7 +409,7 @@ subroutine setalb &
implicit none
! --- inputs
- integer, intent(in) :: IMAX
+ integer, intent(in) :: IMAX, NF_ALBD
integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc
logical, intent(in) :: use_cice_alb, frac_grid
@@ -447,7 +451,7 @@ subroutine setalb &
!
!===> ... begin here
!
-!> - Use modis based albedo for land area:
+!> - if ialbflg = 1, use MODIS based albedo for land area:
if ( ialbflg == 1 ) then
do i = 1, IMAX
@@ -536,7 +540,7 @@ subroutine setalb &
flnd = flnd0 * fsno1 ! snow-free fraction
fsno = f_one - flnd ! snow-covered fraction
- !> - use Fanglin's zenith angle treatment.
+ ! - use Fanglin's zenith angle treatment.
if (coszf(i) > 0.0001) then
rfcs = 1.775/(1.0+1.55*coszf(i))
else
@@ -576,7 +580,7 @@ subroutine setalb &
enddo ! end_do_i_loop
-!> -# use land model output for land area: Noah MP, RUC (land and ice).
+!> - if ialbflg = 2, use land model output for land area: Noah MP, RUC (land and ice).
elseif ( ialbflg == 2 ) then
do i = 1, IMAX
@@ -707,18 +711,35 @@ end subroutine setalb
!-----------------------------------
!> This subroutine computes surface emissivity for LW radiation.
-!!\param xlon (IMAX), longitude in radiance, ok for both 0->2pi
-!! or -pi -> +pi ranges
-!!\param xlat (IMAX), latitude in radiance, default to pi/2 ->
-!! -pi/2 range, otherwise see in-line comment
-!!\param snodl (IMAX), snow depth water equivalent in mm land
-!!\param snodi (IMAX), snow depth water equivalent in mm ice
-!!\param sncovr (IMAX), snow cover over land
-!!\param zorlf (IMAX), surface roughness in cm
-!!\param tsknf (IMAX), ground surface temperature in K
-!!\param tairf (IMAX), lowest model layer air temperature in K
-!!\param hprif (IMAX), topographic standard deviation in m
-!!\param IMAX array horizontal dimension
+!!\param lsm flag for land surface model
+!!\param lsm_noahmp flag for NOAH MP land surface model
+!!\param lsm_ruc flag for RUC land surface model
+!!\param frac_grid flag for fractional grid
+!!\param cplice flag for controlling cplice collection
+!!\param use_flake flag for indicating lake points using flake model
+!!\param lakefrac fraction of horizontal grid area occupied by lake
+!!\param xlon longitude in radiance, ok for both 0->2pi
+!! or -pi -> +pi ranges
+!!\param xlat latitude in radiance, default to pi/2 ->
+!! -pi/2 range, otherwise see in-line comment
+!!\param slmsk landmask: sea/land/ice =0/1/2
+!!\param snodl snow depth water equivalent in mm land
+!!\param snodi snow depth water equivalent in mm ice
+!!\param sncovr snow cover over land
+!!\param sncovr_ice surface snow area fraction over ice
+!!\param zorlf surface roughness in cm
+!!\param tsknf ground surface temperature in K
+!!\param tairf lowest model layer air temperature in K
+!!\param hprif topographic standard deviation in m
+!!\param semis_lnd surface LW emissivity in fraction over land
+!!\param semis_ice surface LW emissivity in fraction over ice
+!!\param semis_wat surface LW emissivity in fraction over water
+!!\param IMAX array horizontal dimension
+!!\param fracl land fraction for emissivity and albedo calculation
+!!\param fraco ocean fraction for emissivity of albedo calculation
+!!\param fraci ice fraction for emissivity of albedo calculation
+!!\param icy flag for ice surfce
+!!\param semisbase baseline surface LW emissivity in fraction
!!\param sfcemis (IMAX), surface emissivity
!>\section general_setemis setemis General Algorithm
!-----------------------------------
diff --git a/physics/radiation_surface.meta b/physics/radiation_surface.meta
deleted file mode 100644
index 668a2bd21..000000000
--- a/physics/radiation_surface.meta
+++ /dev/null
@@ -1,15 +0,0 @@
-[ccpp-table-properties]
- name = module_radiation_surface
- type = module
- dependencies = namelist_soilveg_ruc.F90,set_soilveg_ruc.F90
-
-########################################################################
-[ccpp-arg-table]
- name = module_radiation_surface
- type = module
-[nf_albd]
- standard_name = number_of_components_for_surface_albedo
- long_name = number of IR/VIS/UV compinents for surface albedo
- units = none
- dimensions = ()
- type = integer
diff --git a/physics/radlw_main.F90 b/physics/radlw_main.F90
index 84f0425a5..04609382d 100644
--- a/physics/radlw_main.F90
+++ b/physics/radlw_main.F90
@@ -1518,7 +1518,6 @@ end subroutine rlwinit
!> \brief This subroutine computes the cloud optical depth(s) for each cloudy
!! layer and g-point interval.
!!\param cfrac layer cloud fraction
-!!\n --- for ilwcliq > 0 (prognostic cloud scheme) - - -
!!\param cliqp layer in-cloud liq water path (\f$g/m^2\f$)
!!\param reliq mean eff radius for liq cloud (micron)
!!\param cicep layer in-cloud ice water path (\f$g/m^2\f$)
@@ -1527,20 +1526,12 @@ end subroutine rlwinit
!!\param cdat2 effective radius for rain drop (micron)
!!\param cdat3 layer snow flake water path(\f$g/m^2\f$)
!!\param cdat4 mean effective radius for snow flake(micron)
-!!\n --- for ilwcliq = 0 (diagnostic cloud scheme) - - -
-!!\param cliqp not used
-!!\param cicep not used
-!!\param reliq not used
-!!\param reice not used
-!!\param cdat1 layer cloud optical depth
-!!\param cdat2 layer cloud single scattering albedo
-!!\param cdat3 layer cloud asymmetry factor
-!!\param cdat4 optional use
!!\param nlay number of layer number
!!\param nlp1 number of veritcal levels
!!\param ipseed permutation seed for generating random numbers (isubclw>0)
!!\param dz layer thickness (km)
!!\param de_lgth layer cloud decorrelation length (km)
+!!\param iovr cloud overlapping control flag
!!\param alpha EXP/ER cloud overlap decorrelation parameter
!!\param cldfmc cloud fraction for each sub-column
!!\param taucld cloud optical depth for bands (non-mcica)
diff --git a/physics/radsw_main.F90 b/physics/radsw_main.F90
index f7db82cd6..ae2f21e18 100644
--- a/physics/radsw_main.F90
+++ b/physics/radsw_main.F90
@@ -1560,7 +1560,6 @@ end subroutine rswinit
!> This subroutine computes the cloud optical properties for each
!! cloudy layer and g-point interval.
!!\param cfrac layer cloud fraction
-!!\n for physparam::iswcliq > 0 (prognostic cloud scheme) - - -
!!\param cliqp layer in-cloud liq water path (\f$g/m^2\f$)
!!\param reliq mean eff radius for liq cloud (micron)
!!\param cicep layer in-cloud ice water path (\f$g/m^2\f$)
@@ -1569,15 +1568,6 @@ end subroutine rswinit
!!\param cdat2 effective radius for rain drop (micron)
!!\param cdat3 layer snow flake water path(\f$g/m^2\f$)
!!\param cdat4 mean eff radius for snow flake(micron)
-!!\n for physparam::iswcliq = 0 (diagnostic cloud scheme) - - -
-!!\param cliqp not used
-!!\param cicep not used
-!!\param reliq not used
-!!\param reice not used
-!!\param cdat1 layer cloud optical depth
-!!\param cdat2 layer cloud single scattering albedo
-!!\param cdat3 layer cloud asymmetry factor
-!!\param cdat4 optional use
!!\param cf1 effective total cloud cover at surface
!!\param nlay vertical layer number
!!\param ipseed permutation seed for generating random numbers
@@ -1593,7 +1583,6 @@ end subroutine rswinit
!!\param cldfrc cloud fraction of grid mean value
!!\param cldfmc cloud fraction for each sub-column
!!\section General_cldprop cldprop General Algorithm
-!-----------------------------------
subroutine cldprop &
& ( cfrac,cliqp,reliq,cicep,reice,cdat1,cdat2,cdat3,cdat4, & ! --- inputs
& cf1, nlay, ipseed, dz, delgth, alpha, &
diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f
index 2bef2d729..4ba887353 100644
--- a/physics/samfdeepcnv.f
+++ b/physics/samfdeepcnv.f
@@ -1779,7 +1779,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
enddo
c
-!> - Calculate the mean updraft velocity within the cloud (wc),cast in pressure coordinates.
+!> - For progsigma = T, calculate the mean updraft velocity within the cloud (omegac),cast in pressure coordinates.
if(progsigma)then
do i = 1, im
omegac(i) = 0.
@@ -1809,7 +1809,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
endif
enddo
-!> - Calculate the xi term in Bengtsson et al. 2022 (equation 8)
+!> - For progsigma = T, calculate the xi term in Bengtsson et al. 2022 \cite Bengtsson_2022 (equation 8)
do k = 2, km1
do i = 1, im
if (cnvflg(i)) then
@@ -2881,7 +2881,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
endif
enddo
-!> - From Bengtsson et al. (2022) Prognostic closure scheme, equation 8, compute updraft area fraction based on a moisture budget
+!> - From Bengtsson et al. (2022) \cite Bengtsson_2022 prognostic closure scheme, equation 8, call progsigma_calc() to compute updraft area fraction based on a moisture budget
if(progsigma)then
flag_shallow = .false.
call progsigma_calc(im,km,first_time_step,restart,flag_shallow,
diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f
index 2031c0ae9..1b648c109 100644
--- a/physics/samfshalcnv.f
+++ b/physics/samfshalcnv.f
@@ -1517,7 +1517,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
endif
enddo
c
-!> - Calculate the mean updraft velocity in pressure coordinates within the cloud (wc).
+!> - For progsigma =T, calculate the mean updraft velocity in pressure coordinates within the cloud (wc).
if(progsigma)then
do i = 1, im
omegac(i) = 0.
@@ -1546,8 +1546,8 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
if (omegac(i) > val) cnvflg(i)=.false.
endif
enddo
-c
-c Compute zeta for prog closure
+
+!> - For progsigma = T, calculate the xi term in Bengtsson et al. 2022 \cite Bengtsson_2022 (equation 8)
do k = 2, km1
do i = 1, im
if (cnvflg(i)) then
@@ -1927,7 +1927,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
c compute cloud base mass flux as a function of the mean
c updraft velcoity
c
-c Prognostic closure
+!> - From Bengtsson et al. (2022) \cite Bengtsson_2022 prognostic closure scheme, equation 8, call progsigma_calc() to compute updraft area fraction based on a moisture budget
if(progsigma)then
flag_shallow = .true.
call progsigma_calc(im,km,first_time_step,restart,flag_shallow,
diff --git a/physics/tridi.f b/physics/tridi.f
index 98b154950..13898ad43 100644
--- a/physics/tridi.f
+++ b/physics/tridi.f
@@ -2,7 +2,8 @@
!! These subroutines are originally internal subroutines in moninedmf.f
module tridi_mod
contains
-!>\ingroup HEDMF
+
+!>\ingroup module_satmedmfvdifq
!!\brief Routine to solve the tridiagonal system to calculate
!!temperature and moisture at \f$ t + \Delta t \f$; part of two-part
!!process to calculate time tendencies due to vertical diffusion.
@@ -43,8 +44,7 @@ subroutine tridi1(l,n,cl,cm,cu,r1,au,a1)
end subroutine tridi1
!-----------------------------------------------------------------------
-!>\ingroup satmedmf
-!>\ingroup satmedmfvdifq
+!>\ingroup module_satmedmfvdifq
!> This subroutine ..
subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2)
!
@@ -87,8 +87,7 @@ subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2)
end subroutine tridi2
!-----------------------------------------------------------------------
-!>\ingroup satmedmf
-!>\ingroup satmedmfvdifq
+!>\ingroup module_satmedmfvdifq
!> Routine to solve the tridiagonal system to calculate u- and
!! v-momentum at \f$ t + \Delta t \f$; part of two-part process to
!! calculate time tendencies due to vertical diffusion.
@@ -159,8 +158,7 @@ subroutine tridin(l,n,nt,cl,cm,cu,r1,r2,au,a1,a2)
end subroutine tridin
!-----------------------------------------------------------------------
-!>\ingroup satmedmf
-!>\ingroup satmedmfvdifq
+!>\ingroup module_satmedmfvdifq
!! This subroutine solves tridiagonal problem for TKE.
subroutine tridit(l,n,nt,cl,cm,cu,rt,au,at)
!-----------------------------------------------------------------------
| |