Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add initial NoahMP docs to CCPP scientific docs #345

Merged
merged 3 commits into from
Dec 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions physics/docs/ccpp_doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ INPUT = pdftxt/mainpage.txt \
### pdftxt/GFSphys_namelist.txt \
### pdftxt/GFS_STOCHY_PHYS.txt \
pdftxt/suite_input.nml.txt \
pdftxt/NoahMP.txt \
### in-core MP
../gfdl_fv_sat_adj.F90 \
### time_vary
Expand Down Expand Up @@ -172,6 +173,10 @@ INPUT = pdftxt/mainpage.txt \
../sflx.f \
../namelist_soilveg.f \
../set_soilveg.f \
../sfc_noahmp_drv.f \
../module_sf_noahmplsm.f90 \
../module_sf_noahmp_glacier.f90 \
../noahmp_tables.f90 \
### Sea Ice Surface
../sfc_sice.f \
### PBL
Expand Down
106 changes: 76 additions & 30 deletions physics/docs/library.bib

Large diffs are not rendered by default.

41 changes: 41 additions & 0 deletions physics/docs/pdftxt/NoahMP.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/**
\page NoahMP GFS NoahMP Land Surface Model
\section des_noahmp Description

This implementation of the NoahMP Land Surface Model (LSM) is adapted from the version implemented in WRF v3.7 with additions by NOAA EMC staff to work with the UFS Atmosphere model. Authoritative documentation of the NoahMP scheme can be accessed at the following links:

[University of Texas at Austin NoahMP Documentation](http://www.jsg.utexas.edu/noah-mp "University of Texas at Austin NoahMP Documentation")

[NCAR Research Application Laboratory NoahMP Documentation](https://ral.ucar.edu/solutions/products/noah-multiparameterization-land-surface-model-noah-mp-lsm "NCAR RAL NoahMP Documentation")

A primary reference for the NoahMP LSM is Niu et al. (2011) \cite niu_et_al_2011.

The CCPP interface to the NoahMP LSM is a driving software layer on top of the actual NoahMP LSM. During the run sequence, code organization is as follows:
+ \ref noahmpdrv_run() calls
+ \ref transfer_mp_parameters()
+ \ref noahmp_options()
+ \ref noahmp_options_glacier() and noahmp_glacier() if over the ice vegetation type (glacier)
+ \ref noahmp_sflx() if over other vegetation types
+ \ref penman()

Note that noahmp_glacer() and noahmp_sflx() are the actual NoahMP codes.

\section Default NoahMP LSM Options used in UFS atmosphere
+ Dynamic Vegetation (opt_dveg): 2 [On]
+ Canopy Stomatal Resistance (opt_crs): 1 [Ball-Berry]
+ Soil Moisture Factor for Stomatal Resistance (opt_btr): 1 [Noah soil moisture]
+ Runoff and Groundwater (opt_run): 1 [topmodel with groundwater (Niu et al. 2007 \cite niu_et_al_2007)]
+ Surface Layer Drag Coeff (opt_sfc): 1 [Monin-Obukhov]
+ Supercooled Liquid Water or Ice Fraction (opt_frz): 1 [no iteration (Niu and Yang, 2006 \cite niu_and_yang_2006)]
+ Frozen Soil Permeability (opt_inf): 1 [linear effects, more permeable (Niu and Yang, 2006, \cite niu_and_yang_2006)]
+ Radiation Transfer (opt_rad): 1 [modified two-stream (gap = f(solar angle, 3d structure ...)<1-fveg)]
+ Ground Snow Surface Albedo (opt_alb): 2 [class]
+ Partitioning Precipitation into Rainfall & Snowfall (opt_snf): 4 [use microphysics output]
+ Lower Boundary Condition of Soil Temperature (opt_tbot): 2 [tbot at zbot (8m) read from a file (original Noah)]
+ Snow/Soil Temperature Time Scheme (only layer 1) (opt_stc): 1 [semi-implicit; flux top boundary condition]

\section intra_noahmp Intraphysics Communication
+ GFS NoahMP LSM Driver (\ref arg_table_noahmpdrv_run)
\section gen_al_noahmp General Algorithm of Driver
+ \ref general_noahmpdrv
*/
1 change: 1 addition & 0 deletions physics/docs/pdftxt/all_shemes_list.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ parameterizations in suites.
- \b Land \b Surface \b Model
- \subpage GFS_NOAH
- \subpage GSD_RUCLSM
- \subpage NoahMP

- \b Cumulus \b Parameterizations
- \subpage GFS_SAMF
Expand Down
33 changes: 32 additions & 1 deletion physics/module_sf_noahmp_glacier.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
!> \file module_sf_noahmp_glacier.f90
!! This file contains the NoahMP Glacier scheme.

!>\ingroup NoahMP_LSM
module noahmp_glacier_globals

implicit none
Expand Down Expand Up @@ -109,6 +113,7 @@ module noahmp_glacier_globals
end module noahmp_glacier_globals
!------------------------------------------------------------------------------------------!

!>\ingroup NoahMP_LSM
module noahmp_glacier_routines
use noahmp_glacier_globals
#ifndef CCPP
Expand Down Expand Up @@ -150,6 +155,7 @@ module noahmp_glacier_routines
!
! ==================================================================================================

!>\ingroup NoahMP_LSM
subroutine noahmp_glacier (&
iloc ,jloc ,cosz ,nsnow ,nsoil ,dt , & ! in : time/space/model-related
sfctmp ,sfcprs ,uu ,vv ,q2 ,soldn , & ! in : forcing
Expand Down Expand Up @@ -356,6 +362,7 @@ subroutine noahmp_glacier (&

end subroutine noahmp_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine atm_glacier (sfcprs ,sfctmp ,q2 ,soldn ,cosz ,thair , &
qair ,eair ,rhoair ,solad ,solai , &
swdown )
Expand Down Expand Up @@ -409,6 +416,7 @@ subroutine atm_glacier (sfcprs ,sfctmp ,q2 ,soldn ,cosz ,thair , &
end subroutine atm_glacier
! ==================================================================================================
! --------------------------------------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine energy_glacier (nsnow ,nsoil ,isnow ,dt ,qsnow ,rhoair , & !in
eair ,sfcprs ,qair ,sfctmp ,lwdn ,uu , & !in
vv ,solad ,solai ,cosz ,zref , & !in
Expand Down Expand Up @@ -612,6 +620,7 @@ subroutine energy_glacier (nsnow ,nsoil ,isnow ,dt ,qsnow ,rhoair , & !i

end subroutine energy_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine thermoprop_glacier (nsoil ,nsnow ,isnow ,dzsnso , & !in
dt ,snowh ,snice ,snliq , & !in
df ,hcpct ,snicev ,snliqv ,epore , & !out
Expand Down Expand Up @@ -685,6 +694,7 @@ subroutine thermoprop_glacier (nsoil ,nsnow ,isnow ,dzsnso , & !in
end subroutine thermoprop_glacier
! ==================================================================================================
! --------------------------------------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine csnow_glacier (isnow ,nsnow ,nsoil ,snice ,snliq ,dzsnso , & !in
tksno ,cvsno ,snicev ,snliqv ,epore ) !out
! --------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -741,6 +751,7 @@ subroutine csnow_glacier (isnow ,nsnow ,nsoil ,snice ,snliq ,dzsnso ,

end subroutine csnow_glacier
!===================================================================================================
!>\ingroup NoahMP_LSM
subroutine radiation_glacier (dt ,tg ,sneqvo ,sneqv ,cosz , & !in
qsnow ,solad ,solai , & !in
albold ,tauss , & !inout
Expand Down Expand Up @@ -831,6 +842,7 @@ subroutine radiation_glacier (dt ,tg ,sneqvo ,sneqv ,cosz , & !i

end subroutine radiation_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine snow_age_glacier (dt,tg,sneqvo,sneqv,tauss,fage)
! --------------------------------------------------------------------------------------------------
implicit none
Expand Down Expand Up @@ -885,6 +897,7 @@ subroutine snow_age_glacier (dt,tg,sneqvo,sneqv,tauss,fage)
end subroutine snow_age_glacier
! ==================================================================================================
! --------------------------------------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine snowalb_bats_glacier (nband,cosz,fage,albsnd,albsni)
! --------------------------------------------------------------------------------------------------
implicit none
Expand Down Expand Up @@ -934,6 +947,7 @@ subroutine snowalb_bats_glacier (nband,cosz,fage,albsnd,albsni)
end subroutine snowalb_bats_glacier
! ==================================================================================================
! --------------------------------------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine snowalb_class_glacier (nband,qsnow,dt,alb,albold,albsnd,albsni)
! --------------------------------------------------------------------------------------------------
implicit none
Expand Down Expand Up @@ -979,6 +993,7 @@ subroutine snowalb_class_glacier (nband,qsnow,dt,alb,albold,albsnd,albsni)

end subroutine snowalb_class_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine glacier_flux (nsoil ,nsnow ,emg ,isnow ,df ,dzsnso ,z0m , & !in
zlvl ,zpd ,qair ,sfctmp ,rhoair ,sfcprs , & !in
ur ,gamma ,rsurf ,lwdn ,rhsur ,smc , & !in
Expand Down Expand Up @@ -1203,6 +1218,7 @@ subroutine glacier_flux (nsoil ,nsnow ,emg ,isnow ,df ,dzsnso ,z

end subroutine glacier_flux
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine esat(t, esw, esi, desw, desi)
!---------------------------------------------------------------------------------------------------
! use polynomials to calculate saturation vapor pressure and derivative with
Expand Down Expand Up @@ -1254,7 +1270,7 @@ subroutine esat(t, esw, esi, desw, desi)

end subroutine esat
! ==================================================================================================

!>\ingroup NoahMP_LSM
subroutine sfcdif1_glacier(iter ,zlvl ,zpd ,z0h ,z0m , & !in
qair ,sfctmp ,h ,rhoair ,mpe ,ur , & !in
#ifdef CCPP
Expand Down Expand Up @@ -1428,6 +1444,7 @@ subroutine sfcdif1_glacier(iter ,zlvl ,zpd ,z0h ,z0m , & !in

end subroutine sfcdif1_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine tsnosoi_glacier (nsoil ,nsnow ,isnow ,dt ,tbot , & !in
ssoil ,snowh ,zbot ,zsnso ,df , & !in
hcpct , & !in
Expand Down Expand Up @@ -1491,6 +1508,7 @@ subroutine tsnosoi_glacier (nsoil ,nsnow ,isnow ,dt ,tbot , & !in
end subroutine tsnosoi_glacier
! ==================================================================================================
! ----------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine hrt_glacier (nsnow ,nsoil ,isnow ,zsnso , & !in
stc ,tbot ,zbot ,df , & !in
hcpct ,ssoil ,phi , & !in
Expand Down Expand Up @@ -1589,6 +1607,7 @@ subroutine hrt_glacier (nsnow ,nsoil ,isnow ,zsnso , & !in
end subroutine hrt_glacier
! ==================================================================================================
! ----------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine hstep_glacier (nsnow ,nsoil ,isnow ,dt , & !in
ai ,bi ,ci ,rhsts , & !inout
stc ) !inout
Expand Down Expand Up @@ -1643,6 +1662,7 @@ subroutine hstep_glacier (nsnow ,nsoil ,isnow ,dt , & !in

end subroutine hstep_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine rosr12_glacier (p,a,b,c,d,delta,ntop,nsoil,nsnow)
! ----------------------------------------------------------------------
! subroutine rosr12
Expand Down Expand Up @@ -1703,6 +1723,7 @@ subroutine rosr12_glacier (p,a,b,c,d,delta,ntop,nsoil,nsnow)
end subroutine rosr12_glacier
! ----------------------------------------------------------------------
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine phasechange_glacier (nsnow ,nsoil ,isnow ,dt ,fact , & !in
dzsnso , & !in
stc ,snice ,snliq ,sneqv ,snowh , & !inout
Expand Down Expand Up @@ -1992,6 +2013,7 @@ subroutine phasechange_glacier (nsnow ,nsoil ,isnow ,dt ,fact , &

end subroutine phasechange_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine water_glacier (nsnow ,nsoil ,imelt ,dt ,prcp ,sfctmp , & !in
qvap ,qdew ,ficeold,zsoil , & !in
isnow ,snowh ,sneqv ,snice ,snliq ,stc , & !inout
Expand Down Expand Up @@ -2173,6 +2195,7 @@ subroutine water_glacier (nsnow ,nsoil ,imelt ,dt ,prcp ,sfctmp , & !in
end subroutine water_glacier
! ==================================================================================================
! ----------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine snowwater_glacier (nsnow ,nsoil ,imelt ,dt ,sfctmp , & !in
snowhin,qsnow ,qsnfro ,qsnsub ,qrain , & !in
ficeold,zsoil , & !in
Expand Down Expand Up @@ -2299,6 +2322,7 @@ subroutine snowwater_glacier (nsnow ,nsoil ,imelt ,dt ,sfctmp , & !in

end subroutine snowwater_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine snowfall_glacier (nsoil ,nsnow ,dt ,qsnow ,snowhin , & !in
sfctmp , & !in
isnow ,snowh ,dzsnso ,stc ,snice , & !inout
Expand Down Expand Up @@ -2364,6 +2388,7 @@ subroutine snowfall_glacier (nsoil ,nsnow ,dt ,qsnow ,snowhin , & !in
end subroutine snowfall_glacier
! ==================================================================================================
! ----------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine compact_glacier (nsnow ,nsoil ,dt ,stc ,snice , & !in
snliq ,imelt ,ficeold, & !in
isnow ,dzsnso ) !inout
Expand Down Expand Up @@ -2463,6 +2488,7 @@ subroutine compact_glacier (nsnow ,nsoil ,dt ,stc ,snice , & !in

end subroutine compact_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine combine_glacier (nsnow ,nsoil , & !in
isnow ,sh2o ,stc ,snice ,snliq , & !inout
dzsnso ,sice ,snowh ,sneqv , & !inout
Expand Down Expand Up @@ -2635,6 +2661,7 @@ end subroutine combine_glacier
! ==================================================================================================

! ----------------------------------------------------------------------
!>\ingroup NoahMP_LSM
subroutine combo_glacier(dz, wliq, wice, t, dz2, wliq2, wice2, t2)
! ----------------------------------------------------------------------
implicit none
Expand Down Expand Up @@ -2686,6 +2713,7 @@ subroutine combo_glacier(dz, wliq, wice, t, dz2, wliq2, wice2, t2)

end subroutine combo_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine divide_glacier (nsnow ,nsoil , & !in
isnow ,stc ,snice ,snliq ,dzsnso ) !inout
! ----------------------------------------------------------------------
Expand Down Expand Up @@ -2811,6 +2839,7 @@ subroutine divide_glacier (nsnow ,nsoil , & !in

end subroutine divide_glacier
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine snowh2o_glacier (nsnow ,nsoil ,dt ,qsnfro ,qsnsub , & !in
qrain , & !in
isnow ,dzsnso ,snowh ,sneqv ,snice , & !inout
Expand Down Expand Up @@ -2958,6 +2987,7 @@ subroutine snowh2o_glacier (nsnow ,nsoil ,dt ,qsnfro ,qsnsub , & !in
end subroutine snowh2o_glacier
! ********************* end of water subroutines ******************************************
! ==================================================================================================
!>\ingroup NoahMP_LSM
subroutine error_glacier (iloc ,jloc ,swdown ,fsa ,fsr ,fira , &
fsh ,fgev ,ssoil ,sag ,prcp ,edir , &
#ifdef CCPP
Expand Down Expand Up @@ -3043,6 +3073,7 @@ subroutine error_glacier (iloc ,jloc ,swdown ,fsa ,fsr ,fira , &
end subroutine error_glacier
! ==================================================================================================

!>\ingroup NoahMP_LSM
subroutine noahmp_options_glacier(idveg ,iopt_crs ,iopt_btr ,iopt_run ,iopt_sfc ,iopt_frz , &
iopt_inf ,iopt_rad ,iopt_alb ,iopt_snf ,iopt_tbot, iopt_stc )

Expand Down
Loading