diff --git a/physics/GFS_MP_generic.F90 b/physics/GFS_MP_generic.F90 index fd7c96c7a..f8ad355d8 100644 --- a/physics/GFS_MP_generic.F90 +++ b/physics/GFS_MP_generic.F90 @@ -84,7 +84,7 @@ module GFS_MP_generic_post subroutine GFS_MP_generic_post_init end subroutine GFS_MP_generic_post_init -!>\defgroup gfs_calpreciptype GFS/GFDL calpreciptype Main +!>\defgroup gfs_calpreciptype GFS Precipitation Type Diagnostics Module !! \brief If dominant precip type is requested (i.e., Zhao-Carr MP scheme), 4 more algorithms in calpreciptype() !! will be called. the tallies are then summed in calwxt_dominant(). For GFDL cloud MP scheme, determine convective !! rain/snow by surface temperature; and determine explicit rain/snow by rain/snow coming out directly from MP. diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 index c4295871f..c0bfef12b 100644 --- a/physics/GFS_debug.F90 +++ b/physics/GFS_debug.F90 @@ -174,7 +174,6 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank,omprank, blkno, 'Sfcprop%f10m' , Sfcprop%f10m) call print_var(mpirank,omprank, blkno, 'Sfcprop%tprcp' , Sfcprop%tprcp) call print_var(mpirank,omprank, blkno, 'Sfcprop%srflag' , Sfcprop%srflag) - call print_var(mpirank,omprank, blkno, 'Sfcprop%sr' , Sfcprop%sr) call print_var(mpirank,omprank, blkno, 'Sfcprop%slc' , Sfcprop%slc) call print_var(mpirank,omprank, blkno, 'Sfcprop%smc' , Sfcprop%smc) call print_var(mpirank,omprank, blkno, 'Sfcprop%stc' , Sfcprop%stc) @@ -321,10 +320,16 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank,omprank, blkno, 'Diag%epi ', Diag%epi) call print_var(mpirank,omprank, blkno, 'Diag%smcwlt2 ', Diag%smcwlt2) call print_var(mpirank,omprank, blkno, 'Diag%smcref2 ', Diag%smcref2) + call print_var(mpirank,omprank, blkno, 'Diag%sr ', Diag%sr) call print_var(mpirank,omprank, blkno, 'Diag%tdomr ', Diag%tdomr) call print_var(mpirank,omprank, blkno, 'Diag%tdomzr ', Diag%tdomzr) call print_var(mpirank,omprank, blkno, 'Diag%tdomip ', Diag%tdomip) call print_var(mpirank,omprank, blkno, 'Diag%tdoms ', Diag%tdoms) + if (Model%lsm == Model%lsm_ruc) then + call print_var(mpirank,omprank, blkno, 'Diag%wet1 ', Sfcprop%wetness) + else + call print_var(mpirank,omprank, blkno, 'Diag%wet1 ', Diag%wet1) + end if call print_var(mpirank,omprank, blkno, 'Diag%skebu_wts ', Diag%skebu_wts) call print_var(mpirank,omprank, blkno, 'Diag%skebv_wts ', Diag%skebv_wts) call print_var(mpirank,omprank, blkno, 'Diag%sppt_wts ', Diag%sppt_wts) diff --git a/physics/GFS_phys_time_vary.fv3.F90 b/physics/GFS_phys_time_vary.fv3.F90 index 76b4eead2..f66a43675 100644 --- a/physics/GFS_phys_time_vary.fv3.F90 +++ b/physics/GFS_phys_time_vary.fv3.F90 @@ -2,8 +2,9 @@ !! Contains code related to GFS physics suite setup (physics part of time_vary_step) !>\defgroup mod_GFS_phys_time_vary GFS Physics Time Update -!! This module contains GFS physics time vary subroutines including ozone, h2o, i -!! aerosol and IN&CCN updates. +!! This module contains GFS physics time vary subroutines including ozone, stratospheric water vapor, +!! aerosol, IN&CCN and surface properties updates. +!> @{ module GFS_phys_time_vary #ifdef OPENMP @@ -42,6 +43,8 @@ module GFS_phys_time_vary !! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | !! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | !! +!>\section gen_GFS_phys_time_vary_init GFS_phys_time_vary_init General Algorithm +!! @{ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, errflg) use GFS_typedefs, only: GFS_control_type, GFS_data_type, GFS_interstitial_type @@ -111,6 +114,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e !$OMP sections !$OMP section +!> - Call read_o3data() to read ozone data call read_o3data (Model%ntoz, Model%me, Model%master) ! Consistency check that the hardcoded values for levozp and @@ -130,6 +134,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e end if !$OMP section +!> - Call read_h2odata() to read stratospheric water vapor data call read_h2odata (Model%h2o_phys, Model%me, Model%master) ! Consistency check that the hardcoded values for levh2o and @@ -149,6 +154,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e end if !$OMP section +!> - Call read_aerdata() to read aerosol climatology if (Model%aero_in) then ! Consistency check that the value for ntrcaerm set in GFS_typedefs.F90 ! and used to allocate Tbd%aer_nm matches the value defined in aerclm_def @@ -173,6 +179,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e endif !$OMP section +!> - Call read_cidata() to read IN and CCN data if (Model%iccn) then call read_cidata ( Model%me, Model%master) ! No consistency check needed for in/ccn data, all values are @@ -204,7 +211,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e end if - !--- read in and initialize ozone +!> - Call setindxoz() to initialize ozone data if (Model%ntoz > 0) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -214,7 +221,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e !$OMP end do endif - !--- read in and initialize stratospheric water +!> - Call setindxh2o() to initialize stratospheric water vapor data if (Model%h2o_phys) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -224,7 +231,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e !$OMP end do endif - !--- read in and initialize aerosols +!> - Call setindxaer() to initialize aerosols data if (Model%aero_in) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -236,7 +243,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e !$OMP end do endif - !--- read in and initialize IN and CCN +!> - Call setindxci() to initialize IN and CCN data if (Model%iccn) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -267,6 +274,7 @@ subroutine GFS_phys_time_vary_init (Data, Model, Interstitial, nthrds, errmsg, e is_initialized = .true. end subroutine GFS_phys_time_vary_init +!! @} !> \section arg_table_GFS_phys_time_vary_finalize Argument Table @@ -324,6 +332,8 @@ end subroutine GFS_phys_time_vary_finalize !! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | !! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | !! +!>\section gen_GFS_phys_time_vary_run GFS_phys_time_vary_run General Algorithm +!> @{ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) use mersenne_twister, only: random_setseed, random_number @@ -413,7 +423,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) enddo endif ! imfdeepcnv, cal_re, random_clds - !--- o3 interpolation +!> - Call ozinterpol() to make ozone interpolation if (Model%ntoz > 0) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -424,7 +434,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) !$OMP end do endif - !--- h2o interpolation +!> - Call h2ointerpol() to make stratospheric water vapor data interpolation if (Model%h2o_phys) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -435,7 +445,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) !$OMP end do endif - !--- aerosol interpolation +!> - Call aerinterpol() to make aerosol interpolation if (Model%aero_in) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -450,7 +460,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) !$OMP end do endif - !--- ICCN interpolation +!> - Call ciinterpol() to make IN and CCN data interpolation if (Model%iccn) then !$OMP do schedule (dynamic,1) do nb = 1, nblks @@ -466,7 +476,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) !$OMP end parallel - !--- repopulate specific time-varying sfc properties for AMIP/forecast runs +!> - Call gcycle() to repopulate specific time-varying surface properties for AMIP/forecast runs if (Model%nscyc > 0) then if (mod(Model%kdt,Model%nscyc) == 1) THEN call gcycle (nblks, Model, Data(:)%Grid, Data(:)%Sfcprop, Data(:)%Cldprop) @@ -500,5 +510,7 @@ subroutine GFS_phys_time_vary_run (Data, Model, nthrds, errmsg, errflg) endif end subroutine GFS_phys_time_vary_run +!> @} end module GFS_phys_time_vary +!> @} diff --git a/physics/GFS_rad_time_vary.fv3.F90 b/physics/GFS_rad_time_vary.fv3.F90 index ac96e78d0..22be34b51 100644 --- a/physics/GFS_rad_time_vary.fv3.F90 +++ b/physics/GFS_rad_time_vary.fv3.F90 @@ -10,14 +10,13 @@ module GFS_rad_time_vary contains -!>\defgroup GFS_rad_time_vary GFS RRTMG Update -!!\ingroup RRTMG -!! @{ !! \section arg_table_GFS_rad_time_vary_init Argument Table !! subroutine GFS_rad_time_vary_init end subroutine GFS_rad_time_vary_init +!>\defgroup mod_GFS_rad_time_vary GFS Radiation Time Update +!> @{ !> \section arg_table_GFS_rad_time_vary_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | !! |-------------------|--------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-----------------------|-----------|--------|----------| @@ -105,10 +104,10 @@ subroutine GFS_rad_time_vary_run (Model, Data, nthrds, errmsg, errflg) endif end subroutine GFS_rad_time_vary_run +!> @} !> \section arg_table_GFS_rad_time_vary_finalize Argument Table !! subroutine GFS_rad_time_vary_finalize() end subroutine GFS_rad_time_vary_finalize -!! @} end module GFS_rad_time_vary diff --git a/physics/aer_cloud.F b/physics/aer_cloud.F index 1c6e27442..60df592b6 100644 --- a/physics/aer_cloud.F +++ b/physics/aer_cloud.F @@ -158,10 +158,6 @@ end subroutine aer_cloud_init !!\param dpre_in mass-weighted diameter of prexisting ice crystals (m) !!\param ccn_diagr8 array of supersaturations for CCN diagnostics (in-out) !!\param Ndropr8 Current droplet number concentration (\f$Kg^{-1}\f$) -!!\param qc Liquid water mixing ratio (Kg/Kg) -!!\param use_average_v .false. integrate over the updraft distribution. True: use the mean vertical velocity -!!\param CCN_param CCN activation parameterization. 1- Fountoukis and Nenes (2005), 2-Abdul_Razzak and Ghan (2002) (def = 2) -!!\param IN_param IN activation spectrum (default is 5) !!\param cdncr8 Activated cloud droplet number concentration (Kg-1) !!\param smaxliqr8 Maximum supersaturation w.r.t liquid during droplet activation !!\param incr8 Nucleated ice crystal concentration (Kg-1) @@ -172,14 +168,20 @@ end subroutine aer_cloud_init !!\param Ncdepr8 Nucleated nc by deposition ice nucleation (Kg-1) !!\param Ncdhfr8 Nucleated nc by immersion in aerosol (Kg -1) !!\param sc_icer8 Critical saturation ratio in cirrus -!!\param fdust_depr8 Fraction of deposition ice nuclei that are dust !!\param fdust_immr8 Fraction of immersion mixed-phase ice nuclei that are dust +!!\param fdust_depr8 Fraction of deposition ice nuclei that are dust !!\param fdust_dhfr8 Fraction of immersion ice nuclei that are dust (not mixed-phase) !!\param nlimr8 Limiting ice nuclei concentration (m-3) - -!=================================================================================== - - +!!\param use_average_v .false. integrate over the updraft distribution. True: use the mean vertical velocity +!!\param CCN_param CCN activation parameterization. 1- Fountoukis and Nenes (2005), 2-Abdul_Razzak and Ghan (2002) (def = 2) +!!\param IN_param IN activation spectrum (default is 5) +!!\param fd_dust +!!\param fd_soot +!!\param pfrz_inc_r8 +!!\param sigma_nuc +!!\param rhi_cell +!!\param nccn +!! subroutine aerosol_activate(tparc_in, pparc_in, sigwparc_in, & & wparc_ls, Aer_Props, npre_in, dpre_in, ccn_diagr8, Ndropr8, & & cdncr8, smaxliqr8, incr8, smaxicer8, nheticer8, INimmr8, & diff --git a/physics/cnvc90.f b/physics/cnvc90.f index 08dbbbc9d..1e95148be 100644 --- a/physics/cnvc90.f +++ b/physics/cnvc90.f @@ -12,7 +12,7 @@ module cnvc90 subroutine cnvc90_init() end subroutine cnvc90_init -!>\defgroup GFS_cnvc90 GFS cnvc90 Main +!>\defgroup GFS_cnvc90 GFS Convective Cloud Diagnostics Module !> @{ !! This module contains the calculation of fraction of convective cloud, !! pressure at bottom of convective cloud and at top of convective @@ -37,7 +37,7 @@ end subroutine cnvc90_init !! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | !! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | !! -!>\section gen_cnvc90_run GFS cnvc90_run General Algorithm +! \section gen_cnvc_run GFS cnvc90_run General Algorithm SUBROUTINE cnvc90_run(CLSTP,IM,IX,RN,KBOT,KTOP,KM,PRSI, & & ACV,ACVB,ACVT,CV,CVB,CVT,errmsg,errflg) diff --git a/physics/cs_conv.F90 b/physics/cs_conv.F90 index 2d88200c3..d59f27656 100644 --- a/physics/cs_conv.F90 +++ b/physics/cs_conv.F90 @@ -256,7 +256,7 @@ end subroutine cs_conv_init subroutine cs_conv_finalize() end subroutine cs_conv_finalize -!>\defgroup cs_scheme CPT Chikira-Sugiyama Cumulus Scheme Module +!>\defgroup cs_scheme Chikira-Sugiyama Cumulus Scheme Module !> \brief The subroutine contains the main driver for Chikira-Sugiyama convective scheme. !! !! \author Minoru Chikira @@ -531,13 +531,15 @@ subroutine cs_conv_run(IM , IJSDIM , KMAX , ntracp1 , NN, & enddo !DD following adapted from ras -!> -# Following RAS, separate total condensate to ice/water separately -!! - The ratio of ice cloud to cloud water is determined by a linear function +!> -# Following the Relaxed Arakawa Schubert Scheme (RAS; +!! Moorthi and Suarez 1992 \cite moorthi_and_suarez_1992 ), +!! separate total condensate between ice and water. +!! The ratio of cloud ice to cloud water is determined by a linear function !! of temperature: !!\f[ !! F_i(T)= (T_2-T)/(T_2-T_1) !!\f] -!! where T is temperature; \f$T_1\f$ and \f$T_2\f$ are set as tcf=263.16 +!! where T is temperature, and\f$T_1\f$ and \f$T_2\f$ are set as tcf=263.16 !! and tf= 233.16 if (clw(1,1,2) <= -999.0) then ! input ice/water are together do k=1,kmax @@ -572,7 +574,7 @@ subroutine cs_conv_run(IM , IJSDIM , KMAX , ntracp1 , NN, & ! !*************************************************************************************** ! -!> -# Calculate temperature at interfaces. +!> -# Calculate temperature at interfaces ! DO K=2,KMAX @@ -589,7 +591,7 @@ subroutine cs_conv_run(IM , IJSDIM , KMAX , ntracp1 , NN, & GDTM(I,1) = GDT(I,1) ! Is this a good approximation ? - Moorthi ENDDO -!> -# Initialize the sigma diagnostics. +!> -# Initialize the sigma diagnostics do n=1,nctp do k=1,kmax do i=ists,iens @@ -603,7 +605,7 @@ subroutine cs_conv_run(IM , IJSDIM , KMAX , ntracp1 , NN, & enddo enddo ! -!> -# Call cs_cumlus() for CS cumulus parameterization. +!> -# Call cs_cumlus() for the main CS cumulus parameterization call CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions otspt(1:ntr,1), otspt(1:ntr,2), & lprnt , ipr , & @@ -736,7 +738,7 @@ subroutine cs_conv_run(IM , IJSDIM , KMAX , ntracp1 , NN, & endif enddo -!> -# Multiplying mass fluxes by the time step +!> -# Multiply mass fluxes by the time step do k=1,kmax do i=1,ijsdim @@ -768,7 +770,7 @@ end subroutine cs_conv_run !************************************************************************ !>\ingroup cs_scheme -!! This subroutine includes cumulus parameterization with +!! Main subroutine for the cumulus parameterization with !! state-dependent entrainment rate developed by Minoru Chikira. !! !! - This routine works as the prognostic Arakawa-Schubert scheme @@ -777,7 +779,7 @@ end subroutine cs_conv_run !! - Specify OPT_CUMBGT to check water and energy budget. !! - Specify OPT_CUMCHK to check range of output values. !! -!! History: +!! History(yy/mm/dd): !! - 08/09/19(chikira) MIROC4.1 !! - 08/10/30(hiro) CMT modified !! - 08/11/11(chikira) Neggers et al. (2002) @@ -1102,8 +1104,8 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions enddo enddo !> -# Compute layer saturate moisture \f$Q_i\f$(GDQS) and -!! saturate moist static energy GDHS (see appendix B in -!! Chirika and Sugiyama (2010) \cite Chikira_2010) +!! saturate moist static energy (GDHS; see Appendix B in +!! Chikira and Sugiyama (2010) \cite Chikira_2010) DO K=1,KMAX DO I=ISTS,IENS esat = min(gdp(i,k), fpvs(gdt(i,k))) @@ -1137,7 +1139,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions !DDsigma - arguments added to get subcloud profiles in updraft ! so AW eddy flux tendencies can be computed -!> -# Call cumbas() to compute cloud base properties. +!> -# Call cumbas() to compute cloud base properties CALL CUMBAS(IJSDIM, KMAX , & !DD dimensions KB , GCYM(1,1,1) , KBMX , & ! output ntr , ntrq , & @@ -1150,7 +1152,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ISTS , IENS , & !) ! input gctbl, gcqbl,gdq,gcwbl, gcqlbl, gcqibl, gctrbl) ! sub cloud tendencies ! -!> -# Compute CAPE and CIN. +!> -# Compute CAPE and CIN ! DO I=ISTS,IENS CAPE(i) = zero @@ -1181,7 +1183,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ENDDO !DDsigma some initialization before summing over cloud type -!> -# Initialization before summing over cloud type +!> -# Initialize variables before summing over cloud types do k=1,kmax ! Moorthi do i=1,ijsdim lamdaprod(i,k) = one @@ -1221,7 +1223,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ! before and after CUMUP (i.e. here), and inside the routine, in ! particular: gctm, gcqm, gcwm, gchm, gcwt, gclm, gcim,gctrm ! also, inside, check that no reads/writes out of bounds occur *DH -!> -# Call cumup() to compute in-cloud properties. +!> -# Call cumup() to compute in-cloud properties CALL CUMUP(IJSDIM, KMAX, NTR, ntrq, & !DD dimensions ACWF , & ! output GCLZ , GCIZ , GPRCIZ , GSNWIZ, & ! output @@ -1242,7 +1244,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions gctm , gcqm, gcwm, gchm, gcwt, gclm, gcim, gctrm, & ! additional incloud profiles and cloud top total water lprnt , ipr ) ! -!> -# Call cumbmx() to compute cloud base mass flux. +!> -# Call cumbmx() to compute cloud base mass flux CALL CUMBMX(IJSDIM, KMAX, & !DD dimensions CBMFX(1,CTP), & ! modified ACWF , GCYT(1,CTP), GDZM , & ! input @@ -1255,7 +1257,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions do i=ISTS,IENS if (flx_form) then -!> -# Initialize eddy fluxes for cloud type ctp +!> -# Initialize eddy fluxes for cloud types do k=1,kmax+1 sfluxtem(k) = zero qvfluxtem(k) = zero @@ -1278,7 +1280,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions km1 = k - 1 rhs_h = zero rhs_q = zero -!> -# Get environment variables interpolated to layer interface +!> -# Interpolate environment variables to layer interface GDQM = half * (GDQ(I,K,1) + GDQ(I,KM1,1)) ! as computed in cumup ! GDwM = half * (GDw(I,K) + GDw(I,KM1 )) GDlM = half * (GDQ(I,K,3) + GDQ(I,KM1,3)) @@ -1290,9 +1292,9 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions if (do_aw) then -!> -# Compute lamda for a cloud type (eqn 23 of Arakawa and Wu (2013)), -!! and then updraft area fraction -!! (sigmai, eqn 12 of Arakawa and We (2013)) +!> -# Compute lamda for a cloud type and then updraft area fraction +!! (sigmai) following Equations 23 and 12 of +!! Arakawa and Wu (2013) \cite arakawa_and_wu_2013 , respectively lamdai = mflx_e * rair * gdtm(i,k)*(one+epsvt*gdqm) & / (gdpm(i,k)*wcv(i,k)) @@ -1314,7 +1316,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ! fsigma = 1.0 ! no aw effect, comment following lines to undo AW fsigma = one - sigma(i,k) -!> -# Compute tendencies based on mass flux, and tendencies based on condensation +!> -# Compute tendencies based on mass flux and condensation ! fsigma is the AW reduction of flux tendencies if(k == kbi) then @@ -1424,8 +1426,8 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ! rhs_q = cbmfl*((gcwt(i)-gcqt(i,ctp)) - (gcym(i,k-1)*(gcwm(i,k-1)-gcqm(i,k-1)) + (GDw( I,K-1 )-gdq(i,k-1,1))*(gcyt(i,ctp)-gcym(i,k-1))) ) ! endif -!> -# Compute condesation, total precip production, frozen precip production, -!! heating due to freezing and total temperature tendency due to in cloud microphysics +!> -# Compute condensation, total precipitation production, frozen precipitation production, +!! heating due to freezing, and total temperature tendency due to in-cloud microphysics dqcondtem(i,km1) = -rhs_q ! condensation ! dqprectem(i,km1) = cbmfl * (GPRCIZ(i,k) + GSNWIZ(i,k)) dqprectem(i,km1) = tem * (GPRCIZ(i,k) + GSNWIZ(i,k)) ! total precip production @@ -1453,7 +1455,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions prectermfrz(i,k) = prectermfrz(i,k) + dfrzprectem(i,k) * delpinv frzterm(i,k) = frzterm(i,k) + dtfrztem(i,k) * delpinv -!> -# Compute flux tendencies - compute the vertical flux divergence +!> -# Compute flux tendencies and vertical flux divergence sfluxterm(i,k) = sfluxterm(i,k) - (sfluxtem(k+1) - sfluxtem(k)) * delpinv qvfluxterm(i,k) = qvfluxterm(i,k) - (qvfluxtem(k+1) - qvfluxtem(k)) * delpinv qlfluxterm(i,k) = qlfluxterm(i,k) - (qlfluxtem(k+1) - qlfluxtem(k)) * delpinv @@ -1501,7 +1503,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions enddo ! -!> -# Call cumflx() to compute Cloud Mass Flux & Precip. +!> -# Call cumflx() to compute cloud mass flux and precipitation CALL CUMFLX(IM , IJSDIM, KMAX , & !DD dimensions GMFX0 , GPRCI , GSNWI , CMDET, & ! output QLIQ , QICE , GTPRC0, & ! output @@ -1561,7 +1563,8 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions enddo enddo -!> -# Call cumdwn() to compute cumulus downdraft - Melt & Freeze & Evaporation. +!> -# Call cumdwn() to compute cumulus downdraft and assocated melt, freeze +!! and evaporation CALL CUMDWN(IM , IJSDIM, KMAX , NTR , ntrq , & ! DD dimensions GTT , GTQ , GTU , GTV , & ! modified GMFLX , & ! modified updraft+downdraft flux @@ -1585,7 +1588,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ! enddo ! enddo -!> -# Call cumsbw() to compute cloud subsidence heating. +!> -# Call cumsbw() to compute cloud subsidence heating if (.not. flx_form) then ! Cloud Subsidence Heating ! -----------------------= @@ -1655,7 +1658,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ENDDO ! if(do_aw .and. flx_form) then ! compute AW tendencies -!> -# Compute AW tendencies of T/ql/qi +!> -# Compute AW tendencies of T, ql and qi if(flx_form) then ! compute AW tendencies ! AW lump all heating together, compute qv term do k=1,kmax @@ -1733,7 +1736,7 @@ SUBROUTINE CS_CUMLUS (im , IJSDIM, KMAX , NTR , & !DD dimensions ! enddo ! enddo ! -!> -# Call cumfxr() for tracer mass fixer without detrainment. +!> -# Call cumfxr() for tracer mass fixer without detrainment CALL CUMFXR(IM , IJSDIM, KMAX , NTR , & !DD dimensions GTQ , & ! modified GDQ , DELP , DELTA , KTMXT , IMFXR, & ! input @@ -1856,7 +1859,7 @@ END SUBROUTINE CS_CUMLUS !*********************************************************************** !>\ingroup cs_scheme !! This subroutine calculates cloud base properties. - SUBROUTINE CUMBAS & !< cloud base + SUBROUTINE CUMBAS & ! cloud base ( IJSDIM, KMAX , & !DD dimensions KB , GCYM , KBMX , & ! output ntr , ntrq , & @@ -1878,15 +1881,15 @@ SUBROUTINE CUMBAS & !< cloud base logical lprnt ! ! [OUTPUT] - INTEGER KB (IJSDIM) !< cloud base - REAL(r8) GCYM (IJSDIM, KMAX) !< norm. mass flux (half lev) + INTEGER KB (IJSDIM) ! cloud base + REAL(r8) GCYM (IJSDIM, KMAX) ! norm. mass flux (half lev) INTEGER KBMX - REAL(r8) GCHB (IJSDIM) !< cloud base MSE - REAL(r8) GCWB (IJSDIM) !< cloud base total water - REAL(r8) GCUB (IJSDIM) !< cloud base U - REAL(r8) GCVB (IJSDIM) !< cloud base V - REAL(r8) GCIB (IJSDIM) !< cloud base ice - REAL(r8) GCtrB (IJSDIM,ntrq:ntr) !< cloud base tracer + REAL(r8) GCHB (IJSDIM) ! cloud base MSE + REAL(r8) GCWB (IJSDIM) ! cloud base total water + REAL(r8) GCUB (IJSDIM) ! cloud base U + REAL(r8) GCVB (IJSDIM) ! cloud base V + REAL(r8) GCIB (IJSDIM) ! cloud base ice + REAL(r8) GCtrB (IJSDIM,ntrq:ntr) ! cloud base tracer !DDsigma added to arglist for AW, subcloud updraft profiles: temperature, water vapor ! total water, cloud water, and cloud ice respectively @@ -1894,22 +1897,22 @@ SUBROUTINE CUMBAS & !< cloud base REAL(r8), dimension(ijsdim,kmax,ntrq:ntr) :: gctrbl !DDsigmadiag ! ! [INPUT] - REAL(r8) GDH (IJSDIM, KMAX) !< moist static energy - REAL(r8) GDW (IJSDIM, KMAX) !< total water - REAL(r8) GDq (IJSDIM, KMAX, ntr) !< water vapor and tracer - REAL(r8) GDHS (IJSDIM, KMAX) !< saturate MSE - REAL(r8) GDQS (IJSDIM, KMAX) !< saturate humidity - REAL(r8) GDQI (IJSDIM, KMAX) !< cloud ice - REAL(r8) GDU (IJSDIM, KMAX) !< u-velocity - REAL(r8) GDV (IJSDIM, KMAX) !< v-velocity - REAL(r8) GDZM (IJSDIM, KMAX+1) !< Altitude (half lev) - REAL(r8) GDPM (IJSDIM, KMAX+1) !< pressure (half lev) + REAL(r8) GDH (IJSDIM, KMAX) ! moist static energy + REAL(r8) GDW (IJSDIM, KMAX) ! total water + REAL(r8) GDq (IJSDIM, KMAX, ntr) ! water vapor and tracer + REAL(r8) GDHS (IJSDIM, KMAX) ! saturate MSE + REAL(r8) GDQS (IJSDIM, KMAX) ! saturate humidity + REAL(r8) GDQI (IJSDIM, KMAX) ! cloud ice + REAL(r8) GDU (IJSDIM, KMAX) ! u-velocity + REAL(r8) GDV (IJSDIM, KMAX) ! v-velocity + REAL(r8) GDZM (IJSDIM, KMAX+1) ! Altitude (half lev) + REAL(r8) GDPM (IJSDIM, KMAX+1) ! pressure (half lev) REAL(r8) FDQS (IJSDIM, KMAX) REAL(r8) GAM (IJSDIM, KMAX) INTEGER ISTS, IENS ! ! [INTERNAL WORK] - REAL(r8) CBASE (IJSDIM) !< one over cloud base height + REAL(r8) CBASE (IJSDIM) ! one over cloud base height ! REAL(r8) CBASEP(IJSDIM) ! cloud base pressure REAL(r8) DELZ, GAMX, wrk ! REAL(r8) DELZ, QSL, GAMX, wrk @@ -3932,7 +3935,7 @@ SUBROUTINE CUMSBR & !! Tracer Subsidence END SUBROUTINE CUMSBR !********************************************************************* !>\ingroup cs_scheme -!! This subroutine calculates tracer mass fixer without deterainment +!! This subroutine calculates tracer mass fixer without detrainment. SUBROUTINE CUMFXR & ! Tracer mass fixer ( IM , IJSDIM, KMAX , NTR , & !DD dimensions GTR , & ! modified diff --git a/physics/cs_conv_aw_adj.F90 b/physics/cs_conv_aw_adj.F90 index 82807dbdd..eab2fb411 100644 --- a/physics/cs_conv_aw_adj.F90 +++ b/physics/cs_conv_aw_adj.F90 @@ -1,7 +1,7 @@ !> \file cs_conv_aw_adj.F90 !! This file contains a subroutine to adjusts surface rainrate for conservation for CSAW. -!>\defgroup mod_cs_conv_aw_adj CPT cs_conv_aw_adj Module +!>\defgroup mod_cs_conv_aw_adj CSAW adjustment Module !! This module adjusts surface rainrate for conservation. !> @{ module cs_conv_aw_adj @@ -50,7 +50,7 @@ end subroutine cs_conv_aw_adj_finalize !! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | !! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | !! -!>\section gen_cs_conv_aw_adj_run CPT cs_conv_aw_adj_run General Algorithm +!\section gen_cs_conv_aw_adj_run CPT cs_conv_aw_adj_run General Algorithm subroutine cs_conv_aw_adj_run(im, levs, do_cscnv, do_aw, do_shoc, & ntrac, ncld, ntcw, ntclamt, nncl, con_g, sigmafrac, & gt0, gq0, save_t, save_q, prsi, cldfrac, subcldfrac, & diff --git a/physics/cu_gf_deep.F90 b/physics/cu_gf_deep.F90 index 338bf4cb1..4c357d787 100644 --- a/physics/cu_gf_deep.F90 +++ b/physics/cu_gf_deep.F90 @@ -1,8 +1,9 @@ !>\file cu_gf_deep.F90 !! This file is the Grell-Freitas deep convection scheme. -!>\defgroup cu_gf_deep_group GSD Grell-Freitas Deep Convection Main +!>\defgroup cu_gf_deep_group Grell-Freitas Deep Convection Module !>\ingroup cu_gf_group +!! This is Grell-Freitas deep convection scheme module module cu_gf_deep use machine , only : kind_phys real(kind=kind_phys), parameter::g=9.81 @@ -51,57 +52,57 @@ module cu_gf_deep !> @{ subroutine cu_gf_deep_run( & itf,ktf,its,ite, kts,kte & - ,dicycle & !< diurnal cycle flag - ,ichoice & !< choice of closure, use "0" for ensemble average - ,ipr & !< this flag can be used for debugging prints - ,ccn & !< not well tested yet - ,dtime & !< - ,imid & !< flag to turn on mid level convection - ,kpbl & !< level of boundary layer height - ,dhdt & !< boundary layer forcing (one closure for shallow) - ,xland & !< land mask - ,zo & !< heights above surface - ,forcing & !< only diagnostic - ,t & !< t before forcing - ,q & !< q before forcing - ,z1 & !< terrain - ,tn & !< t including forcing - ,qo & !< q including forcing - ,po & !< pressure (mb) - ,psur & !< surface pressure (mb) - ,us & !< u on mass points - ,vs & !< v on mass points - ,rho & !< density - ,hfx & !< w/m2, positive upward - ,qfx & !< w/m2, positive upward - ,dx & !< dx is grid point dependent here - ,mconv & !< integrated vertical advection of moisture - ,omeg & !< omega (pa/s) - ,csum & !< used to implement memory, set to zero if not avail - ,cnvwt & !< gfs needs this - ,zuo & !< nomalized updraft mass flux - ,zdo & !< nomalized downdraft mass flux - ,zdm & !< nomalized downdraft mass flux from mid scheme - ,edto & !< - ,edtm & !< - ,xmb_out & !< the xmb's may be needed for dicycle - ,xmbm_in & !< - ,xmbs_in & !< - ,pre & !< - ,outu & !< momentum tendencies at mass points - ,outv & !< - ,outt & !< temperature tendencies - ,outq & !< q tendencies - ,outqc & !< ql/qice tendencies - ,kbcon & !< - ,ktop & !< - ,cupclw & !< used for direct coupling to radiation, but with tuning factors - ,ierr & !< ierr flags are error flags, used for debugging - ,ierrc & ! - Call cup_env() to calculate moist static energy, heights, qes ! call cup_env(z,qes,he,hes,t,q,po,z1, & psur,ierr,tcrit,-1, & @@ -558,7 +559,7 @@ subroutine cu_gf_deep_run( & its,ite, kts,kte) ! -!--- environmental values on cloud levels +!> - Call cup_env_clev() to calculate environmental values on cloud levels ! call cup_env_clev(t,qes,q,he,hes,z,po,qes_cup,q_cup,he_cup, & hes_cup,z_cup,p_cup,gamma_cup,t_cup,psur, & @@ -571,7 +572,7 @@ subroutine cu_gf_deep_run( & itf,ktf, & its,ite, kts,kte) !---meltglac------------------------------------------------- -!--- partition between liq/ice cloud contents +!> - Call get_partition_liq_ice() to calculate partition between liq/ice cloud contents call get_partition_liq_ice(ierr,tn,po_cup,p_liq_ice,melting_layer,& itf,ktf,its,ite,kts,kte,cumulus) !---meltglac------------------------------------------------- @@ -596,7 +597,7 @@ subroutine cu_gf_deep_run( & enddo 25 continue ! -!--- level where detrainment for downdraft starts +!> - Compute the level where detrainment for downdraft starts (\p kdet) ! do k=kts,ktf if(zo_cup(i,k).gt.z_detr+z1(i))then @@ -611,7 +612,7 @@ subroutine cu_gf_deep_run( & ! ! ! -!------- determine level with highest moist static energy content - k22 +!> - Determine level with highest moist static energy content (\p k22) ! start_k22=2 do 36 i=its,itf @@ -627,7 +628,8 @@ subroutine cu_gf_deep_run( & endif 36 continue ! -!--- determine the level of convective cloud base - kbcon +!> - call get_cloud_bc() and cup_kbcon() to determine the +!! level of convective cloud base (\p kbcon) ! do i=its,itf @@ -720,7 +722,7 @@ subroutine cu_gf_deep_run( & endif enddo ! -!-- get normalized mass flux, entrainment and detrainmentrates for updraft +!> - Call rates_up_pdf() to get normalized mass flux, entrainment and detrainmentrates for updraft ! i=0 !- for mid level clouds we do not allow clouds taller than where stability @@ -757,7 +759,7 @@ subroutine cu_gf_deep_run( & endif enddo ! -! calculate mass entrainment and detrainment +!> - Call get_lateral_massflux() to calculate mass entrainment and detrainment ! if(imid.eq.1)then call get_lateral_massflux(itf,ktf, its,ite, kts,kte & @@ -930,7 +932,7 @@ subroutine cu_gf_deep_run( & enddo enddo ! - !--- calculate moisture properties of updraft +!> - Call cup_up_moisture() to calculate moisture properties of updraft ! if(imid.eq.1)then call cup_up_moisture('mid',ierr,zo_cup,qco,qrco,pwo,pwavo, & @@ -1250,7 +1252,7 @@ subroutine cu_gf_deep_run( & endif enddo ! -!--- calculate moisture properties of downdraft +!> - Call cup_dd_moisture() to calculate moisture properties of downdraft ! call cup_dd_moisture(ierrc,zdo,hcdo,heso_cup,qcdo,qeso_cup, & pwdo,qo_cup,zo_cup,dd_massentro,dd_massdetro,jmin,ierr,gammao_cup, & @@ -1286,7 +1288,7 @@ subroutine cu_gf_deep_run( & enddo enddo ! -!--- calculate workfunctions for updrafts +!> - Call cup_up_aa0() to calculate workfunctions for updrafts ! call cup_up_aa0(aa0,z,zu,dby,gamma_cup,t_cup, & kbcon,ktop,ierr, & @@ -1353,6 +1355,7 @@ subroutine cu_gf_deep_run( & t_star=1. !-- calculate pcape from bl forcing only +!> - Call cup_up_aa1bl() to calculate ECMWF version diurnal cycle closure call cup_up_aa1bl(aa1_bl,t,tn,q,qo,dtime, & zo_cup,zuo,dbyo_bl,gammao_cup_bl,tn_cup_bl, & kbcon,ktop,ierr, & @@ -1463,7 +1466,7 @@ subroutine cu_gf_deep_run( & axx(:)=aa1(:) ! -!--- determine downdraft strength in terms of windshear +!> - Call cup_dd_edt() to determine downdraft strength in terms of windshear ! call cup_dd_edt(ierr,us,vs,zo,ktop,kbcon,edt,po,pwavo, & pwo,ccn,pwevo,edtmax,edtmin,edtc,psum,psumh, & @@ -1473,7 +1476,8 @@ subroutine cu_gf_deep_run( & if(ierr(i)/=0)cycle edto(i)=edtc(i,1) enddo - !--- get melting profile + +!> - Call get_melting_profile() to get melting profile call get_melting_profile(ierr,tn_cup,po_cup, p_liq_ice,melting_layer,qrco & ,pwo,edto,pwdo,melting & ,itf,ktf,its,ite, kts,kte, cumulus ) @@ -2031,7 +2035,6 @@ end subroutine cu_gf_deep_run !> @} !>\ingroup cu_gf_deep_group -!> This subroutine calculates subroutine cup_dd_edt(ierr,us,vs,z,ktop,kbcon,edt,p,pwav, & pw,ccn,pwev,edtmax,edtmin,edtc,psum2,psumh, & rho,aeroevap,itf,ktf, & @@ -2157,9 +2160,6 @@ subroutine cup_dd_edt(ierr,us,vs,z,ktop,kbcon,edt,p,pwav, & end subroutine cup_dd_edt !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!!\param ierrc -!!\param zd subroutine cup_dd_moisture(ierrc,zd,hcd,hes_cup,qcd,qes_cup, & pwd,q_cup,z_cup,dd_massentr,dd_massdetr,jmin,ierr, & gamma_cup,pwev,bu,qrcd, & @@ -2306,8 +2306,24 @@ subroutine cup_dd_moisture(ierrc,zd,hcd,hes_cup,qcd,qes_cup, & end subroutine cup_dd_moisture !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!!\param +!!\param z environmental heights +!!\param qes environmental saturation mixing ratio +!!\param he environmental moist static energy +!!\param hes environmental saturation moist static energy +!!\param t environmental temperature +!!\param q environmental mixing ratio +!!\param p environmental pressure +!!\param z1 terrain elevation +!!\param psur surface pressure +!!\param ierr error value, maybe modified in this routine +!!\param tcrit 258.K +!!\param itest +!!\param itf +!!\param ktf +!!\param its +!!\param ite +!!\param kts +!!\param kte subroutine cup_env(z,qes,he,hes,t,q,p,z1, & psur,ierr,tcrit,itest, & itf,ktf, & @@ -2320,18 +2336,6 @@ subroutine cup_env(z,qes,he,hes,t,q,p,z1, & itf,ktf, & its,ite, kts,kte ! - ! ierr error value, maybe modified in this routine - ! q = environmental mixing ratio - ! qes = environmental saturation mixing ratio - ! t = environmental temp - ! tv = environmental virtual temp - ! p = environmental pressure - ! z = environmental heights - ! he = environmental moist static energy - ! hes = environmental saturation moist static energy - ! psur = surface pressure - ! z1 = terrain elevation - ! ! real(kind=kind_phys), dimension (its:ite,kts:kte) & ,intent (in ) :: & @@ -2439,8 +2443,25 @@ subroutine cup_env(z,qes,he,hes,t,q,p,z1, & end subroutine cup_env !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param +!!\param t environmental temperature +!!\param qes environmental saturation mixing ratio +!!\param q environmental mixing ratio +!!\param he environmental moist static energy +!!\param hes environmental saturation moist static energy +!!\param z environmental heights +!!\param p environmental pressure +!!\param qes_cup environmental saturation mixing ratio on cloud levels +!!\param q_cup environmental mixing ratio on cloud levels +!!\param he_cup environmental moist static energy on cloud levels +!!\param hes_cup environmental saturation moist static energy on cloud levels +!!\param z_cup environmental heights on cloud levels +!!\param p_cup environmental pressure on cloud levels +!!\param gamma_cup gamma on cloud levels +!!\param t_cup environmental temperature on cloud levels +!!\param psur surface pressure +!!\param ierr error value, maybe modified in this routine +!!\param z1 terrain elevation +!!\param itf,ktf,its,ite,kts,kte horizontal and vertical dimension subroutine cup_env_clev(t,qes,q,he,hes,z,p,qes_cup,q_cup, & he_cup,hes_cup,z_cup,p_cup,gamma_cup,t_cup,psur, & ierr,z1, & @@ -2453,26 +2474,6 @@ subroutine cup_env_clev(t,qes,q,he,hes,z,p,qes_cup,q_cup, & ,intent (in ) :: & itf,ktf, & its,ite, kts,kte - ! - ! ierr error value, maybe modified in this routine - ! q = environmental mixing ratio - ! q_cup = environmental mixing ratio on cloud levels - ! qes = environmental saturation mixing ratio - ! qes_cup = environmental saturation mixing ratio on cloud levels - ! t = environmental temp - ! t_cup = environmental temp on cloud levels - ! p = environmental pressure - ! p_cup = environmental pressure on cloud levels - ! z = environmental heights - ! z_cup = environmental heights on cloud levels - ! he = environmental moist static energy - ! he_cup = environmental moist static energy on cloud levels - ! hes = environmental saturation moist static energy - ! hes_cup = environmental saturation moist static energy on cloud levels - ! gamma_cup = gamma on cloud levels - ! psur = surface pressure - ! z1 = terrain elevation - ! ! real(kind=kind_phys), dimension (its:ite,kts:kte) & ,intent (in ) :: & @@ -2543,8 +2544,6 @@ subroutine cup_env_clev(t,qes,q,he,hes,z,p,qes_cup,q_cup, & end subroutine cup_env_clev !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2,ierr3,& xf_ens,axx,forcing,maxens3,mconv,rand_clos, & p_cup,ktop,omeg,zd,zdm,k22,zu,pr_ens,edt,edtm,kbcon, & @@ -2927,8 +2926,6 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 end subroutine cup_forcing_ens_3d !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_kbcon(ierrc,cap_inc,iloop_in,k22,kbcon,he_cup,hes_cup, & hkb,ierr,kbmax,p_cup,cap_max, & ztexec,zqexec, & @@ -3068,8 +3065,6 @@ subroutine cup_kbcon(ierrc,cap_inc,iloop_in,k22,kbcon,he_cup,hes_cup, & end subroutine cup_kbcon !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_maximi(array,ks,ke,maxx,ierr, & itf,ktf, & its,ite, kts,kte ) @@ -3126,8 +3121,6 @@ subroutine cup_maximi(array,ks,ke,maxx,ierr, & end subroutine cup_maximi !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_minimi(array,ks,kend,kt,ierr, & itf,ktf, & its,ite, kts,kte ) @@ -3179,8 +3172,6 @@ subroutine cup_minimi(array,ks,kend,kt,ierr, & end subroutine cup_minimi !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_up_aa0(aa0,z,zu,dby,gamma_cup,t_cup, & kbcon,ktop,ierr, & itf,ktf, & @@ -3253,8 +3244,6 @@ end subroutine cup_up_aa0 !==================================================================== !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine neg_check(name,j,dt,q,outq,outt,outu,outv, & outqc,pret,its,ite,kts,kte,itf,ktf,ktop) @@ -3603,8 +3592,6 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & end subroutine cup_output_ens_3d !------------------------------------------------------- !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine cup_up_moisture(name,ierr,z_cup,qc,qrc,pw,pwav, & p_cup,kbcon,ktop,dby,clw_all,xland1, & q,gamma_cup,zu,qes_cup,k22,qe_cup, & @@ -3916,8 +3903,6 @@ end subroutine cup_up_moisture !-------------------------------------------------------------------- !>\ingroup cu_gf_deep_group -!> This function calculates -!>\param real function satvap(temp2) implicit none real(kind=kind_phys) :: temp2, temp, toot, toto, eilog, tsot, & @@ -3943,8 +3928,6 @@ real function satvap(temp2) end function !-------------------------------------------------------------------- !>\ingroup cu_gf_deep_group -!> This subroutine calcualtes -!>\param subroutine get_cloud_bc(mzp,array,x_aver,k22,add) implicit none integer, intent(in) :: mzp,k22 @@ -3971,8 +3954,6 @@ subroutine get_cloud_bc(mzp,array,x_aver,k22,add) end subroutine get_cloud_bc !======================================================================================== !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine rates_up_pdf(rand_vmas,ipr,name,ktop,ierr,p_cup,entr_rate_2d,hkbo,heo,heso_cup,z_cup, & xland,kstabi,k22,kbcon,its,ite,itf,kts,kte,ktf,zuo,kpbl,ktopdby,csum,pmin_lev) implicit none @@ -4086,8 +4067,6 @@ subroutine rates_up_pdf(rand_vmas,ipr,name,ktop,ierr,p_cup,entr_rate_2d,hkbo,heo end subroutine rates_up_pdf !------------------------------------------------------------------------- !>\ingroup cu_gf_deep_group -!> This subroutine calculates -!>\param subroutine get_zu_zd_pdf_fim(kklev,p,rand_vmas,zubeg,ipr,xland,zuh2,draft,ierr,kb,kt,zu,kts,kte,ktf,max_mass,kpbli,csum,pmin_lev) implicit none @@ -4595,7 +4574,6 @@ function deriv3(xx, xi, yi, ni, m) end function deriv3 !============================================================================================= !>\ingroup cu_gf_deep_group -!> This subroutine calcualtes subroutine get_lateral_massflux(itf,ktf, its,ite, kts,kte & ,ierr,ktop,zo_cup,zuo,cd,entr_rate_2d & ,up_massentro, up_massdetro ,up_massentr, up_massdetr & @@ -4713,7 +4691,6 @@ end subroutine get_lateral_massflux !---meltglac------------------------------------------------- !------------------------------------------------------------------------------------ !>\ingroup cu_gf_deep_group -!> This subroutine calculates subroutine get_partition_liq_ice(ierr,tn,po_cup, p_liq_ice,melting_layer & ,itf,ktf,its,ite, kts,kte, cumulus ) implicit none @@ -4805,7 +4782,6 @@ end subroutine get_partition_liq_ice !------------------------------------------------------------------------------------ !>\ingroup cu_gf_deep_group -!> This subroutine calculates subroutine get_melting_profile(ierr,tn_cup,po_cup, p_liq_ice,melting_layer,qrco & ,pwo,edto,pwdo,melting & ,itf,ktf,its,ite, kts,kte, cumulus ) @@ -4880,7 +4856,6 @@ end subroutine get_melting_profile !---meltglac------------------------------------------------- !-----srf-08aug2017-----begin !>\ingroup cu_gf_deep_group -!> This subroutine calculates subroutine get_cloud_top(name,ktop,ierr,p_cup,entr_rate_2d,hkbo,heo,heso_cup,z_cup, & kstabi,k22,kbcon,its,ite,itf,kts,kte,ktf,zuo,kpbl,klcl,hcot) implicit none diff --git a/physics/cu_gf_driver.F90 b/physics/cu_gf_driver.F90 index be084097f..0c92f7af1 100644 --- a/physics/cu_gf_driver.F90 +++ b/physics/cu_gf_driver.F90 @@ -1,5 +1,6 @@ !>\file cu_gf_driver.F90 -!! This file is Grell-Freitas cumulus scheme driver. +!! This file is scale-aware Grell-Freitas cumulus scheme driver. + module cu_gf_driver @@ -62,9 +63,11 @@ end subroutine cu_gf_driver_finalize ! t = current temp (t2di + physics up to now) !=================== -!> \defgroup cu_gf_group GSD Scale-Aware Grell-Freitas Convection Scheme Module -!>\defgroup cu_gf_driver GSD Grell-Freitas Convection Scheme Driver +!> \defgroup cu_gf_group Grell-Freitas Convection Scheme Module +!! This is the Grell-Freitas scale and aerosol aware scheme. +!>\defgroup cu_gf_driver Grell-Freitas Convection Scheme Driver Module !> \ingroup cu_gf_group +!! This is the Grell-Freitas convection scheme driver module. !! \section arg_table_cu_gf_driver_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | !! |----------------|-----------------------------------------------------------|-----------------------------------------------------|---------------|------|-----------|-----------|--------|----------| @@ -267,7 +270,7 @@ subroutine cu_gf_driver_run(tottracer,ntrac,garea,im,ix,km,dt,cactiv, & ! tropics(:)=0 ! -!> - tuning constants for radiation coupling +!> - Set tuning constants for radiation coupling ! tun_rad_shall(:)=.02 tun_rad_mid(:)=.15 @@ -556,6 +559,7 @@ subroutine cu_gf_driver_run(tottracer,ntrac,garea,im,ix,km,dt,cactiv, & do i=its,itf if(xmbs(i).gt.0.)cutens(i)=1. enddo +!> - Call neg_check() for GF shallow convection call neg_check('shallow',ipn,dt,qcheck,outqs,outts,outus,outvs, & outqcs,prets,its,ite,kts,kte,itf,ktf,ktops) endif @@ -637,6 +641,7 @@ subroutine cu_gf_driver_run(tottracer,ntrac,garea,im,ix,km,dt,cactiv, & qcheck(i,k)=qv(i,k) +outqs(i,k)*dt enddo enddo +!> - Call neg_check() for middle GF convection call neg_check('mid',ipn,dt,qcheck,outqm,outtm,outum,outvm, & outqcm,pretm,its,ite,kts,kte,itf,ktf,ktopm) endif @@ -718,6 +723,7 @@ subroutine cu_gf_driver_run(tottracer,ntrac,garea,im,ix,km,dt,cactiv, & qcheck(i,k)=qv(i,k) +(outqs(i,k)+outqm(i,k))*dt enddo enddo +!> - Call neg_check() for deep GF convection call neg_check('deep',ipn,dt,qcheck,outq,outt,outu,outv, & outqc,pret,its,ite,kts,kte,itf,ktf,ktop) ! diff --git a/physics/cu_gf_sh.F90 b/physics/cu_gf_sh.F90 index faca8839f..7f88d0c14 100644 --- a/physics/cu_gf_sh.F90 +++ b/physics/cu_gf_sh.F90 @@ -1,26 +1,44 @@ !>\file cu_gf_sh.F90 -!! This file contains +!! This file contains Grell-Freitas shallow convection scheme. -!>\defgroup cu_gf_sh_group GSD Grell-Freitas Shallow Convection Main +!>\defgroup cu_gf_sh_group Grell-Freitas Shallow Convection Module !> \ingroup cu_gf_group -!! module cup_gf_sh will call shallow convection as described in Grell and +module cu_gf_sh + use machine , only : kind_phys + !real(kind=kind_phys), parameter:: c1_shal=0.0015! .0005 + real(kind=kind_phys), parameter:: c1_shal=0. !0.005! .0005 + real(kind=kind_phys), parameter:: g =9.81 + real(kind=kind_phys), parameter:: cp =1004. + real(kind=kind_phys), parameter:: xlv=2.5e6 + real(kind=kind_phys), parameter:: r_v=461. + real(kind=kind_phys), parameter:: c0_shal=.001 + real(kind=kind_phys), parameter:: fluxtune=1.5 + +contains + +!>\ingroup cu_gf_sh_group +!> GF shallow convection as described in Grell and !! Freitas (2014) \cite grell_and_freitas_2014. input variables are: +!!\param us x wind updated by physics +!!\param vs y wind updated by physics !!\param zo height at model levels !!\param t,tn temperature without and with forcing at model levels !!\param q,qo mixing ratio without and with forcing at model levels !!\param po pressure at model levels (mb) !!\param psur surface pressure (mb) !!\param z1 surface height -!!\param dhdt forcing for boundary layer equilibrium +!!\param dhdt forcing for boundary layer equilibrium !!\param hfx,qfx in w/m2 (positive, if upward from sfc) !!\param kpbl level of boundaty layer height +!!\param rho moist air density !!\param xland land mask (1. for land) -!!\param ichoice which closure to choose +!!\param ichoice which closure to choose !!\n 1: old g !!\n 2: zws !!\n 3: dhdt !!\n 0: average !!\param tcrit parameter for water/ice conversion (258) +!!\param dtime physics time step !!\param zuo normalized mass flux profile !!\param xmb_out base mass flux !!\param kbcon convective cloud base @@ -31,27 +49,18 @@ !!\param outt temperature tendency (k/s) !!\param outq mixing ratio tendency (kg/kg/s) !!\param outqc cloud water/ice tendency (kg/kg/s) +!!\param outu x wind tendency +!!\param outv y wind tendency !!\param pre precip rate (mm/s) !!\param cupclw incloud mixing ratio of cloudwater/ice (for radiation) !! this needs heavy tuning factors, since cloud fraction is -!! not included (kg/kg) +!! not included (kg/kg) !!\param cnvwt required for gfs physics !!\param itf,ktf,its,ite, kts,kte are dimensions -!!\param ztexec,zqexec excess temperature and moisture for updraft -module cu_gf_sh - use machine , only : kind_phys - !real(kind=kind_phys), parameter:: c1_shal=0.0015! .0005 - real(kind=kind_phys), parameter:: c1_shal=0. !0.005! .0005 - real(kind=kind_phys), parameter:: g =9.81 - real(kind=kind_phys), parameter:: cp =1004. - real(kind=kind_phys), parameter:: xlv=2.5e6 - real(kind=kind_phys), parameter:: r_v=461. - real(kind=kind_phys), parameter:: c0_shal=.001 - real(kind=kind_phys), parameter:: fluxtune=1.5 - -contains - +!!\param ipr horizontal index of printed column +!!\param tropics =0 !>\section gen_cu_gf_sh_run GSD cu_gf_sh_run General Algorithm +!> @{ subroutine cu_gf_sh_run ( & us,vs,zo,t,q,z1,tn,qo,po,psur,dhdt,kpbl,rho, & ! input variables, must be supplied hfx,qfx,xland,ichoice,tcrit,dtime, & @@ -276,7 +285,7 @@ subroutine cu_gf_sh_run ( & !- moisture excess zqexec(i) = max(flux_tun(i)*qfx(i)/xlv/(rho(i,1)*zws(i)),0.) endif - !- zws for shallow convection closure (grant 2001) + !> - Calculate zws for shallow convection closure (grant 2001) !- height of the pbl zws(i) = max(0.,flux_tun(i)*0.41*buo_flux*zo(i,kpbl(i))*g/t(i,kpbl(i))) zws(i) = 1.2*zws(i)**.3333 @@ -285,11 +294,11 @@ subroutine cu_gf_sh_run ( & enddo ! -!--- max height(m) above ground where updraft air can originate +!> - Determin max height(m) above ground where updraft air can originate ! zkbmax=3000. ! -!--- calculate moist static energy, heights, qes +!> - Call cup_env() to calculate moist static energy, heights, qes ! call cup_env(z,qes,he,hes,t,q,po,z1, & psur,ierr,tcrit,-1, & @@ -301,7 +310,7 @@ subroutine cu_gf_sh_run ( & its,ite, kts,kte) ! -!--- environmental values on cloud levels +!> - Call cup_env_clev() to calculate environmental values on cloud levels ! call cup_env_clev(t,qes,q,he,hes,z,po,qes_cup,q_cup,he_cup, & hes_cup,z_cup,p_cup,gamma_cup,t_cup,psur, & @@ -342,7 +351,7 @@ subroutine cu_gf_sh_run ( & ! ! ! -!------- determine level with highest moist static energy content - k22 +!> - Determine level with highest moist static energy content (\p k22) ! do 36 i=its,itf if(kpbl(i).gt.3)cap_max(i)=po_cup(i,kpbl(i)) @@ -359,7 +368,8 @@ subroutine cu_gf_sh_run ( & endif 36 continue ! -!--- determine the level of convective cloud base - kbcon +!> - Call get_cloud_bc() and cup_kbcon() to determine the level of +!! convective cloud base (\p kbcon) ! do i=its,itf if(ierr(i).eq.0)then @@ -383,7 +393,8 @@ subroutine cu_gf_sh_run ( & 0,itf,ktf, & its,ite, kts,kte, & z_cup,entr_rate,heo,0) -!--- get inversion layers for cloud tops + +!> - Call cup_minimi() and get_inversion_layers() to get inversion layers for cloud tops call cup_minimi(heso_cup,kbcon,kbmax,kstabi,ierr, & itf,ktf, & its,ite, kts,kte) @@ -427,7 +438,7 @@ subroutine cu_gf_sh_run ( & endif endif enddo -! get normalized mass flux profile +!> - Call rates_up_pdf() to get normalized mass flux profile call rates_up_pdf(rand_vmas,ipr,'shallow',ktop,ierr,po_cup,entr_rate_2d,hkbo,heo,heso_cup,zo_cup, & xland1,kstabi,k22,kbcon,its,ite,itf,kts,kte,ktf,zuo,kpbl,ktopx,kbcon,pmin_lev) do i=its,itf @@ -465,7 +476,7 @@ subroutine cu_gf_sh_run ( & endif enddo ! -! calculate mass entrainment and detrainment +!> - Call get_lateral_massflux() to calculate mass entrainment and detrainment ! call get_lateral_massflux(itf,ktf, its,ite, kts,kte & ,ierr,ktop,zo_cup,zuo,cd,entr_rate_2d & @@ -929,4 +940,5 @@ subroutine cu_gf_sh_run ( & ! enddo end subroutine cu_gf_sh_run +!> @} end module cu_gf_sh diff --git a/physics/docs/ccppv3_doxyfile b/physics/docs/ccppv3_doxyfile index fbd18f515..6933751a4 100644 --- a/physics/docs/ccppv3_doxyfile +++ b/physics/docs/ccppv3_doxyfile @@ -120,7 +120,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_GWDC.txt \ pdftxt/GFS_SAMFshal.txt \ pdftxt/GFDL_cloud.txt \ - pdftxt/GFS_SURFACE_PERT.txt \ +### pdftxt/GFS_SURFACE_PERT.txt \ pdftxt/GFS_CALPRECIPTYPE.txt \ ### pdftxt/rad_cld.txt \ pdftxt/CPT_CSAW.txt \ @@ -130,7 +130,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GSD_RUCLSM.txt \ pdftxt/GSD_THOMPSON.txt \ ### pdftxt/GFSphys_namelist.txt \ - pdftxt/GFS_STOCHY_PHYS.txt \ +### pdftxt/GFS_STOCHY_PHYS.txt \ pdftxt/suite_input.nml.txt \ ### in-core MP ../gfdl_fv_sat_adj.F90 \ @@ -207,12 +207,12 @@ INPUT = pdftxt/mainpage.txt \ ../GFS_MP_generic.F90 \ ../calpreciptype.f90 \ ### stochy - ../GFS_stochastics.F90 \ - ../surface_perturbation.F90 \ +### ../GFS_stochastics.F90 \ +### ../surface_perturbation.F90 \ ### ../../stochastic_physics/stochastic_physics.F90 \ ### CPT ../m_micro.F90 \ - ../micro_mg2_0.F90 \ +### ../micro_mg2_0.F90 \ ../micro_mg3_0.F90 \ ../micro_mg_utils.F90 \ ../cldmacro.F \ @@ -392,7 +392,8 @@ SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = CCPP \ - GEOS5 + MULTI_GASES \ + 0 EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES TAGFILES = diff --git a/physics/docs/ccppv3_fv3_doxyfile b/physics/docs/ccppv3_fv3_doxyfile new file mode 100644 index 000000000..b2b896b9e --- /dev/null +++ b/physics/docs/ccppv3_fv3_doxyfile @@ -0,0 +1,441 @@ +# Doxyfile 1.8.11 +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Common Community Physics Package (CCPP) Scientific Documentation" +PROJECT_NUMBER = "Version 3.0" +PROJECT_BRIEF = " " +PROJECT_LOGO = img/dtc_logo.png +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = YES +TAB_SIZE = 4 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = YES +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = .f=FortranFree \ + .F90=FortranFree \ + .f90=FortranFree +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = YES +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = YES +LOOKUP_CACHE_SIZE = 0 +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_PACKAGE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +EXTRACT_ANON_NSPACES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES + +CASE_SENSE_NAMES = NO + +HIDE_SCOPE_NAMES = NO + +HIDE_COMPOUND_REFERENCE= NO + +SHOW_INCLUDE_FILES = NO + +SHOW_GROUPED_MEMB_INC = NO + +FORCE_LOCAL_INCLUDES = NO + +INLINE_INFO = YES + +SORT_MEMBER_DOCS = NO + +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = YES +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = ccpp_dox_layout.xml +CITE_BIB_FILES = library.bib +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_AS_ERROR = NO +WARN_FORMAT = +WARN_LOGFILE = +INPUT = pdftxt/mainpage.txt \ + pdftxt/all_shemes_list.txt \ + pdftxt/GFSv15_suite.txt \ + pdftxt/GFSv15_suite_TKEEDMF.txt \ + pdftxt/CPT_adv_suite.txt \ + pdftxt/GSD_adv_suite.txt \ + pdftxt/GFS_RRTMG.txt \ + pdftxt/GFS_SFCLYR.txt \ + pdftxt/GFS_NSST.txt \ + pdftxt/GFS_NOAH.txt \ + pdftxt/GFS_SFCSICE.txt \ + pdftxt/GFS_HEDMF.txt \ + pdftxt/GFS_SATMEDMF.txt \ + pdftxt/GFS_GWDPS.txt \ + pdftxt/GFS_OZPHYS.txt \ + pdftxt/GFS_H2OPHYS.txt \ + pdftxt/GFS_RAYLEIGH.txt \ + pdftxt/GFS_SAMF.txt \ + pdftxt/GFS_SAMFdeep.txt \ + pdftxt/GFS_GWDC.txt \ + pdftxt/GFS_SAMFshal.txt \ + pdftxt/GFDL_cloud.txt \ +### pdftxt/GFS_SURFACE_PERT.txt \ + pdftxt/GFS_CALPRECIPTYPE.txt \ +### pdftxt/rad_cld.txt \ + pdftxt/CPT_CSAW.txt \ + pdftxt/CPT_MG3.txt \ + pdftxt/GSD_MYNN_EDMF.txt \ + pdftxt/GSD_CU_GF_deep.txt \ + pdftxt/GSD_RUCLSM.txt \ + pdftxt/GSD_THOMPSON.txt \ +### pdftxt/GFSphys_namelist.txt \ +### pdftxt/GFS_STOCHY_PHYS.txt \ + pdftxt/suite_input.nml.txt \ +### in-core MP + ../gfdl_fv_sat_adj.F90 \ +### time_vary + ../GFS_phys_time_vary.fv3.F90 \ + ../GFS_rad_time_vary.fv3.F90 \ + ../ozne_def.f \ + ../ozinterp.f90 \ + ../h2o_def.f \ + ../h2ointerp.f90 \ + ../aerclm_def.F \ + ../aerinterp.F90 \ + ../iccn_def.F \ + ../iccninterp.F90 \ + ../sfcsub.F \ + ../gcycle.F90 \ +### Radiation + ../radlw_main.f \ + ../radsw_main.f \ + ../radiation_aerosols.f \ + ../radiation_astronomy.f \ + ../radiation_clouds.f \ + ../radiation_gases.f \ + ../radiation_surface.f \ + ../radlw_param.f \ + ../radlw_datatb.f \ + ../radsw_param.f \ + ../radsw_datatb.f \ + ../dcyc2.f \ +### Land Surface + ../sfc_diff.f \ + ../sfc_nst.f \ + ../module_nst_model.f90 \ + ../module_nst_parameters.f90 \ + ../module_nst_water_prop.f90 \ + ../sfc_drv.f \ + ../sflx.f \ + ../namelist_soilveg.f \ + ../set_soilveg.f \ +### Sea Ice Surface + ../sfc_sice.f \ +### PBL + ../moninedmf.f \ + ../mfpbl.f \ + ../tridi.f \ +### satmedmf + ../satmedmfvdif.F \ + ../mfpblt.f \ + ../mfscu.f \ + ../tridi.f \ +### Orographic Gravity Wave + ../gwdps.f \ +### Rayleigh Dampling + ../rayleigh_damp.f \ +### Prognostic Ozone + ../ozphys_2015.f \ +### ../ozphys.f \ +### stratospheric h2o + ../h2ophys.f \ +### Deep Convection + ../samfdeepcnv.f \ +### Convective Gravity Wave + ../gwdc.f \ +### Shallow Convection + ../samfshalcnv.f \ + ../cnvc90.f \ +### Microphysics +### ../gscond.f \ +### ../precpd.f \ + ../module_bfmicrophysics.f \ +### GFDL cloud MP + ../gfdl_cloud_microphys.F90 \ + ../module_gfdl_cloud_microphys.F90 \ +### + ../GFS_MP_generic.F90 \ + ../calpreciptype.f90 \ +### stochy +### ../GFS_stochastics.F90 \ +### ../surface_perturbation.F90 \ +### ../../stochastic_physics/stochastic_physics.F90 \ +### CPT + ../m_micro.F90 \ +### ../micro_mg2_0.F90 \ + ../micro_mg3_0.F90 \ + ../micro_mg_utils.F90 \ + ../cldmacro.F \ + ../aer_cloud.F \ + ../cldwat2m_micro.F \ + ../wv_saturation.F \ + ../cs_conv_aw_adj.F90 \ + ../cs_conv.F90 \ +### GSD + ../cu_gf_driver.F90 \ + ../cu_gf_deep.F90 \ + ../cu_gf_sh.F90 \ + ../module_MYNNrad_pre.F90 \ + ../module_MYNNrad_post.F90 \ + ../module_MYNNPBL_wrapper.F90 \ + ../module_bl_mynn.F90 \ +### ../module_MYNNSFC_wrapper.F90 \ +### ../module_sf_mynn.F90 \ + ../sfc_drv_ruc.F90 \ + ../module_sf_ruclsm.F90 \ + ../namelist_soilveg_ruc.F90 \ + ../set_soilveg_ruc.F90 \ + ../module_soil_pre.F90 \ + ../mp_thompson_pre.F90 \ + ../module_mp_thompson_make_number_concentrations.F90 \ + ../mp_thompson.F90 \ + ../module_mp_thompson.F90 \ + ../module_mp_radar.F90 \ + ../mp_thompson_post.F90 \ +### utils + ../funcphys.f90 \ + ../physparam.f \ + ../physcons.F90 \ + ../radcons.f90 \ + ../mersenne_twister.f \ + compns_stochy.F90 + + +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.f \ + *.F90 \ + *.f90 \ + *.nml \ + *.txt +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = img +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#CLANG_ASSISTED_PARSING = NO +#CLANG_OPTIONS = +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = ccpp_dox_extra_style.css +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = YES +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = YES +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2 +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = YES +PAPER_TYPE = a4 +EXTRA_PACKAGES = amsmath +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = YES +LATEX_SOURCE_CODE = NO + +LATEX_BIB_STYLE = plainnat + +LATEX_TIMESTAMP = NO + +GENERATE_RTF = NO + +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +RTF_SOURCE_CODE = NO +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +ENABLE_PREPROCESSING = NO +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = CCPP \ + MULTI_GASES \ + 0 +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = NO +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = YES +UML_LOOK = YES +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = YES +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = svg +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = YES +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 4836aceba..223c34395 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,13 +1,85 @@ %% This BibTeX bibliography file was created using BibDesk. %% http://bibdesk.sourceforge.net/ -%% Created for Man Zhang at 2019-05-24 12:46:55 -0600 +%% Created for Man Zhang at 2019-06-13 14:38:54 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{bechtold_et_al_2014, + Author = {P. Bechtold and N. Semane and P. Lopez and J-P Chaboureau and A. Beljaars and N. Bormann}, + Date-Added = {2019-06-13 14:29:21 -0600}, + Date-Modified = {2019-06-13 14:38:38 -0600}, + Journal = {J. Atmos. Sci.}, + Pages = {734-753}, + Title = {Representing equilibrium and nonequilibrium convection in large-scale models}, + Volume = {71}, + Year = {2014}} + +@article{freitas_et_al_2018, + Author = {S.R. Freitas and G.A. Grell and A. Molod and M. A. Thompson and W.M. Putman and C. M. Santos e Silva and E. P. Souza}, + Date-Added = {2019-06-13 13:51:50 -0600}, + Date-Modified = {2019-06-13 14:07:37 -0600}, + Journal = {Journal of Advances in Modeling Earth Systems}, + Pages = {1266-1289}, + Title = {Assessing the Grell-Freitas convection parameterization in the NASA GEOS modeling system}, + Volume = {10}, + Year = {2018}} + +@article{qu_and_hall_2005, + Author = {X. Qu and A. Hall}, + Date-Added = {2019-06-10 16:41:01 -0600}, + Date-Modified = {2019-06-10 16:42:55 -0600}, + Journal = {J. Climate}, + Pages = {5239-5252}, + Title = {Surface contribution to planetary albedo variability in cryosphere regions}, + Volume = {18}, + Year = {2005}} + +@article{grant_et_al_2000, + Author = {I.F. Grant and A. J. Prata and R. P.Cechet}, + Date-Added = {2019-06-10 16:30:06 -0600}, + Date-Modified = {2019-06-10 16:33:28 -0600}, + Journal = {Journal of Applied Meteorology}, + Pages = {231-244}, + Title = {The impact of the diurnal variation of albedo on the remote sensing of the daily mean albedo of grassland}, + Volume = {39}, + Year = {2000}} + +@article{moorthi_and_suarez_1992, + Author = {S. Moorthi and M.J. Suarez}, + Date-Added = {2019-06-06 17:51:50 +0000}, + Date-Modified = {2019-06-06 17:56:00 +0000}, + Journal = {Monthly Weather Review}, + Pages = {978-1002}, + Title = {Relaxed Arakawa-Schubert. A parameterization of moist convection for general circulation models}, + Volume = {120}, + Year = {1992}} + +@article{Gettelman_et_al_2019, + Author = {A. Gettelman and H. Morrison and K. Thayer-Calder and C. M. Zarzycki}, + Date-Added = {2019-06-05 16:32:22 +0000}, + Date-Modified = {2019-06-05 16:34:07 +0000}, + Journal = {Journal of Advances in Modeling Earth Systems}, + Title = {The impact of rimed ice hydrometeors on global and regional climate}, + Year = {2019}} + +@article{cite-key, + Date-Added = {2019-06-05 16:32:11 +0000}, + Date-Modified = {2019-06-05 16:32:11 +0000}} + +@article{nakanishi_2000, + Author = {M. Nakanishi}, + Date-Added = {2019-05-31 14:46:02 -0600}, + Date-Modified = {2019-05-31 14:47:32 -0600}, + Journal = {Boundary-Layer Meteorology}, + Pages = {461-493}, + Title = {Large-eddy simulation of radiation fog}, + Volume = {94}, + Year = {2000}} + @article{Gehne_2019, Author = {Gehne, Maria and Hamill, Thomas M. and Bates, Gary T. and Pegion, Philip and Kolczynski, Walter}, Date-Added = {2019-05-24 12:46:43 -0600}, @@ -63,16 +135,11 @@ @article{HOBBS_1974 @article{Pichugina_2008, Author = {Pichugina, Yelena L. and Tucker, Sara C. and Banta, Robert M. and Brewer, W. Alan and Kelley, Neil D. and Jonkman, Bonnie J. and Newsom, Rob K.}, Date-Added = {2019-05-22 11:25:17 -0600}, - Date-Modified = {2019-05-22 11:25:17 -0600}, - Doi = {10.1175/2008jtecha988.1}, - Issn = {1520-0426}, + Date-Modified = {2019-06-05 15:59:49 +0000}, Journal = {Journal of Atmospheric and Oceanic Technology}, - Month = {Aug}, Number = {8}, Pages = {1307--1327}, - Publisher = {American Meteorological Society}, Title = {Horizontal-Velocity and Variance Measurements in the Stable Boundary Layer Using Doppler Lidar: Sensitivity to Averaging Procedures}, - Url = {http://dx.doi.org/10.1175/2008JTECHA988.1}, Volume = {25}, Year = {2008}, Bdsk-Url-1 = {http://dx.doi.org/10.1175/2008JTECHA988.1}, @@ -81,16 +148,11 @@ @article{Pichugina_2008 @article{Nielsen_Gammon_2008, Author = {Nielsen-Gammon, John W. and Powell, Christina L. and Mahoney, M. J. and Angevine, Wayne M. and Senff, Christoph and White, Allen and Berkowitz, Carl and Doran, Christopher and Knupp, Kevin}, Date-Added = {2019-05-22 11:19:45 -0600}, - Date-Modified = {2019-05-22 11:19:45 -0600}, - Doi = {10.1175/2007jamc1503.1}, - Issn = {1558-8432}, + Date-Modified = {2019-06-05 15:31:19 +0000}, Journal = {Journal of Applied Meteorology and Climatology}, - Month = {Jan}, Number = {1}, Pages = {27--43}, - Publisher = {American Meteorological Society}, Title = {Multisensor Estimation of Mixing Heights over a Coastal City}, - Url = {http://dx.doi.org/10.1175/2007JAMC1503.1}, Volume = {47}, Year = {2008}, Bdsk-Url-1 = {http://dx.doi.org/10.1175/2007JAMC1503.1}, @@ -276,15 +338,11 @@ @article{Rutter_2009 @article{Essery_2009, Author = {Essery, Richard and Rutter, Nick and Pomeroy, John and Baxter, Robert and St{\"a}hli, Manfred and Gustafsson, David and Barr, Alan and Bartlett, Paul and Elder, Kelly}, Date-Added = {2019-05-06 14:20:27 -0600}, - Date-Modified = {2019-05-20 16:04:05 -0600}, - Doi = {10.1175/2009bams2629.1}, - Issn = {1520-0477}, + Date-Modified = {2019-06-05 16:01:14 +0000}, Journal = {Bulletin of the American Meteorological Society}, Number = {8}, Pages = {1120-1136}, - Publisher = {American Meteorological Society}, Title = {SNOWMIP2: An Evaluation of Forest Snow Process Simulations}, - Url = {http://dx.doi.org/10.1175/2009BAMS2629.1}, Volume = {90}, Year = {2009}, Bdsk-Url-1 = {http://dx.doi.org/10.1175/2009BAMS2629.1}, @@ -426,15 +484,11 @@ @article{Benjamin_2004a @article{Smirnova_2000, Author = {Smirnova, Tatiana G. and Brown, John M. and Benjamin, Stanley G. and Kim, Dongsoo}, - Doi = {10.1029/1999jd901047}, - Issn = {0148-0227}, + Date-Modified = {2019-06-05 15:32:20 +0000}, Journal = {Journal of Geophysical Research: Atmospheres}, - Month = {Feb}, Number = {D3}, Pages = {4077--4086}, - Publisher = {American Geophysical Union (AGU)}, Title = {Parameterization of cold-season processes in the MAPS land-surface scheme}, - Url = {http://dx.doi.org/10.1029/1999JD901047}, Volume = {105}, Year = {2000}, Bdsk-Url-1 = {http://dx.doi.org/10.1029/1999JD901047}} @@ -879,16 +933,11 @@ @article{Thompson_2004 @article{Abdul_Razzak_2000, Author = {Abdul-Razzak, Hayder and Ghan, Steven J.}, Date-Added = {2019-01-22 11:02:36 -0700}, - Date-Modified = {2019-05-20 16:02:47 -0600}, - Doi = {10.1029/1999jd901161}, - Issn = {0148-0227}, + Date-Modified = {2019-06-05 15:28:16 +0000}, Journal = {Journal of Geophysical Research: Atmospheres}, - Month = {Mar}, Number = {D5}, Pages = {6837-6844}, - Publisher = {American Geophysical Union (AGU)}, Title = {A parameterization of aerosol activation: 2. Multiple aerosol types}, - Url = {http://dx.doi.org/10.1029/1999JD901161}, Volume = {105}, Year = {2000}, Bdsk-Url-1 = {http://dx.doi.org/10.1029/1999JD901161}} @@ -1085,16 +1134,11 @@ @article{Lewis_2005 @article{Zhu_2018, Author = {Zhu, Yuejian and Zhou, Xiaqiong and Li, Wei and Hou, Dingchen and Melhauser, Christopher and Sinsky, Eric and Pe{\~n}a, Malaquias and Fu, Bing and Guan, Hong and Kolczynski, Walter and et al.}, Date-Added = {2018-09-07 11:48:50 -0600}, - Date-Modified = {2018-09-07 11:48:50 -0600}, - Doi = {10.1029/2018jd028506}, - Issn = {2169-897X}, + Date-Modified = {2019-06-05 15:33:03 +0000}, Journal = {Journal of Geophysical Research: Atmospheres}, - Month = {Jul}, Number = {13}, Pages = {6732--6745}, - Publisher = {American Geophysical Union (AGU)}, Title = {Toward the Improvement of Subseasonal Prediction in the National Centers for Environmental Prediction Global Ensemble Forecast System}, - Url = {http://dx.doi.org/10.1029/2018JD028506}, Volume = {123}, Year = {2018}, Bdsk-Url-1 = {http://dx.doi.org/10.1029/2018JD028506}, diff --git a/physics/docs/pdftxt/CPT_CSAW.txt b/physics/docs/pdftxt/CPT_CSAW.txt index 09b81fa10..723e65b20 100644 --- a/physics/docs/pdftxt/CPT_CSAW.txt +++ b/physics/docs/pdftxt/CPT_CSAW.txt @@ -1,13 +1,14 @@ /** -\page CSAW_scheme CPT Scale-Aware Chikira-Sugiyama Scale-aware Convection Scheme with Arakawa-Wu Extension +\page CSAW_scheme Chikira-Sugiyama Scale-Aware Convection Scheme with Arakawa-Wu Extension \section cs_descrip Description -Chikira-Sugiyama cumulus scheme (Chikira and Sugiyama (2010) \cite Chikira_2010) with prognostic closure and +The Chikira-Sugiyama cumulus scheme (Chikira and Sugiyama (2010) \cite Chikira_2010) with prognostic closure and Arakawa-Wu Scale-Aware extension \cite Arakawa_2013 is an offshoot of the prognostic Arakawa-Schubert scheme. -It is characterized by lateral entrainment rates that vertically varies depending on buoyancy and vertical -velocity of updraft air parcel following Gregory (2001) \cite Gregory_2001 and spectral representation of -cloud types according to updraft velocity at cloud base. Cloud base mass flux is determined by convective -kinetic energy closure. The entrainment rate tends to be large near cloud base because of the small updraft +It is characterized by a spectral representation of cloud types according to updraft velocity at cloud base, a level +at which the mass flux is determined by a convective kinetic energy closure. The +lateral entrainment rate vertically varies depending on the buoyancy and vertical +velocity of the updraft air parcel following Gregory (2001) \cite Gregory_2001 . + The entrainment rate tends to be large near cloud base because of the small updraft velocity near that level. Deep convection tends to be suppressed when convective available potential energy is small because of upward reduction of in-cloud moist static energy. Dry environment air significantly reduces in-cloud humidity mainly because of the large entrainment rate in the lower troposphere, which leads to suppression diff --git a/physics/docs/pdftxt/CPT_MG3.txt b/physics/docs/pdftxt/CPT_MG3.txt index 04d5d0a33..3dc3fece4 100644 --- a/physics/docs/pdftxt/CPT_MG3.txt +++ b/physics/docs/pdftxt/CPT_MG3.txt @@ -1,9 +1,8 @@ /** -\page CPT_MG3 CPT MG3 Cloud Microphysics Scheme +\page CPT_MG3 Morrison-Gettelman Cloud Microphysics Scheme \section des_MG3_cloud Description -MG3 microphysics (MP) scheme is a six-category double momentum bulk scheme. It forecasts mass of ten -hydrometeors (cloud water, cloud ice, rain, snow and graupel) and their number concentrations in addition to mass of water vapor. -Physics processes of MG3 cloud MP are described in Figure 1. +The Morrison-Gettelman Version 3 (MG3) microphysics scheme is a six-category double momentum bulk scheme. It forecasts mass +and number concentration of five hydrometeors (cloud water, cloud ice, rain, snow and graupel) in addition to mass of water vapor. # Morrison Gettelman Advancements - MG1: Morrison and Gettelman (2008) \cite Morrison_2008 (CESM1, CAM5) @@ -13,33 +12,28 @@ Physics processes of MG3 cloud MP are described in Figure 1. - MG2: Gettelman and Morrison (2015) \cite Gettelman_2015_1 \cite Gettelman_2015_2 (CESM2, CAM6) - Prognostic precipitation (rain and snow) - Sub-stepping and sub-column capable -- MG3: Gettelman et al. 2019 (accepted by JAMES) - - Rimed hydrometeors (graupel or hail) are added to stratiform cloud scheme for global models. - - Global climate impacts are limited to small increased in ice mass. - - High (14 km) resolution similations show local production of rimed ice (graupel) can affect regional precipitation amounts and intensity. +- MG3: Gettelman et al. (2019) \cite Gettelman_et_al_2019 + - Rimed hydrometeors (graupel or hail) are added to stratiform cloud scheme for global models + - Global climate impacts are limited to small increased in ice mass + - High (14 km) resolution simulations show local production of rimed ice (graupel) can affect regional +precipitation amounts and intensity A schematic of the MG3 scheme is shown in Figure 1. MG3 starts with MG2 \cite Gettelman_2015_1 \cite Gettelman_2015_2 and adds a series of processes (in red). One rimed hydrometeor category is added. Both mass and number are prognosed. Rimed ice has the -"character" of hail or graupel by pre-selecting density and fall speed paramters. +"character" of hail or graupel by pre-selecting density and fall speed parameters. \image html MG3_MP_diagram.png "Figure 1: A schematic of the MG3 scheme (Courtesy of A. Gettleman )" width=10cm - - Some unique attributes of MG3 cloud microphysics include: -# Consistent treatment of cloud fraction in cloud macrophysics and radiation -# Subgrid-scale microphysics --# Max-overlap and in-cloud precipitation fraction area +-# Maximum-overlap and in-cloud precipitation fraction area -# Options for subcolumn microphysics --# Options to run MG2 using the same code as MG3 --# Options to run MG1 --# Completely aerosol awareness with 1) 1) constant aerosol mixing ratio, 2) climatology IN/CCN from CAM5, 3) climatology aerosol from MERRA2 , 4) GOCART, and 5) MAM7 --# Options to call fast physics as GFDL microphysics --# Number concentration of all species forcasted and has local storage +-# Options for running with fewer species and processes, simulating MG1 and MG2 codes +-# Completely aerosol awareness with 1) constant aerosol mixing ratio, 2) climatology IN/CCN from CAM5 (default; \c cam5_4_143_NAAI_monclimo2.nc), 3) climatology aerosol from MERRA2 , 4) GOCART, and 5) MAM7 -# Sub-step semi-implicit sedimentation - - +-# Can be used along with the FV in-core saturation adjustment \section intra_mg3 Intraphysics Communication \ref arg_table_m_micro_run diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt index 1edb934a2..7617d9df3 100644 --- a/physics/docs/pdftxt/CPT_adv_suite.txt +++ b/physics/docs/pdftxt/CPT_adv_suite.txt @@ -1,10 +1,9 @@ /** -\page suite3_page FV3_CPT_v0 +\page csawmg_page csawmg Suite -\section CPT_suite_overview Overview +\section csawmg_suite_overview Overview -The advanced CPT physics suite uses the parameterizations in the following order: - - \ref fast_sat_adj +The advanced csawmg physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST @@ -21,29 +20,21 @@ The advanced CPT physics suite uses the parameterizations in the following order - \ref CPT_MG3 - \ref mod_cs_conv_aw_adj - \ref GFS_CALPRECIPTYPE - - \ref STOCHY_PHYS \section sdf_cpt_suite Suite Definition File -The advanced CPT physics suite uses the parameterizations in the following order, as defined in \c FV3_CPT : +The advanced csawmg physics suite uses the parameterizations in the following order, as defined in \c SCM_csawmg : \code - + - - - fv_sat_adj - - GFS_time_vary_pre GFS_rrtmg_setup GFS_rad_time_vary GFS_phys_time_vary - stochastic_physics - stochastic_physics_sfc @@ -67,11 +58,12 @@ The advanced CPT physics suite uses the parameterizations in the following order GFS_suite_interstitial_1 dcyc2t3 GFS_surface_generic_pre + GFS_surface_composites_pre GFS_suite_interstitial_2 - sfc_ex_coef + sfc_diff GFS_surface_loop_control_part1 sfc_nst_pre sfc_nst @@ -82,6 +74,7 @@ The advanced CPT physics suite uses the parameterizations in the following order + GFS_surface_composites_post dcyc2t3_post sfc_diag sfc_diag_post @@ -118,98 +111,100 @@ The advanced CPT physics suite uses the parameterizations in the following order m_micro_post cs_conv_aw_adj GFS_MP_generic_post - - - - - GFS_stochastics + sfc_sice_post + maximum_hourly_diagnostics + \endcode \section cpt_nml_option Namelist Option \code - fhzero = 6 - h2o_phys = .true. - oz_phys = .false. - oz_phys_2015 = .true. - ldiag3d = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - crtrh = 0.95,0.95,0.90 - ncld = 2 - imp_physics = 10 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - iaer = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .true. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = -1 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - ras = .false. - cscnv = .true. - do_shoc = .false. - do_aw = .true. - shoc_cld = .false. - h2o_phys = .true. - shcnvcw = .false. - xkzm_h = 0.5 - xkzm_m = 0.5 - xkzm_s = 1.0 - nstf_name = 2,1,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 - microp_uniform = .false. - mg_do_ice_gmao = .true. - mg_do_liq_liu = .true. - mg_dcs = 100.00 - mg_alf = 1.2 - mg_ts_auto_ice = 500.,2000. - mg_qcvar = 0.5 - fprcp = 2 - cs_parm = 2.6,1.0,0.05e3,2.0e3,50.0,1.0,-999.,1.,0.6,0. - shoc_parm = 7000.0,1.0,4.2857143,0.7,-999.0 - iccn = .false. - aero_in = .false. - ctei_rm = 10.0,10.0 - max_lon = 8000 - max_lat = 4000 - rhcmax = 0.9999999 - effr_in = .true. - ltaerosol = .false. - lradar = .false. - cplflx = .false. - iau_delthrs = 6 - iaufhrs = 30 - iau_inc_files = '' - +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + use_ufo = .true. + pre_rad = .false. + crtrh = 0.93,0.90,0.95 + ncld = 2 + imp_physics = 10 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .true. + satmedmf = .false. + lheatstrg = .true. + random_clds = .true. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = -1 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + oz_phys = .false. + oz_phys_2015 = .true. + debug = .false. + ras = .false. + cscnv = .true. + do_shoc = .false. + do_aw = .true. + shoc_cld = .false. + h2o_phys = .true. + shcnvcw = .false. + xkzm_h = 0.5 + xkzm_m = 0.5 + xkzm_s = 1.0 + nstf_name = 2,1,1,0,5 + nst_anl = .true. + ccwf = 1.0,1.0 + dlqf = 0.25,0.05 + mg_dcs = 200.0 + mg_ts_auto_ice = 180.0,900.0 + mg_qcvar = 1.0 + fprcp = 2 + pdfflag = 4 + iccn = .false. + aero_in = .false. + mg_do_graupel = .true. + mg_do_hail = .false. + do_sb_physics = .true. + mg_do_ice_gmao = .false. + mg_do_liq_liu = .true. + cs_parm = 8.0,4.0,1.0e3,3.5e3,20.0,1.0,0.0,1.0,0.6,0.0 + shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 + ctei_rm = 0.60,0.23 + max_lon = 8000 + max_lat = 4000 + rhcmax = 0.9999999 + effr_in = .true. + ltaerosol = .false. + lradar = .false. + cplflx = .false. + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" +/ \endcode -- \ref gfs_physics_nml -- \ref cpt_physics_nml + + */ diff --git a/physics/docs/pdftxt/GFDL_cloud.txt b/physics/docs/pdftxt/GFDL_cloud.txt index c3933f156..6240a259e 100644 --- a/physics/docs/pdftxt/GFDL_cloud.txt +++ b/physics/docs/pdftxt/GFDL_cloud.txt @@ -4,15 +4,16 @@ GFDL cloud microphysics (MP) scheme is a six-category MP scheme to replace Zhao-Carr MP scheme, and moves the GFS from a total cloud water variable to five predicted hydrometeors (cloud water, cloud ice, rain, snow and graupel). This scheme utilizes the "bulk water" microphysical parameterization technique in Lin et al. (1983) \cite lin_et_al_1983 -and has been significantly improved over years at GFDL (Lord et al.(1984) \cite lord_et_al_1984, -Krueger et al.(1995) \cite krueger_et_al_1995, Chen and Lin (2011) \cite chen_and_lin_2011, Chen and Lin (2013) \cite chen_and_lin_2013). +and has been significantly improved over years at GFDL (Lord et al. (1984) \cite lord_et_al_1984, +Krueger et al. (1995) \cite krueger_et_al_1995, Chen and Lin (2011) \cite chen_and_lin_2011, Chen and Lin (2013) \cite chen_and_lin_2013). Physics processes of GFDL cloud MP are described in Figure 1 (also see warm_rain() and icloud()) and are feature with time-split between warm-rain (faster) and ice-phase (slower) processes (see 'conversion time scale' in gfdl_cloud_microphys.F90 for default values). \image html gfdl_cloud_mp_diagram.png "Figure 1: GFDL MP at a glance (Courtesy of S.J. Lin at GFDL)" width=10cm Some unique attributes of GFDL cloud microphysics include: -\section fast_phys Fast Physics in FV3 Dynamical Solver +# Precipitation and Cloud Effects on Dynamics + \image html FV3_structure.png "Figure 1: FV3 structure; Yellow represents external API routines, called once per physics time step; Green are called once per remapping time step; Blue are called once per acoustic time step. " width=10cm The leftmost column of Figure 1 shows the external API calls used during a typical process-split model integration procedure. First, the solver is called, which advances the solver a full "physics" time step. This updated state is then passed to the physical parameterization @@ -27,9 +28,17 @@ done independently within each layer to maintain local (within each layer) stabi This loop is typically performed once per call to the solver, although it is possible to improve the model's stability by executing the loop (and thereby the vertical remapping) multiple times per solver call. -In current fv3gfs, the fast physics (phase-changes only) is called after the "Lagrangian-to-Eulerain" remapping. When \ref fast_sat_adj is activated (do_sat_adj=.true. in \b fv_core_nml block), it adjusts cloud water evaporation (cloud water\f$\rightarrow\f$water vapor), cloud water freezing (cloud water\f$\rightarrow\f$cloud ice), and cloud ice deposition (water vapor\f$\rightarrow\f$cloud ice). The process of condensation is an interesting and well known example. Say dynamics lifts a column of air above saturation, then an adjustment is made to temperature and moisture in order to reach saturation. The tendency of the dynamics has been included in this procedure in order to have the correct balance. -\section gfdl_fast Horizontal Sub-grid Variability ("Scale-aware") +At grid spacing of less than ~10 km, model dynamics should be able to "see" and "feel" the cloud and precipitation condensate; heat content, +heat exchange with the environment, and momentum of condensate should be accounted for. The GFDL microphysics scheme is formulated to +accomplish this through strict moist energy conservation during phase changes, and keeping heat and momentum budgets for all condensate. +This results in thermodynamic consistency between the FV3 microphysics scheme and FV3 dyanmics. + +In current fv3gfs, GFDL in-core fast saturation adjustment (phase-changes only) is called after the "Lagrangian-to-Eulerain" remapping. When \ref fast_sat_adj is activated (do_sat_adj=.true. in \b fv_core_nml block), it adjusts cloud water evaporation (cloud water\f$\rightarrow\f$water vapor), cloud water freezing (cloud water\f$\rightarrow\f$cloud ice), and cloud ice deposition (water vapor\f$\rightarrow\f$cloud ice). The process of condensation is an interesting and well known example. Say dynamics lifts a column of air above saturation, then an adjustment is made to temperature and moisture in order to reach saturation. The tendency of the dynamics has been included in this procedure in order to have the correct balance. + +# Scale-awareness + +Scale-awareness provided by assumed subgrid variability that is directly proportional to grid spacing. Horizontal sub-grid variability is a function of cell area: - Over land: \f[ @@ -43,18 +52,15 @@ h_{var}=\min \left\{0.2,\max\left[0.01, D_{ocean}(\frac{A_{r}}{10^{10}})^{0.25}\ Where \f$A_{r}\f$ is cell area, \f$D_{land}\f$ and \f$D_{ocean}\f$ are base values for sub-grid variability over land and ocean (larger sub-grid variability appears in larger area). Horizontal sub-grid variability is used in cloud fraction, relative humidity calculation, evaporation and condensation processes. Scale-awareness is achieved by this horizontal subgrid variability and a \f$2^{nd}\f$ -order FV-type vertical reconstruction (Lin et al.(1994) \cite lin_et_al_1994). - -\section nml_opt Namelist Option -\ref gfdl_cloud_microphysics_nml +order FV-type vertical reconstruction (Lin et al. (1994) \cite lin_et_al_1994). \section intro_GFDL_cloud Intraphysics Communication - + For GFDL Cloud MP: \ref arg_table_gfdl_cloud_microphys_run - + For GFDL Fast Physics: \ref arg_table_fv_sat_adj_run + + GFDL Cloud MP: \ref arg_table_gfdl_cloud_microphys_run + + GFDL In-core Fast Saturation Adjustment: \ref arg_table_fv_sat_adj_run \section Gen_GFDL_cloud General Algorithm - + For GFDL Cloud MP: mpdrv() - + For GFDL Fast Physics: fv_sat_adj_work() + + GFDL Cloud MP: mpdrv() + + GFDL In-core Fast Saturation Ajustment: fv_sat_adj_work() */ diff --git a/physics/docs/pdftxt/GFS_GWDC.txt b/physics/docs/pdftxt/GFS_GWDC.txt index 53e9cc1cb..c8fb70afa 100644 --- a/physics/docs/pdftxt/GFS_GWDC.txt +++ b/physics/docs/pdftxt/GFS_GWDC.txt @@ -13,7 +13,7 @@ The importance of convectively-generated tropical waves in driving the equatorial stratospheric semi-annual oscillation (SAO) and quasi-biennial oscillation (QBO) has been appreciated for many years. - In a review paper on gravity waves in the middle atmosphere, Fritts(1984) \cite fritts_1984 + In a review paper on gravity waves in the middle atmosphere, Fritts (1984) \cite fritts_1984 showed that a large portion of observed gravity wave momentum flux has higher frequencies than those of stationary mountain waves. This phenomenon was explained by cumulus @@ -22,7 +22,7 @@ wind and stability are weak, the magnitude of the surface drag and the resultant influence of orographically-induced gravity wave drag on the large-scale flow are relatively small compared with those in - wintertime (Palmer et al.(1986) \cite palmer_et_al_1986). In this + wintertime (Palmer et al. (1986) \cite palmer_et_al_1986). In this situation, the relative importance of cumulus convection as a source of gravity waves is larger. In addition, in the tropical regions where persistent convection exists, deep cumulus clouds impinging on @@ -34,7 +34,7 @@ Compared with orographic gravitity waves, it has proven more difficult to model the way in which gravity waves are generated by various convective sources; The simplest situation is depicted in Figure 1. There are several proposed generation mechanisms in the literature (see section 3b in - Kim et al.(2003) \cite kim_et_al_2003). Amongst, Chun and Baik (1998) \cite chun_and_baik_1998 + Kim et al. (2003) \cite kim_et_al_2003). Amongst, Chun and Baik (1998) \cite chun_and_baik_1998 proposed a way for parameterizing convection-induced subgrid-scale gravity wave momentum flux in large-scale models. For the momentum flux profile up to the cloud-top height, use of the linear diff --git a/physics/docs/pdftxt/GFS_H2OPHYS.txt b/physics/docs/pdftxt/GFS_H2OPHYS.txt index ca3cd2041..efd38065f 100644 --- a/physics/docs/pdftxt/GFS_H2OPHYS.txt +++ b/physics/docs/pdftxt/GFS_H2OPHYS.txt @@ -3,7 +3,7 @@ \section des_h2o Description To improve the treatment of stratospheric water vapor in the global model, NCEP implemented a parameterization of photochemical production and loss (P-L) of water vapor through methane oxidation and photolysis of H2O in the upper mesosphere due to solar Lyman alpha absorption is implemented in GFS. -The Navy Research Laboratory (NRL) linearized parameterization of stratospheric and mesospheric water vapor photochemistry (McCormack at al.(2008) +The Navy Research Laboratory (NRL) linearized parameterization of stratospheric and mesospheric water vapor photochemistry (McCormack at al. (2008) \cite mccormack_et_al_2008) applies a linearized photochemical tendency to specific humidity q in the form \f[ \frac{dq}{dt}=(P-L)_{0}+\frac{\partial (P-L)}{\partial q}\mid_{0}(q-q_{0}) diff --git a/physics/docs/pdftxt/GFS_NOAH.txt b/physics/docs/pdftxt/GFS_NOAH.txt index d6928b38a..19360d092 100644 --- a/physics/docs/pdftxt/GFS_NOAH.txt +++ b/physics/docs/pdftxt/GFS_NOAH.txt @@ -7,26 +7,26 @@ predictability on daily to seasonal timescale (Betts et al. (2017) \cite betts_et_al_2017), but also in terms of influencing extremes such as drought and heatwaves (Paimazumder and Done (2016) \cite paimazumder_and_done_2016), PBL evolution and cloud - formation (Milovac et al.(2016) \cite milovac_et_al_2016) and afternoon + formation (Milovac et al. (2016) \cite milovac_et_al_2016) and afternoon convection (Guillod et al. (2015) \cite guillod_et_al_2015), and tropical cyclone re-intensification (Andersen and Shepherd (2014) \cite andersen_and_shepherd_2014). Other linkages, such as the role of soil moisture (SM) or vegetation heterogeneity in mesoscale circulation - (Hsu et al.(2017) \cite hsu_et_al_2017) and planetary waves (Koster et al.(2014) \cite koster_et_al_2014), + (Hsu et al. (2017) \cite hsu_et_al_2017) and planetary waves (Koster et al. (2014) \cite koster_et_al_2014), and those driven by land use and land cover change or management (Hirsch et al. (2015) \cite hirsch_et_al_2015; - Findell et al.(2017) \cite findell_et_al_2017) are topics of active research. + Findell et al. (2017) \cite findell_et_al_2017) are topics of active research. Figure 1 is a schematic of local land-atmosphere interactions in a quiescent synoptic regime, including the soil moisture-precipitation - (SM-P) feedback pathways. Solid arrows indicate a positive feedback + (SM-P) feedback pathways (Ek and Mahrt (1994) \cite ek_and_mahrt_1994; Ek and Holtslag (2004) \cite ek_and_holtslag_2004 ). Solid arrows indicate a positive feedback pathway, and large dashed arrows represent a negative feedback, while red indicates radiative, black indicates surface layer and PBL, and brown indicates land surface processes. Thin red and grey dashed lines with arrows also represent positive feedbacks. The single horizontal gay-dotted line (no arrows) indicates the top of the PBL, and the seven small vertical dashed lines (no arrows) represent precipitation - \image html Noah_LA_interaction.png "Figure 1: Local Land-atmosphere Interaction (courtesy of Michael Ek, Ek and Mahrt (1994), Ek and Holtslag (2004))" width=10cm + \image html Noah_LA_interaction.png "Figure 1: Local Land-atmosphere Interaction (courtesy of Michael Ek)" width=10cm Recently, the land surface updates in 2017 GFS operational physics includes: - IGBP 20-type 1-km land classification - STASGO 19-type 1-km soil classification diff --git a/physics/docs/pdftxt/GFS_SAMF.txt b/physics/docs/pdftxt/GFS_SAMF.txt new file mode 100644 index 000000000..192f1f9a1 --- /dev/null +++ b/physics/docs/pdftxt/GFS_SAMF.txt @@ -0,0 +1,9 @@ +/** +\page GFS_SAMF GFS Scale-Aware Simplified Arakawa-Schubert (sa-SAS) Convection Scheme + +\section des_samf Description + +\section intra_samf Intraphysics Communication + + +*/ diff --git a/physics/docs/pdftxt/GFS_SATMEDMF.txt b/physics/docs/pdftxt/GFS_SATMEDMF.txt index 3dd9eb17e..22e73a458 100644 --- a/physics/docs/pdftxt/GFS_SATMEDMF.txt +++ b/physics/docs/pdftxt/GFS_SATMEDMF.txt @@ -8,7 +8,7 @@ counter-gradient(EDCG) scheme is used for the weakly unstable PBL. The new TKE-E -# Eddy diffusivity (K) is now a function of TKE which is prognostically predicted --# EDMF approach is appled for all the unstable PBL +-# EDMF approach is applied for all the unstable PBL -# EDMF approach is also applied to the stratocumulus-top-driven turbulence mixing diff --git a/physics/docs/pdftxt/GFS_SFCLYR.txt b/physics/docs/pdftxt/GFS_SFCLYR.txt index 6ed7ed3c2..60d804a01 100644 --- a/physics/docs/pdftxt/GFS_SFCLYR.txt +++ b/physics/docs/pdftxt/GFS_SFCLYR.txt @@ -12,7 +12,7 @@ in the very stable and very unstable situations. \ref Noah_LSM are largely responsible for the quality of model forecasts produced for near-surface weather parameters, such as 2-meter air temperature (\f$T_{2m}\f$) and surface skin temperature - (\f$LST\f$). \f$LST\f$ is derived from the surface energy budget, and is + (\f$LST\f$). \f$LST\f$ is derived from the surface energy budget, and is particularly important to remote sensing and data assimilation. How precise these two parameters can be simulated by the model strongly depends on how accurate the surface heat fluxes are parameterized, @@ -31,10 +31,10 @@ in the very stable and very unstable situations. In May 2011, the new vegetation-dependent formulations of thermal roughness formulation ( - Zheng et al.(2012) \cite zheng_et_al_2012) + Zheng et al. (2012) \cite zheng_et_al_2012) was implemented to deal with the cold \f$LST\f$ bias over the arid western continental United States - (CONUS) during daytime. The thermal roughness length \f$Z_{0H}\f$ is derived by a + (CONUS) during daytime. The thermal roughness length \f$Z_{0H}\f$ is derived by a seasonlly varying formulation dependent on the seasonal cycle of green vegetation fraction. In this \f$Z_{0H}\f$ formulation, a key parameter known as \f$C_{zil}\f$ is specified according to a dependence on canopy height. @@ -43,7 +43,7 @@ The NCEP GFS global prediction model has experienced a longstanding problem of s cold bias in the \f$T_{2m}\f$ forecasts over land in the late afternoon and nighttime during moist seasons. This cold bias is closely associated with the nocturnal stable boundary layer and is accompanied by a corresponding warm air temperature bias in the first -model level above the ground. In 2017, Zheng et al.(2017) \cite zheng_et_al_2017 identified the +model level above the ground. In 2017, Zheng et al. (2017) \cite zheng_et_al_2017 identified the bias and introduced a stability parameter constraint \f$(z/L)_{lim}\f$ to prevent the land-atmosphere system from fully decoupling: \f[ (z/L)_{lim}=\frac{ln(\frac{z}{z_{0M}})}{2\alpha(1-\frac{z_{0M}}{z})} @@ -51,11 +51,11 @@ bias and introduced a stability parameter constraint \f$(z/L)_{lim}\f$ to preven Here \f$z\f$ is the height, \f$L\f$ is the Obukhov length, \f$z_{0M}\f$ is the momentum roughness length, and \f$\alpha = 5\f$. -The pertinent features of the GFS stable surface layer parameterization scheme are described in the appendix of Zheng et al.(2017) +The pertinent features of the GFS stable surface layer parameterization scheme are described in the appendix of Zheng et al. (2017) \cite zheng_et_al_2017. \section intra_rough Intraphysics Communication -\ref arg_table_sfc_ex_coef_run +\ref arg_table_sfc_diff_run \section gen_rough General Algorithm \ref general_diff diff --git a/physics/docs/pdftxt/GFS_SFCSICE.txt b/physics/docs/pdftxt/GFS_SFCSICE.txt index 8f39c5eef..b7b3c38f3 100644 --- a/physics/docs/pdftxt/GFS_SFCSICE.txt +++ b/physics/docs/pdftxt/GFS_SFCSICE.txt @@ -25,13 +25,13 @@ A sea ice model, in general, may contain subcomponents treating 1) dynamics (ice motion), 2) ice transport, 3) multiple ice thickness categories (including leads), 4) surface albedo, and 5) vertical thermodynamics. GFS sea ice scheme is concerned with a scheme for the - last of these processes. A three-layer thermodynamic sea ice model (Winton(2000) \cite winton_2000) + last of these processes. A three-layer thermodynamic sea ice model (Winton (2000) \cite winton_2000) has been coupled to GFS. It predicts sea ice/snow thickness, the surface temperature and ice temperature structure. In each model grid box, the heat and moisture fluxes and albedo are treated separately for the ice and the open water. \section intra_sice Intraphysics Communication -+ GFS Sea Ice Driver(\ref arg_table_sfc_sice_run) ++ GFS Sea Ice Driver (\ref arg_table_sfc_sice_run) + Three-layer Thermodynamics Sea Ice Model (ice3lay()) \cite winton_2000 \section gen_sice General Algorithm diff --git a/physics/docs/pdftxt/GFS_SURFACE_PERT.txt b/physics/docs/pdftxt/GFS_SURFACE_PERT.txt index 480946b57..1ecdfaa34 100644 --- a/physics/docs/pdftxt/GFS_SURFACE_PERT.txt +++ b/physics/docs/pdftxt/GFS_SURFACE_PERT.txt @@ -1,16 +1,28 @@ /** \page surf_pert GFS Surface Parameter Perturbation \section des_sfcpert Description -Parameterizations of physical process include a number of tunable -Land surface perturbation (Gehne et al.(2019) \cite Gehne_2019) has been recently introduced +Land surface perturbation (Gehne et al. (2019) \cite Gehne_2019) has been recently introduced into FV3GFS. This treatment is based on the hypothesis that one of the major causes of the insufficient spread in current global NWP model,especially near the surface, is a lack of treatment of uncertainty in the soil state and in the associated model parameters. It allows for land surface parameters such as surface albedo, -vegetation fraction,soil hydraulic conductivity,leaf area index (LAI),surface roughness lengths for heat and momentom to vary in space. -These parameters and variables have been shown to impact forecasts of 2m temperature,10m wind and precipitation.Based on the parameter +vegetation fraction, soil hydraulic conductivity, leaf area index (LAI), surface roughness lengths for heat and momentom to vary in space. +These parameters and variables have been shown to impact forecasts of 2m temperature, 10m wind and precipitation. Based on the parameter or variable,different strategies to perturb are necessary. +Table 1 presents a summary of the uncertainty or range of values associated with the parameters and variables that are considered. + +\section table Uncertainty or range of values identified for the perturbed parameters (Gehne et al. (2019)) +| Parameter or variable | Estimated uncertainty or range | Reference | +|-----------------------------------|---------------------------------------|------------------------------------| +| Albedo | 2\%-12\% of Albedo | Grant et al. (2000) \cite grant_et_al_2000 ; Qu and Hall (2005) \cite qu_and_hall_2005 | +| Vegetation fraction | 20\%-30\% of Vegetation fraction | Computed from MODIS vegetation fraction data | +| Momentum roughness length + + + + + Momentum roughness length (\f$Z_{0}\f$),heat/momentum roughness length ratio (\f$Z_{t}/Z_{0}\f$), Albedo and vegetation fraction perturbation are applied by percentile matching of the normal distribution with the beta distribution diff --git a/physics/docs/pdftxt/GFSv15_suite.txt b/physics/docs/pdftxt/GFSv15_suite.txt index 821ca9680..82545bbff 100644 --- a/physics/docs/pdftxt/GFSv15_suite.txt +++ b/physics/docs/pdftxt/GFSv15_suite.txt @@ -1,25 +1,20 @@ /** -\page suite1_page FV3_GFS_v15 +\page GFS_v15_page GFS_v15 Suite \section gfs1_suite_overview Overview -Effective on or about Wednesday, June 12, 2019, begining with the 1200 -Coordinated Universal Time (UTC) run, the National Centers for Environmental -Prediction (NCEP) will upgrade the Global Forecast Systems (GFS) from version 14 to 15.1. +Version 15 of the Global Forecast System (GFS) was implemented operationally by the NOAA +National Centers for Environmental Prediction (NCEP) on June 12, 2019. +GFS v15 uses the Finite-Volume Cubed-Sphere (FV3) dynamical core +and a revised physics suite when compared to GFS v14. -NOAA/NWS selected the finite-volume cubed-sphere (FV3) dynamical core as the Next -Generation Global Prediction System (NGGPS). The FV3 was developed by the Geophysical -Fluid Dynamics Laboratory (GFDL) under NOAA's Office of Atmospheric Research (OAR). -The GFS version 15.1 uses the FV3 dynamical core and improved physics parameterizations. Compared -to version 14, the GFS version 15.1 uses the same physics package except for: -- Replacement of \ref GFS_ZHAOC with the more advanced \ref GFDL_cloud -- Updated paramterization of ozone photochemistry with additional production and loss terms -- Newly introduced parameterization of middle atmospheric water vapor photochemistry (\ref GFS_H2OPHYS) +- Replacement of the Zhao-Carr microphysics with the more advanced \ref GFDL_cloud +- Updated parameterization of ozone photochemistry with additional production and loss terms +- Newly introduced parameterization of middle atmospheric water vapor photochemistry - Revised bare soil evaporation scheme - Modified convective parameterization scheme to reduce excessive cloud top cooling -The GFSv15 physics suite uses the parameterizations in the following order: - - \ref fast_sat_adj +The GFS v15 physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST @@ -35,29 +30,21 @@ The GFSv15 physics suite uses the parameterizations in the following order: - \ref GFS_SAMFshal - \ref GFDL_cloud - \ref GFS_CALPRECIPTYPE - - \ref STOCHY_PHYS \section sdf_gfsv15 Suite Definition File -The GFSv15 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15 : +The GFS v15 suite uses the parameterizations in the following order, as defined in \c SCM_GFS_v15: \code - + - - - fv_sat_adj - - GFS_time_vary_pre GFS_rrtmg_setup GFS_rad_time_vary GFS_phys_time_vary - stochastic_physics - stochastic_physics_sfc @@ -81,11 +68,12 @@ The GFSv15 suite uses the parameterizations in the following order, as defined i GFS_suite_interstitial_1 dcyc2t3 GFS_surface_generic_pre + GFS_surface_composites_pre GFS_suite_interstitial_2 - sfc_ex_coef + sfc_diff GFS_surface_loop_control_part1 sfc_nst_pre sfc_nst @@ -96,6 +84,7 @@ The GFSv15 suite uses the parameterizations in the following order, as defined i + GFS_surface_composites_post dcyc2t3_post sfc_diag sfc_diag_post @@ -109,6 +98,7 @@ The GFSv15 suite uses the parameterizations in the following order, as defined i rayleigh_damp GFS_suite_stateout_update ozphys_2015 + h2ophys GFS_DCNV_generic_pre get_phi_fv3 GFS_suite_interstitial_3 @@ -129,110 +119,116 @@ The GFSv15 suite uses the parameterizations in the following order, as defined i maximum_hourly_diagnostics - - - GFS_stochastics - - \endcode \section gfs15_nml_opt_des Namelist Option \code - fhzero = 6 - h2o_phys = .true. - oz_phys = .false. - oz_phys_2015 = .true. - ldiag3d = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - ncld = 5 - imp_physics = 11 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - iaer = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .true. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - nstf_name = 2,0,0,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 -\endcode -check \ref gfs_physics_nml for description +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .true. + satmedmf = .false. + shinhong = .false. + do_ysu = .false. + lheatstrg = .false. + lgfdlmprad = .false. + effr_in = .false. + random_clds = .false. + trans_trac = .false. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .false. + oz_phys_2015 = .true. + h2o_phys = .true. + nstf_name = 2,1,1,0,5 + xkzminv = 0.3 + xkzm_m = 1.0 + xkzm_h = 1.0 + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. +/ -\code - sedi_transport = .true. - do_sedi_heat = .false. - rad_snow = .true. - rad_graupel = .true. - rad_rain = .true. - const_vi = .F. - const_vs = .F. - const_vg = .F. - const_vr = .F. - vi_max = 1. - vs_max = 2. - vg_max = 12. - vr_max = 12. - qi_lim = 1. - prog_ccn = .false. - do_qa = .true. - fast_sat_adj = .true. - tau_l2v = 225. - tau_v2l = 150. - tau_g2v = 900. - rthresh = 10.e-6 - dw_land = 0.16 - dw_ocean = 0.10 - ql_gen = 1.0e-3 - ql_mlt = 1.0e-3 - qi0_crt = 8.0E-5 - qs0_crt = 1.0e-3 - tau_i2s = 1000. - c_psaci = 0.05 - c_pgacs = 0.01 - rh_inc = 0.30 - rh_inr = 0.30 - rh_ins = 0.30 - ccn_l = 300. - ccn_o = 100. - c_paut = 0.5 - c_cracw = 0.8 - use_ppm = .false. - use_ccn = .true. - mono_prof = .true. - z_slope_liq = .true. - z_slope_ice = .true. - de_ice = .false. - fix_negative = .true. - icloud_f = 1 - mp_time = 150. +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .false. + fast_sat_adj = .false. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. +/ \endcode -check \ref gfdl_cloud_microphysics_nml for description */ diff --git a/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt b/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt index a60f3b3b6..e844f0206 100644 --- a/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt +++ b/physics/docs/pdftxt/GFSv15_suite_TKEEDMF.txt @@ -1,11 +1,10 @@ /** -\page suite2_page FV3_GFS_v15plus +\page GFS_v15plus_page GFS_v15plus Suite \section gfs2p_suite_overview Overview -This physics suite is the same as GFSv15 physics suite with \ref GFS_SATMEDMF replace of \ref GFS_HEDMF . +This physics suite is the same as GFS v15 physics suite with \ref GFS_SATMEDMF replace of \ref GFS_HEDMF . - - \ref fast_sat_adj - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST @@ -21,30 +20,22 @@ This physics suite is the same as GFSv15 physics suite with \ref GFS_SATMEDMF r - \ref GFS_SAMFshal - \ref GFDL_cloud - \ref GFS_CALPRECIPTYPE - - \ref STOCHY_PHYS \section sdf_gfsv15p Suite Definition File -The GFSv15plus suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15plus : +The GFS v15plus suite uses the parameterizations in the following order, as defined in \c SCM_GFS_v15plus : \code - + - - - fv_sat_adj - - GFS_time_vary_pre GFS_rrtmg_setup GFS_rad_time_vary GFS_phys_time_vary - stochastic_physics - stochastic_physics_sfc @@ -68,11 +59,12 @@ The GFSv15plus suite uses the parameterizations in the following order, as defin GFS_suite_interstitial_1 dcyc2t3 GFS_surface_generic_pre + GFS_surface_composites_pre GFS_suite_interstitial_2 - sfc_ex_coef + sfc_diff GFS_surface_loop_control_part1 sfc_nst_pre sfc_nst @@ -83,12 +75,13 @@ The GFSv15plus suite uses the parameterizations in the following order, as defin + GFS_surface_composites_post dcyc2t3_post sfc_diag sfc_diag_post GFS_surface_generic_post GFS_PBL_generic_pre - hedmf + satmedmfvdif GFS_PBL_generic_post gwdps_pre gwdps @@ -96,6 +89,7 @@ The GFSv15plus suite uses the parameterizations in the following order, as defin rayleigh_damp GFS_suite_stateout_update ozphys_2015 + h2ophys GFS_DCNV_generic_pre get_phi_fv3 GFS_suite_interstitial_3 @@ -116,111 +110,116 @@ The GFSv15plus suite uses the parameterizations in the following order, as defin maximum_hourly_diagnostics - - - GFS_stochastics - - \endcode \section gfs15p_nml_opt_des Namelist Option \code - fhzero = 6 - h2o_phys = .true. - oz_phys = .false. - oz_phys_2015 = .true. - ldiag3d = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - ncld = 5 - imp_physics = 11 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - iaer = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .false. - satmedmf = .true. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - nstf_name = 2,0,0,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 -\endcode -check \ref gfs_physics_nml for description +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + shinhong = .false. + do_ysu = .false. + lheatstrg = .false. + lgfdlmprad = .false. + effr_in = .false. + random_clds = .false. + trans_trac = .false. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .false. + oz_phys_2015 = .true. + h2o_phys = .true. + nstf_name = 2,1,1,0,5 + xkzminv = 0.3 + xkzm_m = 1.0 + xkzm_h = 1.0 + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. +/ -\code - sedi_transport = .true. - do_sedi_heat = .false. - rad_snow = .true. - rad_graupel = .true. - rad_rain = .true. - const_vi = .F. - const_vs = .F. - const_vg = .F. - const_vr = .F. - vi_max = 1. - vs_max = 2. - vg_max = 12. - vr_max = 12. - qi_lim = 1. - prog_ccn = .false. - do_qa = .true. - fast_sat_adj = .true. - tau_l2v = 225. - tau_v2l = 150. - tau_g2v = 900. - rthresh = 10.e-6 - dw_land = 0.16 - dw_ocean = 0.10 - ql_gen = 1.0e-3 - ql_mlt = 1.0e-3 - qi0_crt = 8.0E-5 - qs0_crt = 1.0e-3 - tau_i2s = 1000. - c_psaci = 0.05 - c_pgacs = 0.01 - rh_inc = 0.30 - rh_inr = 0.30 - rh_ins = 0.30 - ccn_l = 300. - ccn_o = 100. - c_paut = 0.5 - c_cracw = 0.8 - use_ppm = .false. - use_ccn = .true. - mono_prof = .true. - z_slope_liq = .true. - z_slope_ice = .true. - de_ice = .false. - fix_negative = .true. - icloud_f = 1 - mp_time = 150. +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .false. + fast_sat_adj = .false. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. +/ \endcode -check \ref gfdl_cloud_microphysics_nml for description */ diff --git a/physics/docs/pdftxt/GSD_CU_GF_deep.txt b/physics/docs/pdftxt/GSD_CU_GF_deep.txt index 6d97a716c..05e3cf39e 100644 --- a/physics/docs/pdftxt/GSD_CU_GF_deep.txt +++ b/physics/docs/pdftxt/GSD_CU_GF_deep.txt @@ -1,35 +1,34 @@ /** -\page GSD_CU_GF GSD Grell-Freitas Scale and Aerosol Aware Convection Scheme +\page GSD_CU_GF Grell-Freitas Scale and Aerosol Aware Convection Scheme \section gfcu_descrip Description -The Rapid Refresh (RAP) uses the Grell-Freitas (GF) convective scheme, while the HRRR allows direct prediction -of convection at its 3-km horizontal scale. In the RAP, the Grell-Freitas parameterization removes convective -instability so that the gridscale precipitation scheme does not "convect", convective precipitation is a scheme -byproduct. Grell-Freitas is an Arakawa-Schubert mass flux type scheme, and is both aerosol and model scale aware. -Aerosol awareness (emulating the impact of aerosols on precipitation processes) is obtained through changing the rate of -converstion from cloud droplets to raindrops (Berry 1968 \cite berry_1968 ), and by modifying the precipitation efficiency of the -raindrops (the fraction of total condensed water volume in the cloud's lifetime reaching the ground (Jiang et al.(2010) \cite Jiang_2010) ) -Scale awareness comes through the use of an empirical formula for the fractional area (\f$\sigma\f$) of the model grid column -containing updrafts and downdrafts (Arakawa et al. (2011) \cite Arakawa_2011 ). The entrainment rate for the updrafts is an inverse function -of \f$\sigma\f$. As the fractional coverage become large, the resolved motion takes over convective processes (why the HRRR is called -"convection allowing") and the Grell-Freitas scheme becomes a shallow convection scheme, simulating the effects of unresolved fair weather -and towering cumulus on the forecast variables. - -The GF scheme still uses an ensemble of convective schemes, but is now limited to options that modulate closure and capping -inversion thresholds for convection. After calculations for each member of the cloud ensemble in the convective scheme, the ensemble -mean time tendency for temperature, moisture, and cloud and precipitation hydrometeors is passed to the rest of the model -(Grell and \f$D\acute{e}v\acute{e}nyi\f$, 2002 \cite Grell_2002 ). Additionally, the upward mass flux from parameterized convective updrafts is balanced by -subsidence in adjacent grid columns, if horizontal resolution of the model using the parameterization is less than 10 km. - -# Operational Impacts in RAP/HRRR +The Grell-Freitas (GF) scheme as described in Grell and Freitas (2014, GF1) \cite grell_and_freitas_2014 and +Freitas et al. (2018, FG) \cite freitas_et_al_2018 follow the mass flux approach published by Grell (1993) \cite grell_1993. +Further developments by Grell and \f$D\acute{e}v\acute{e}nyi\f$ (2002) \cite Grell_2002 included implementing +stochastics through allowing parameter perturbations. In GF1 scale awareness, and the aerosol dependence through rain generation (following +Berry (1968) \cite berry_1968 and evaporation formulations (following Jiang et al. (2010) \cite Jiang_2010 ), depending on the +cloud concentration nuclei at cloud base were added. FG included mixed phase physics impact, momentum transport (as in ECMWF), + a diurnal cycle closure (Bechtold et al. (2014) \cite bechtold_et_al_2014 ), and a trimodal spectral size to simulate the interaction +and transition from shallow, congestus and deep convection regimes. The vertical massflux distribution of shallow, congestus and +deep convection regimes is characterized by Probability Density Functions (PDF's). The three PDF's are meant to represent the average +statistical mass flux characteristic of deep, congestus, and shallow (respectively) plumes in the grid area. Each PDF therefore represents +a spectrum of plumes within the grid box. Forcing is different for each characteristic type. Entrainment and detrainment are derived +from the PDF's. The deep convection considers scale awareness (Arakawa et al. (2011) \cite Arakawa_2011 ), the congestus type convection +as well as the shallow convection are not scale-aware. Aerosol dependence is implemented through dependence of rain generation and +evaporation formulations depending on the cloud concentration nuclei at cloud base. Aerosol dependence is considered experimental and +is turned off at this point. GF is able to transport tracers. + +A paper describing the latest changes and modifications is in progress and will be submitted to GMD. + +\b Operational \b Impacts \b in \b RAP/HRRR - Uses mass-flux schemes, which are more physically realistic than (sounding) adjustment schemes - - Takes parameterization uncertainty into account by using multiple convective schemes, using variations on scheme parameters - - For higher resolutions (less than 10 km), transitions as grid spacing decreases into a shallow convection scheme, as the grid scale motions begin to handle convective processes. This makes the scheme "scale aware". - - Scheme is aerosol-aware, driven by aerosol relationship to concentration of condensation nuclei. + - Takes parameterization uncertainty into account by allowing parameters from multiple convective schemes which can be perturbed +internally or with temporal and spatial correlation patterns + - For higher resolutions (less than 10 km), in addition to scale awareness as in Arakawa et al. (2011) \cite Arakawa_2011 GF can +transition as grid spacing decreases into a shallow convection scheme - Coupled to the grid scale precipitation and radiation schemes through passing of diagnosed cloud liquid and ice from simulated -precipitating convective cloud and shallow convective clouds, - +precipitating convective cloud and shallow convective clouds \section intra_rough_gf Intraphysics Communication The GF scheme passes cloud hydrometeors to the grid-scale microphysics scheme (\ref GSD_THOMPSON ) through detrainment from each diff --git a/physics/docs/pdftxt/GSD_THOMPSON.txt b/physics/docs/pdftxt/GSD_THOMPSON.txt index d3ef00dd4..525d3bedc 100644 --- a/physics/docs/pdftxt/GSD_THOMPSON.txt +++ b/physics/docs/pdftxt/GSD_THOMPSON.txt @@ -1,6 +1,6 @@ /** \page GSD_THOMPSON Thompson Aerosol-Aware Microphysics Scheme -\section thompson_descrp Description +\section thompson_descrp Description The GSD RAP/HRRR microphysics implementation represents the most aggressive attempt to include explicit prediction of diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt index 7850c8631..0db91ede1 100644 --- a/physics/docs/pdftxt/GSD_adv_suite.txt +++ b/physics/docs/pdftxt/GSD_adv_suite.txt @@ -1,10 +1,8 @@ /** -\page suite4_page FV3_GSD_v0 +\page GSD_v0_page GSD_v0 Suite \section gsd_suite_overview Overview -# History of RUC, RAP/HRRR model development at NOAA/GSD - The original Rapid Update Cycle (RUC), implemented in 1994, was designed to provide accurate short-range (0 to 12-hr) numerical forecast guidance for weather-sensitive users, including those in the U.S. aviation community. The RUC started to run every hour starting in 1998. Significant weather forecasting problems that occur in the 0- to @@ -36,15 +34,14 @@ The advanced GSD RAP/HRRR physics suite uses the parameterizations in the follow - \ref GFS_GWDC - \ref GSD_THOMPSON - \ref GFS_CALPRECIPTYPE - - \ref STOCHY_PHYS \section sdf_gsdsuite Suite Definition File -The GSD RAP/HRRR physics suite uses the parameterizations in the following order, as defined in \c FV3_GSD: +The GSD RAP/HRRR physics suite uses the parameterizations in the following order, as defined in \c SCM_GSD_v0: \code - + @@ -52,8 +49,6 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order GFS_rrtmg_setup GFS_rad_time_vary GFS_phys_time_vary - stochastic_physics - stochastic_physics_sfc @@ -79,11 +74,12 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order GFS_suite_interstitial_1 dcyc2t3 GFS_surface_generic_pre + GFS_surface_composites_pre GFS_suite_interstitial_2 - sfc_ex_coef + sfc_diff GFS_surface_loop_control_part1 sfc_nst_pre sfc_nst @@ -93,6 +89,7 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order + GFS_surface_composites_post dcyc2t3_post sfc_diag sfc_diag_post @@ -124,11 +121,7 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order mp_thompson_post GFS_MP_generic_post cu_gf_driver_post - - - - - GFS_stochastics + maximum_hourly_diagnostics @@ -138,72 +131,71 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order \section gsd_nml_option Namelist Option \code - fhzero = 6 - h2o_phys = .true. - oz_phys = .false. - oz_phys_2015 = .true. - ldiag3d = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - ncld = 5 - imp_physics = 8 - ltaerosol = .true. - lradar = .false. - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - iaer = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .false. - satmedmf = .false. - do_mynnedmf = .true. - do_mynnsfclay = .false. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 3 - imfdeepcnv = 3 - force_lmfshal = .true. - lmfshal = .false. - force_lmfdeep2 = .false. - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - oz_phys = .false. - oz_phys_2015 = .true. - nstf_name = 2,0,0,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_sfcperts = .false. - lsm = 2 - lsoil_lsm = 9 - icloud_bl = 1 - bl_mynn_tkeadvect = .true. - bl_mynn_edmf = 1 - bl_mynn_edmf_mom = 1 +&gfs_physics_nml + fhzero = 6. + h2o_phys = .true. + ldiag3d = .true. + fhcyc = 0. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 8 + ltaerosol = .true. + lradar = .true. + ttendlim = -999. + make_number_concentrations = .true. + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .false. + lheatstrg = .false. + do_mynnedmf = .true. + do_mynnsfclay = .false. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 3 + imfdeepcnv = 3 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .false. + oz_phys_2015 = .true. + nstf_name = 2,1,1,0,5 + cplflx = .false. + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. + lsm = 2 + lsoil_lsm = 9 + icloud_bl = 1 + bl_mynn_tkeadvect = .true. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 +/ \endcode -Check NML option description at: -- \ref gfs_physics_nml -- \ref gsd_hrrr_nml */ diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index 97f5fbb22..702c22256 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -8,21 +8,20 @@ In the CCPP-Physics v3.0 release, each parameterization is in its own modern For code maintenance. While some individual parameterization can be invoked for the GMTB SCM, most users will assemble the parameterizations in suites. -- Radiation: +- \b Radiation - \subpage GFS_RRTMG -- PBL and turbulence: +- \b PBL \b and \b Turbulence - \subpage GFS_HEDMF - \subpage GFS_SATMEDMF - \subpage GSD_MYNNEDMF -- Land surface model: +- \b Land \b Surface \b Model - \subpage GFS_NOAH - - \subpage surf_pert - \subpage GSD_RUCLSM -# Cumulus parameterizations: - - GFS Simplified Arakawa Schubert (SAS) +- \b Cumulus \b Parameterizations + - \subpage GFS_SAMF - \subpage GFS_SAMFdeep - \subpage GFS_SAMFshal - \subpage CSAW_scheme @@ -30,35 +29,28 @@ parameterizations in suites. - \ref cu_gf_deep_group - \ref cu_gf_sh_group -- Microphysics: +- \b Microphysics - \subpage GFDL_cloud - - \subpage fast_sat_adj - \subpage CPT_MG3 - \subpage GSD_THOMPSON -- Stochastic: - - \subpage STOCHY_PHYS - - \subpage surf_pert - -- Ozone: +- \b Ozone \b Photochemical \b Production \b and \b Loss - \subpage GFS_OZPHYS - - \ref GFS_ozphys - \ref GFS_ozphys_2015 -- Water Vapor Photochemical Production and Loss: +- \b Water \b Vapor \b Photochemical \b Production \b and \b Loss - \subpage GFS_H2OPHYS -- Gravity Wave Drag: +- \b Gravity \b Wave \b Drag - \subpage GFS_GWDPS - \subpage GFS_GWDC - -- Surface layer/Sea Ice/NSST: +- \b Surface \b Layer \b and \b Simplified \b Ocean \b and \b Sea \b Ice \b Representation - \subpage GFS_SFCLYR - \subpage GFS_NSST - \subpage GFS_SFCSICE -- Others: +- \b Others - \subpage GFS_RAYLEIGH - \subpage GFS_CALPRECIPTYPE @@ -69,57 +61,37 @@ In addition to the physical schemes themselves, this scientific documentation al - \ref radcons The input information for the physics include the values of the gridbox mean prognostic variables (wind components, temperature, -specific humidity, cloud fraction, vater contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional +specific humidity, cloud fraction, water contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional dynamical tendencies for the same variables and various surface fields, both fixed and variable. -The time integration of the GFS physics suite is based on the following: -- The tendencies from the different physical processes are computed by the parameterizations or derived in separate interstitial routines; +The time integration of the physics suites is based on the following: +- The tendencies from the different physical processes are computed by the parameterizations or derived in separate interstitial routines - The first part of the suite, comprised of the parameterizations for radiation, surface layer, surface (land, ocean, and sea ice), boundary layer, -orographic gravity wave drag, and Rayleigh damping, is computed using a hybrid of parallel and sequential splitting (Donahue and Caldwell(2018) -\cite donahue_and_caldwell_2018), a method in which the various parameterizations use the same model state as input but feel the effect of the preceding +orographic gravity wave drag, and Rayleigh damping, is computed using a hybrid of parallel and sequential splitting described in Donahue and Caldwell(2018) +\cite donahue_and_caldwell_2018, a method in which the various parameterizations use the same model state as input but are impacted by the preceding parameterizations. The tendencies from the various parameterizations are then added together and used to update the model state. -- The second part of the physics suite, comprised of the parameterizations of ozone, stratospheric \f$H_2O\f$, deep convection, convective gravity wave drag, +- The surface parameterizations (land, ocean and sea ice) are invoked twice in a loop, with the first time to create a guess, and the second time to +produce the tendencies. +- The second part of the physics suite, comprised of the parameterizations of ozone, stratospheric water vapor, deep convection, convective gravity wave drag, shallow convection, and microphysics, is computed using sequential splitting in the order listed above, in which the model state is updated between calls to the parameterization. +- If the in-core saturation adjustment is used (\p do_sat_adj=.true.), it is invoked at shorter timesteps along with the dynamical solver. \section allsuite_overview Physics Suites -With funding from the Next Generation Global Prediction System (NGGPS) initiative and broad support from the community NCEP/EMC recently -replaced the dynamic core in its flagship operational model, the GFS. Version 15 of the GFS (GFSv15), schedule for implementation in -middle 2019, will include the Finite-volume Cubed-Sphere (FV3) non-hydrostatic dynamic core in place of the long-running spectral Gaussian -hydrostatic core. - -The next major upgrade of the GFS is expected to be in the area of model physics.Physics upgrades are particular challenging.But community -support, enhanced collaborations, and the CCPP framework are now making it feasible to accelerate advancements in operational model physics -through wholesale replacement of individual parameterizations or even entire parameterizations suites. - -Current plans call for major changes to the GFSv15 parameterization suite in anticipation of the GFSv16 implementaion, schedule for FY2021. -Several parameterizations have been identified as likely new components of the \b GFSv16 suite, including: -- The \b RRTMGP radiation parameterization, developed by Robert Pincus and colleagues, is scheduled to replace the current \ref GFS_RRTMG -- The \b Noah-MP land-surface parameterization is expected to replace the current \ref GFS_NOAH -- A unified gravity-wave-drag (\b UGWD) parameterization, developed by Valery Yudin and collaborators, will replace the separate -\ref GFS_GWDPS and \ref GFS_GWDC currently being used. -- Fresh-water lake (\b FLAKE) and multi-layer snow parameterizations will be introduced to enhance the representation of earth-atmosphere -interactions. - -In addition, new parameterizations for deep and shallow moist convection (CP), cloud microphysics (MP), and planetary boundary layer (PBLP)/ -turbulence are being considered. Unlike the parameterizations mentioned above, there are multiple viable options for parameterizing these -processes in GFSv16, including the schemes currently used in GFSv15. The "suite" approach is being taken for this subset of all model -parameterizations because the individual parameterizations within each candidate CP-MP-PBLP suite are highly interdependent. Thus, optimal -performance typically has been achieved within the candidate suites through collective tuning of individual parameterizations. Developers -have been invited to contribute their parameterizations as members of pre-tuned suites in hopes of optimizing performance in the GFS. This -approach is one way of "leveling the playing field" so that parameterizations developed outside the GFS framework are not unduly handicapped -by sub-optimal interactions with other GFS parameterizations. - - -Two suites of CP-MP-PBLP parameterizations have been identified as possible replacements for the current GFSv15 suite. \b GSD suite is -derived from the operational Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR) modeling system \cite Benjamin_2016 and was developed largely at NOAA/OAR/ESRL/GSD for mesoscale applications, while the second candidate, i.e., the \b CPT \b (Climate Process Team) suite, has components that were -developed at multiple ressearch centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Its individual -parameterizations have been applied primarily to medium-range and longer prediction scales. For the GFSv15 suite, a very similar suite, but -with TKE-EDMF in repace of K-EDMF have been developed at EMC (Han et al. 2019 \cite Han_2019). - -Table 1. physics-suite options included in this documentation. + +The CCPP v3 includes the suite used in the GFS v15 implemented operationally in June 2019 (suite GFS_v15). Additionally, it includes three +developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v15plus is identical to suite +GFS_v15 except for a replacement in the PBL parameterization (Han et al. 2019 \cite Han_2019 ). Suite csawmg differs from GFS_v15 as it +contains different convection and microphysics schemes made available through a NOAA Climate Process Team (CPT) with components developed +at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15 as it +uses the convection, microphysics, and boundary layer schemes employed in the Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR \cite Benjamin_2016 ) +operational models and was assembled by NOAA/GSD. An assessment of an earlier version of these suites can be found in + the UFS portal +and in the GMTB website . + +Table 1. Physics suite options included in this documentation. \tableofcontents -| Phys suites | FV3_GFS_v15 | FV3_GFS_v15plus | FV3_CPT_v0 | FV3_GSD_v0 | +| Phys suites | GFS_v15 | GFS_v15plus | csawmg | GSD_v0 | |------------------|----------------------|----------------------|---------------------|----------------------| | Deep Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CSAW_scheme | \ref GSD_CU_GF | | Shallow Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GSD_MYNNEDMF and \ref cu_gf_sh_group | diff --git a/physics/docs/pdftxt/all_shemes_list.txt.FV3 b/physics/docs/pdftxt/all_shemes_list.txt.FV3 new file mode 100644 index 000000000..9294027dd --- /dev/null +++ b/physics/docs/pdftxt/all_shemes_list.txt.FV3 @@ -0,0 +1,110 @@ +/** +\page allscheme_page Parameterizations and Suites Overview + +\section allscheme_overview Physics Parameterizations + +In the CCPP-Physics v3.0 release, each parameterization is in its own modern Fortran module, + which facilitates model development and +code maintenance. While some individual parameterization can be invoked for the GMTB SCM, most users will assemble the +parameterizations in suites. + +- Radiation + - \subpage GFS_RRTMG + +- PBL and Turbulence + - \subpage GFS_HEDMF + - \subpage GFS_SATMEDMF + - \subpage GSD_MYNNEDMF + +- Land Surface Model + - \subpage GFS_NOAH + - \subpage surf_pert + - \subpage GSD_RUCLSM + +- Cumulus Parameterizations + - GFS Scale-Aware Arakawa Schubert (SAS) Scheme + - \subpage GFS_SAMFdeep + - \subpage GFS_SAMFshal + - \subpage CSAW_scheme + - \subpage GSD_CU_GF + - \ref cu_gf_deep_group + - \ref cu_gf_sh_group + +- Microphysics + - \subpage GFDL_cloud + - \subpage fast_sat_adj (not available for the GMTB SCM) + - \subpage CPT_MG3 + - \subpage GSD_THOMPSON + +- Stochastic (not available for the GMTB SCM) + - \subpage STOCHY_PHYS + - \subpage surf_pert (only applicable to \ref GFS_NOAH ) + +- Ozone + - \subpage GFS_OZPHYS + - \ref GFS_ozphys_2015 + +- Water Vapor Photochemical Production and Loss + - \subpage GFS_H2OPHYS + +- Gravity Wave Drag + - \subpage GFS_GWDPS + - \subpage GFS_GWDC + +- Surface Layer and Simplified Ocean and Sea Ice Representation + - \subpage GFS_SFCLYR + - \subpage GFS_NSST + - \subpage GFS_SFCSICE + +- Others + - \subpage GFS_RAYLEIGH + - \subpage GFS_CALPRECIPTYPE + +In addition to the physical schemes themselves, this scientific documentation also covers four modules that define physics/radiation functions, parameters and constants: + - \ref func_phys + - \ref phy_sparam + - \ref physcons + - \ref radcons + +The input information for the physics include the values of the gridbox mean prognostic variables (wind components, temperature, +specific humidity, cloud fraction, water contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional + dynamical tendencies for the same variables and various surface fields, both fixed and variable. + +The time integration of the physics suites is based on the following: +- The tendencies from the different physical processes are computed by the parameterizations or derived in separate interstitial routines +- The first part of the suite, comprised of the parameterizations for radiation, surface layer, surface (land, ocean, and sea ice), boundary layer, +orographic gravity wave drag, and Rayleigh damping, is computed using a hybrid of parallel and sequential splitting described in Donahue and Caldwell(2018) +\cite donahue_and_caldwell_2018, a method in which the various parameterizations use the same model state as input but are impacted by the preceding +parameterizations. The tendencies from the various parameterizations are then added together and used to update the model state. +- The surface parameterizations (land, ocean and sea ice) are invoked twice in a loop, with the first time to create a guess, and the second time to +produce the tendencies. +- The second part of the physics suite, comprised of the parameterizations of ozone, stratospheric water vapor, deep convection, convective gravity wave drag, +shallow convection, and microphysics, is computed using sequential splitting in the order listed above, in which the model state is updated between calls +to the parameterization. +- If the in-core saturation adjustment is used (\p do_sat_adj=.true.), it is invoked at shorter timesteps along with the dynamical solver. + +\section allsuite_overview Physics Suites + +The CCPP v3 includes the suite used in the GFS v15 implemented operationally in June 2019 (suite GFS_v15). Additionally, it includes three +developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v15plus is identical to suite +GFS_v15 except for a replacement in the PBL parameterization (Han et al. 2019 \cite Han_2019 ). Suite MGCSAW differs from GFS_v15 as it +contains different convection and microphysics schemes made available through a NOAA Climate Process Team (CPT) with components developed +at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15 as it +uses the convection, microphysics, and boundary layer schemes employed in the Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR \cite Benjamin_2016 ) +operational models and was assembled by NOAA/GSD. An assessment of an earlier version of these suites can be found in + the UFS portal +and in the GMTB website . + +Table 1. Physics suite options included in this documentation. +\tableofcontents +| Phys suites | GFS_v15 | GFS_v15plus | MGCSAW | GSD_v0 | +|------------------|----------------------|----------------------|---------------------|----------------------| +| Deep Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CSAW_scheme | \ref GSD_CU_GF | +| Shallow Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GSD_MYNNEDMF and \ref cu_gf_sh_group | +| Microphysics | \ref GFDL_cloud | \ref GFDL_cloud | \ref CPT_MG3 | \ref GSD_THOMPSON | +| PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMF | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | +| Land | \ref GFS_NOAH | \ref GFS_NOAH | \ref GFS_NOAH | \ref GSD_RUCLSM | +\tableofcontents + + +*/ diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 6e90827b7..bc904bfac 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -1,235 +1,440 @@ /** -\page GFSsuite_nml Namelist Option Description +\page GFSsuite_nml Namelist Options Description + +At runtime, the SCM and the UFS Atmosphere access runtime configurations from file \c input.nml. This file contains +various namelists that control aspects of the I/O, dynamics, physics etc. Most physics-related options are grouped into +two namelists:\b &gfs_physics_nml and \b &gfdl_cloud_microphysics_nml, with additional specifications for stochastic physics in +namelists \b &stochy_nam and \b &nam_sfcperts. + +- Namelist \b &gfdl_cloud_microphysics_nml is only relevant when the GFDL microphysics is used, and its variables are defined in +module_gfdl_cloud_microphys.F90. + +- Namelist \b &gfs_physics_nml pertains to all of the suites used, but some of the variables are only relevant for specific +parameterizations. Its variables are defined in file GFS_typedefs.F90 in the host model. + +- Namelist \b &stochy_nam specifies options for the use of SPPT, SKEB and SHUM, while namelist \b &nam_sfcperts specifies whether +and how stochastic perturbations are used in the Noah Land Surface Model. -\section gfs_physics_nml GFS Physics Parameters -The namelist variable description is provided in host-model side: GFS_typedefs.F90 +
NML Description
option DDT in Host Model Description Default Value -
\b &gfs_physics_nml +
\b &gfs_physics_nml
fhzero gfs_control_type hour between clearing of diagnostic buckets 0.0
h2o_phys gfs_control_type flag for stratosphere h2o scheme .false.
ldiag3d gfs_control_type flag for 3D diagnostic fields .false. +
lssav gfs_control_type logical flag for storing diagnostics .false. +
lgocart gfs_control_type logical flag for 3D diagnostic fields for gocart 1 .false. +
cplflx gfs_control_type logical flag for cplflx collection .false. +
cplwav gfs_control_type logical flag for cplwav collection .false. +
cplchm gfs_control_type logical flag for chemistry collection .false. +
lsidea gfs_control_type logical flag for idealized physics .false.
oz_phys gfs_control_type flag for old (2006) ozone physics .true.
oz_phys_2015 gfs_control_type flag for new (2015) ozone physics .false. - fhcyc | gfs_typedefs::gfs_control_type | frequency for surface data cycling in hours | 0.0 | - use_ufo | gfs_typedefs::gfs_control_type | flag for using unfiltered orography surface option | .false. | - pre_rad | gfs_typedefs::gfs_control_type | flag for testing purpose | .false. | - ncld | gfs_typedefs::gfs_control_type | number of hydrometeors | 1 | - +
fhcyc gfs_control_type frequency for surface data cycling in hours 0.0 +
use_ufo gfs_control_type flag for using unfiltered orography surface option .false. +
pre_rad gfs_control_type flag for testing purpose .false. +
ncld gfs_control_type number of hydrometeors 1 +
imp_physics gfs_control_type choice of microphysics scheme: \n +
    +
  • 11: GFDL microphysics scheme +
  • 8: Thompson microphysics scheme +
  • 10: Morrison-Gettelman microphysics scheme +
+
99 +
pdfcld gfs_control_type flag for PDF clouds .false. +
fhswr gfs_control_type frequency for shortwave radiation (secs) 3600. +
fhlwr gfs_control_type frequency for longwave radiation (secs) 3600. +
levr gfs_control_type number of vertical levels for radiation calculations -99 +
nfxr gfs_control_type second dimension of radiation input/output array fluxr 39+6 +
iflip gfs_control_type control flag for vertical index direction \n +
    +
  • 0: index from TOA to surface +
  • 1: index from surface to TOA +
+
1 +
icliq_sw gfs_control_type sw optical property for liquid clouds \n +
    +
  • 0: input cloud optical depth, ignoring iswcice setting +
  • 1: cloud optical property scheme based on Hu and Stamnes (1993) \cite hu_and_stamnes_1993 method +
  • 2: cloud optical property scheme based on Hu and Stamnes (1993) \cite hu_and_stamnes_1993 - updated +
+
1 +
iovr_sw gfs_control_type control flag for cloud overlap in SW radiation \n +
    +
  • 0: random overlapping clouds +
  • 1: max/ran overlapping clouds +
  • 2: maximum overlap clouds (mcica only) +
  • 3: decorrelation-length overlap (mcica only) +
+
1 +
iovr_lw gfs_control_type control flag for cloud overlap in LW radiation \n +
    +
  • 0: random overlapping clouds +
  • 1: max/ran overlapping clouds +
  • 2: maximum overlap clouds (mcica only) +
  • 3: decorrelation-length overlap (mcica only) +
+
1 +
ictm gfs_control_type external data time/date control flag \n +
    +
  • -2: same as 0, but superimpose seasonal cycle from climatology data set +
  • -1: use user provided external data for the forecast time, no extrapolation +
  • 0: use data at initial condition time, if not available, use latest, no extrapolation +
  • 1: use data at the forecast time, if not available, use latest and extrapolation +
  • yyyy0: use yyyy data for the forecast time, no further data extrapolation +
  • yyyy1: use yyyy data for the forecast. if needed, do extrapolation to match the fcst time +
+
1 +
crick_proof gfs_control_type control flag for eliminating CRICK \n +
    +
  • .true.: apply layer smoothing to eliminate CRICK +
  • .false.: do not apply layer smoothing +
+
.false. +
ccnorm gfs_control_type control flag for in-cloud condensate mixing ratio \n +
    +
  • .true.: normalize cloud condensate +
  • .false.: not normalize cloud condensate +
+
.false. +
norad_precip gfs_control_type control flag for not using precip in radiation (Ferrier scheme) \n +
    +
  • .true.: snow/rain has no impact on radiation +
  • .false.: snow/rain has impact on radiation +
+
.false. +
ialb gfs_control_type SW surface albedo control flag: \n +
    +
  • 0: using climatology surface albedo scheme for SW +
  • 1: using MODIS based land surface albedo for SW +
+
0 +
iems gfs_control_type LW surface emissivity control flag (ab 2-digit integer) : \n +
    +
  • a: =0 set surface air/ground t same for LW radiation +
  • =1 set surface air/ground t diff for LW radiation +
  • b: =0 use fixed surface emissivity = 1.0 (black-body) +
  • =1 use varying climatology surface emissivity (veg based) +
  • =2 future development (not yet) +
+
0 +
iaer gfs_control_type aerosol flag "abc" (volcanic, LW, SW): \n +
    +
  • a: stratospheric volcanic aerosols +
  • b: tropospheric aerosols for LW +
  • c: tropospheric aerosols for SW \n + 0: aerosol effect is not included; \n + 1: aerosol effect is included +
+
1 +
ico2 gfs_control_type \f$CO_2\f$ data source control flag:\n +
    +
  • 0: prescribed value (380 ppmv) +
  • 1: yearly global averaged annual mean from observations +
  • 2: monthly 15 degree horizontal resolution from observations +
+
0 +
isubc_sw gfs_control_type subgrid cloud approximation control flag in SW radiation: \n +
    +
  • 0: no McICA approximation in SW radiation +
  • 1: use McICA with prescribed permutation seeds (test mode) +
  • 2: use McICA with randomly generated permutation seeds +
+
0 +
isubc_lw gfs_control_type subgrid cloud approximation control flag in LW radiation: \n +
    +
  • 0: no McICA approximation in LW radiation +
  • 1: use McICA with prescribed permutatition seeds (test mode) +
  • 2: use McICA with randomly generated permutation seeds +
+
0 +
isol gfs_control_type solar constant scheme control flag: \n +
    +
  • 0: fixed value = 1366.0 \f$W m^{-2}\f$ (old standard) +
  • 10: fixed value = 1360.8 \f$W m^{-2}\f$ (new standard) +
  • 1: NOAA ABS-scale TSI table (yearly) with 11-yr cycle approximation +
  • 2: NOAA TIM-scale TSI table (yearly) with 11-yr cycle approximation +
  • 3: CMIP5 TIM-scale TSI table (yearly) with 11-yr cycle approximation +
  • 4: CMIP5 TIM-scale TSI table (monthly) with 11-yr cycle approximation +
+
0 +
lwhtr gfs_control_type logical flag for output of longwave heating rate .true. +
swhtr gfs_control_type logical flag for output of shortwave heating rate .true. +
cnvgwd gfs_control_type logical flag for convective gravity wave drag scheme .false. +
shal_cnv gfs_control_type logical flag for calling shallow convection .false. +
lmfshal gfs_control_type flag for mass-flux shallow convection scheme in the cloud fraction calculation shal_cnv .and. (imfshalcnv > 0) +
lmfdeep2 gfs_control_type flag for mass-flux deep convection scheme in the cloud fraction calculation imfdeepcnv == 2 .or. 3 .or.4 +
cal_pre gfs_control_type logical flag for calling precipitation type algorithm .false. +
redrag gfs_control_type logical flag for applying reduced drag coefficient for high wind over sea in GFS surface layer scheme .false. +
dspheat gfs_control_type logical flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes .false. +
hybedmf gfs_control_type logical flag for calling hybrid EDMF PBL scheme .false. +
satmedmf gfs_control_type logical flag for calling TKE EDMF PBL scheme .false. +
do_mynnedmf gfs_control_type flag to activate MYNN-EDMF scheme .false. +
random_clds gfs_control_type logical flag for whether clouds are random .false. +
trans_trac gfs_control_type logical flag for convective transport of tracers .false. +
lheatstrg gfs_control_type logical flag for canopy heat storage parameterization .false. +
shinhong gfs_control_type flag for scale-aware Shinhong PBL scheme .false. +
do_ysu gfs_control_type flag for YSU PBL scheme .false. +
cnvcld gfs_control_type logical flag for convective cloud .false. +
imfshalcnv gfs_control_type flag for mass flux shallow convective scheme:\n +
    +
  • 1:July 2010 version of mass-flux shallow convective scheme (operational as of 2016) +
  • 2: scale- & aerosol-aware mass-flux shallow convective scheme (2017) +
  • 3: scale- & aerosol-aware Grell-Freitas scheme (GSD) +
  • 4: new Tiedtke scheme (CAPS) +
  • 0: modified Tiedtke's eddy-diffusion shallow convective scheme +
  • -1: no shallow convection used +
+
1 +
imfdeepcnv gfs_control_type flag for mass-flux deep convective scheme:\n +
    +
  • 1: July 2010 version of SAS convective scheme (operational version as of 2016) +
  • 2: scale- & aerosol-aware mass-flux deep convective scheme (2017) +
  • 3: scale- & aerosol-aware Grell-Freitas scheme (GSD) +
  • 4: new Tiedtke scheme (CAPS) +
+
1 +
lgfdlmprad gfs_control_type flag for GFDL mp scheme and radiation consistency .false. +
cdmbgwd(2) gfs_control_type multiplication factors for mountain blocking and orographic gravity wave drag 2.0,0.25 +
prslrd0 gfs_control_type pressure level above which to apply Rayleigh damping 0.0d0 +
lsm gfs_control_type flag for land surface model to use \n +
    +
  • 0: OSU LSM +
  • 1: NOAH LSM +
  • 2: RUC LSM +
+
1 +
lsoil gfs_control_type number of soil layers 4 +
ivegsrc gfs_control_type flag for vegetation type dataset choice: \n +
    +
  • 0: USGS +
  • 1: IGBP(20 category) +
  • 2: UMD (13 category) +
+
2 +
isot gfs_control_type flag for soil type dataset choice:\n +
    +
  • 0: Zobler soil type (9 category) +
  • 1: STATSGO soil type (19 category) +
+
0 +
mom4ice gfs_control_type flag controls mom4 sea ice .false. +
debug gfs_control_type flag for debug printout .false. +
nstf_name(5) gfs_control_type NSST related paramters:\n +
    +
  • nstf_name(1): 0=NSSTM off, 1= NSSTM on but uncoupled, 2= NSSTM on and coupled +
  • nstf_name(2): 1=NSSTM spin up on, 0=NSSTM spin up off +
  • nstf_name(3): 1=NSST analysis on, 0=NSSTM analysis off +
  • nstf_name(4): zsea1 in mm +
  • nstf_name(5): zesa2 in mm +
+
/0,0,1,0,5/ +
nst_anl gfs_control_type flag for NSSTM analysis in gcycle/sfcsub .false. +
effr_in gfs_control_type logical flag for using input cloud effective radii calculation .false. +
aero_in gfs_control_type logical flag for using aerosols in Morrison-Gettelman microphysics .false. +
iau_delthrs gfs_control_type incremental analysis update (IAU) time interval in hours 6 +
iaufhrs gfs_control_type forecast hours associated with increment files -1 +
\b Parameters \b Specific \b to \b csawmg \b Suite +
crtrh(3) gfs_control_type critical relative humidity at the surface, PBL top and at the top of the atmosphere 0.90,0.90,0.90 +
cscnv gfs_control_type logical flag for Chikira-Sugiyama deep convection .false. +
do_aw gfs_control_type flag for Arakawa-Wu scale-awere adjustment .false. +
do_awdd gfs_control_type flag to enable treating convective tendencies following Arakwaw-Wu for downdrafts (2013) .false. +
do_sb_physics gfs_control_type logical flag for SB2001 autoconversion or accretion .true. +
do_cldice gfs_control_type flag for cloud ice processes for MG microphysics .true. +
hetfrz_classnuc gfs_control_type flag for heterogeneous freezing for MG microphysics .false. +
mg_nccons gfs_control_type flag for constant droplet concentration for MG microphysics .false. +
mg_nicons gfs_control_type flag for constant ice concentration for MG microphysics .false. +
mg_ngcons gfs_control_type flag for constant graupel concentration for MG microphysics .false. +
sed_supersat gfs_control_type flag for allowing supersaturation after sedimentation for MG microphysics .true. +
mg_do_graupel gfs_control_type flag for turning on prognostic graupel (with fprcp=2) .true. +
mg_do_hail gfs_control_type flag for turning on prognostic hail (with fprcp=2) .false. +
shcnvcw gfs_control_type logical flag for shallow convective cloud .false. +
xkzm_h gfs_control_type background vertical diffusion for heat and q 1.0d0 +
xkzm_m gfs_control_type background vertical diffusion for momentum 1.0d0 +
xkzm_s gfs_control_type sigma threshold for background mom. diffusion 1.0d0 +
xkzminv gfs_control_type maximum background value of heat diffusivity in the inversion layer 0.3 +
microp_uniform gfs_control_type logical flag for uniform subcolumns for MG microphysics .true. +
mg_do_ice_gmao gfs_control_type logical flag for turning on gmao ice autoconversion in MG microphysics .false. +
mg_do_liq_liu gfs_control_type logical flag for turning on Liu liquid treatment in MG microphysics .true. +
mg_dcs gfs_control_type autoconversion size threshold for cloud ice to snow in MG microphysics 200.0 +
mg_alf gfs_control_type tuning factor for alphas (alpha = 1 - critical relative humidity) 1.0 +
mg_ts_auto_ice(2) gfs_control_type autoconversion time scale for ice in MG microphysics 180.0,180.0 +
mg_qcvar gfs_control_type cloud water relative variance in MG microphysics 1.0 +
mg_rhmini gfs_control_type relative humidity threshold parameter for nucleating ice 1.01 +
mg_ncnst gfs_control_type constant droplet num concentration \f$m^{-3}\f$ 100.e6 +
mg_ninst gfs_control_type constant ice num concentration \f$m^{-3}\f$ 0.15e6 +
mg_ngnst gfs_control_type constant graupel/hail num concertration \f$m^{-3}\f$ 0.10e6 +
mg_berg_eff_factor gfs_control_type berg efficiency factor 2.0 +
mg_qcmin(2) gfs_control_type min liquid and ice mixing ratio in MG macro clouds 1.0d-9, 1.0d-9 +
mg_precip_frac_method gfs_control_type type of precipitation fraction method 'max_overlap' +
fprcp gfs_control_type number of frozen precipitation species in MG microphysics \n +
    +
  • 0: no prognostic rain and snow +
  • 1: MG2 +
  • 2: MG3 +
+
0 +
pdfflag gfs_control_type pdf flag for MG macro physics 4 +
cs_parm(10) gfs_control_type tunable parameters for Chikira-Sugiyama convection 8.0,4.0,1.0e3,3.5e3,20.0,1.0,-999.,1.,0.6,0. +
iccn gfs_control_type flag for using IN and CCN forcing in MG2/3 microphysics .false. +
rhcmax gfs_control_type maximum critical relative humidity 0.9999999 +
\b Parameters \b Specific \b to \b GSD_v0 \b Suite +
make_number_concentrations gfs_control_type flag to calculate initial number concentrations from mass concentrations if not in ICs/BCs .false. +
ltaerosol gfs_control_type logical flag for using aerosol climotology in Thompson MP scheme .false. +
lradar gfs_control_type logical flag for computing radar reflectivity in Thompson MP scheme .false. +
ttendlim gfs_control_type temperature tendency limiter per time step in K/s, set to < 0 to deactivate -999.0 +
do_mynnsfclay gfs_control_type flag to activate MYNN-SFCLAY scheme .false. +
grav_settling gfs_control_type flag to activate gravitational settling of cloud droplets as described in Nakanishi (2000) \cite nakanishi_2000 0 +
bl_mynn_mixlength gfs_control_type flag for different version of mixing length formulation \n +
    +
  • 0: Original form from Nakanishi and Niino (2009) \cite NAKANISHI_2009 . NO scale-awareness is applied to the master mixing length, regardless of "scaleware" setting +
  • 1: HRRR operational form 201609-201807. Designed to work without the mass-flux scheme. Uses BouLac mixing length in free atmosphere. +
  • 2: HRRR operational form 201807-present. Designed to be compatible with mass-flux scheme activated (default) +
+
2 +
bl_mynn_edmf gfs_control_type flag to activate the mass-flux scheme \n +
    +
  • 0: deactivate mass-flux scheme +
  • 1: activate dynamic multiplume mass-flux scheme +
+
0 +
bl_mynn_edmf_mom gfs_control_type flag to activate the transport of momentum \n +
    +
  • 0: deactivate momentum transport in mass-flux scheme +
  • 1: activate momentum transport in dynamic multiplume mass-flux scheme. \p bl_mynn_edmf must be set to 1 +
+
1 +
bl_mynn_edmf_tke gfs_control_type flag to activate the transport of TKE \n +
    +
  • 0: deactivate TKE transport in mass-flux scheme +
  • 1: activate TKE transport in dynamic multiplume mass-flux scheme. \p bl_mynn_edmf must be set to 1 +
+
0 +
bl_mynn_edmf_part gfs_control_type flag to partitioning the MF and ED areas 0 +
bl_mynn_edmf_tkeadvect gfs_control_type activate computation of TKE advection (not yet in use for FV3) \n +
    +
  • false: deactivate TKE advection +
  • true: activate TKE advection +
+
.false. +
bl_mynn_edmf_tkebudget gfs_control_type flag to activate TKE budget 0 +
bl_mynn_edmf_cloudpdf gfs_control_type flag to determine which cloud PDF to use \n +
    +
  • 0: use Sommeria-Deardorff subgrid cloud PDF +
  • 1: use Kuwano-Yoshida subgrid cloud PDF +
  • 2: use modified Chaboureau-Bechtold subgrid cloud PDF +
+
2 +
bl_mynn_edmf_cloudmix gfs_control_type flag to activate mixing of cloud species \n +
    +
  • 0: deactivate the mixing of any water species mixing ratios +
  • 1: activate the mixing of all water species mixing ratios +
+
1 +
bl_mynn_mixqt gfs_control_type flag to mix total water or individual species \n +
    +
  • 0: mix individual water species separately +
  • 1: DO NOT USE +
+
0 +
icloud_bl gfs_control_type flag to coupling SGS clouds to radiation \n +
    +
  • 0: deactivate coupling subgrid clouds to radiation +
  • 1: activate subgrid cloud coupling to radiation (highly suggested) +
+
1 +
lsoil_lsm gfs_control_type number of soil layers internal to land surface model -1 +
\b Stochastic \b Physics \b Specific \b Parameters +
do_sppt gfs_control_type flag for stochastic SPPT option .false. +
do_shum gfs_control_type flag for stochastic SHUM option .false. +
do_skeb gfs_control_type flag for stochastic SKEB option .false. +
do_sfcperts gfs_control_type flag for stochastic surface perturbations option .false. +
\b &nam_sfcperts +
nsfcpert gfs_control_type number of weights for stochastic surface perturbation 0 +
pertz0 gfs_control_type magnitude of perturbation of momentum roughness length -999. +
pertzt gfs_control_type magnitude of perturbation of heat to momentum roughness length ratio -999. +
pertshc gfs_control_type magnitude of perturbation of soil hydraulic conductivity -999. +
pertlai gfs_control_type magnitude of perturbation of leaf area index -999. +
pertalb gfs_control_type magnitude of surface albedo perturbation -999. +
pertvegf gfs_control_type magnitude of perturbation of vegetation fraction -999. +
iseed_sfc compns_stochy_mod random seeds (if 0 use system clock) 0 +
sfc_tau compns_stochy_mod time scales -999. +
sfc_lscale compns_stochy_mod length scales -999. +
sppt_land compns_stochy_mod .false. +
\b &stochy_nam +
use_zmtnblck compns_stochy_mod flag for mountain blocking. .T. = do not apply perturbations below the dividing streamline that is diagnosed by the gravity wave drag, mountain blocking scheme .false. +
ntrunc compns_stochy_mod spectral resolution (e.g. T126) of random patterns -999 +
lon_s, lat_s compns_stochy_mod number of longitude and latitude point for the Gaussian grid -999 +
fhstoch compns_stochy_mod forecast hour to write out random pattern in order to restart the pattern for a different forecast (used in DA), file is stoch_out.F -999.0 +
stochini compns_stochy_mod set to true if wanting to read in a previous random pattern (input file need to be named \c stoch_ini) .false. +
sppt compns_stochy_mod amplitude of random patterns -999. +
sppt_tau compns_stochy_mod decorrelation timescales in seconds -999. +
sppt_lscale compns_stochy_mod decorrelation spatial scales in meters -999. +
sppt_logit compns_stochy_mod logit transform for SPPT to bounded interval [-1,+1] .false. +
iseed_sppt compns_stochy_mod seeds for setting the random number sequence (ignored if \c stochini is true) 0 +
sppt_sigtop1, sppt_sigtop2 compns_stochy_mod sigma levels to taper perturbations to zeros 0.1, 0.025 +
sppt_sfclimit compns_stochy_mod reduce amplitude of SPPT near surface (lowest 2 levels) .false. +
shum compns_stochy_mod amplitude of stochastic boundary layer specific humidity perturbations -999. +
shum_tau compns_stochy_mod decorrelation time scales in seconds -999. +
shum_lscale compns_stochy_mod decorrelation spatial scales in meters -999. +
shum_sigefold compns_stochy_mod e-folding lengthscale (in units of sigma) of specific humidity perturbations 0.2 +
skeb compns_stochy_mod stochastic KE backscatter amplitude -999. +
skeb_tau compns_stochy_mod decorrelation timescales in seconds -999. +
skeb_lscale compns_stochy_mod decorrelation spatial scales in meter -999. +
iseed_skeb compns_stochy_mod seeds for setting the random number sequnce (ignored if \c stochini is true) 0 +
skeb_vfilt compns_stochy_mod 0 +
skebnorm compns_stochy_mod 0: random pattern is stream function,1: pattern is kenorm, 2: pattern is vorticity 0 +
skeb_varspect_opt compns_stochy_mod Gaussian or power law variance spectrum for SKEB (0: Gaussian, 1: power law) 0 +
skeb_npass compns_stochy_mod number of passes of smoother for dissipation estimate 11 +
skeb_vdof compns_stochy_mod the number of degrees of freedom in the vertical for the SKEB random pattern 5 +
skeb_sigtop1, skeb_sigtop2 compns_stochy_mod sigma levels to taper perturbations to zeros 0.1, 0.025 +
skebint compns_stochy_mod 0 +
\b &gfdl_cloud_microphysics_nml +
sedi_transport gfdl_cloud_microphys_mod logical flag for turning on horizontal momentum transport during sedimentation .true. +
do_sedi_heat gfdl_cloud_microphys_mod logical flag for turning on horizontal heat transport during sedimentation .true. +
rad_snow gfdl_cloud_microphys_mod logical flag for considering snow in cloud fraction calculation .true. +
rad_graupel gfdl_cloud_microphys_mod logical flag for considering graupel in cloud fraction calculation .true. +
rad_rain gfdl_cloud_microphys_mod logical flag for considering rain in cloud fraction calculation .true. +
const_vi gfdl_cloud_microphys_mod logical flag for using constant cloud ice fall speed .false. +
const_vs gfdl_cloud_microphys_mod logical flag for using constant snow fall speed .false. +
const_vg gfdl_cloud_microphys_mod logical flag for using constant graupel fall speed .false. +
const_vr gfdl_cloud_microphys_mod logical flag for using constant rain fall speed .false. +
vi_max gfdl_cloud_microphys_mod maximum fall speed for cloud ice 0.5 +
vs_max gfdl_cloud_microphys_mod maximum fall speed for snow 5.0 +
vg_max gfdl_cloud_microphys_mod maximum fall speed for graupel 8.0 +
vr_max gfdl_cloud_microphys_mod maximum fall speed for rain 12.0 +
qi_lim gfdl_cloud_microphys_mod cloud ice limiter to prevent large ice built up in cloud ice freezing and deposition 1. +
prog_ccn gfdl_cloud_microphys_mod logical flag for activating prognostic CCN (not supported in GFS Physics) .false. +
do_qa gfdl_cloud_microphys_mod logical flag for activating inline cloud fraction diagnosis in fast saturation adjustment .true. +
fast_sat_adj gfdl_cloud_microphys_mod logical flag for adjusting cloud water evaporation/freezing, cloud ice deposition when fast saturation adjustment is activated .true. +
tau_l2v gfdl_cloud_microphys_mod time scale for evaporation of cloud water to water vapor. Increasing(decreasing) \p tau_l2v can decrease(boost) deposition of cloud water to water vapor 300. +
tau_v2l gfdl_cloud_microphys_mod time scale for condensation of water vapor to cloud water. Increasing(decreasing) \p tau_v2l can decrease(boost) condensation of water vapor to cloud water 150. +
tau_g2v gfdl_cloud_microphys_mod time scale for sublimation of graupel to water vapor. Increasing(decreasing) \p tau_g2v can decrease(boost) sublimation of graupel to water vapor 900. +
rthresh gfdl_cloud_microphys_mod critical cloud water radius for autoconversion (cloud water -> rain). Increasing(decreasing) of \p rthresh makes the autoconversion harder(easier) 10.0e-6 +
dw_land gfdl_cloud_microphys_mod base value for subgrid deviation/variability over land 0.20 +
dw_ocean gfdl_cloud_microphys_mod base value for subgrid deviation/variability over ocean 0.10 +
ql_gen gfdl_cloud_microphys_mod maximum value for cloud water generated from condensation of water vapor (water vapor-> cloud water) 1.0e-3 +
ql_mlt gfdl_cloud_microphys_mod maximum value of cloud water allowed from melted cloud ice (cloud ice -> cloud water or rain) 2.0e-3 +
qi0_crt gfdl_cloud_microphys_mod threshold of cloud ice to snow autoconversion (cloud ice -> snow) 1.0e-4 +
qs0_crt gfdl_cloud_microphys_mod threshold of snow to graupel autoconversion (snow -> graupel) 1.0e-3 +
tau_i2s gfdl_cloud_microphys_mod time scale for autoconversion of cloud ice to snow 1000. +
c_psaci gfdl_cloud_microphys_mod accretion efficiency of cloud ice to snow 0.02 +
c_pgacs gfdl_cloud_microphys_mod accretion efficiency of snow to graupel 2.0e-3 +
rh_inc gfdl_cloud_microphys_mod relative humidity increment for complete evaporation of cloud water and cloud ice 0.25 +
rh_inr gfdl_cloud_microphys_mod relative humidity increment for sublimation of snow 0.25 +
rh_ins gfdl_cloud_microphys_mod relative humidity increment for minimum evaporation of rain 0.25 +
ccn_l gfdl_cloud_microphys_mod base CCN over land \f$cm^{-3}\f$ 270. +
ccn_o gfdl_cloud_microphys_mod base CCN over ocean \f$cm^{-3}\f$ 90. +
c_paut gfdl_cloud_microphys_mod autoconversion efficiency of cloud water to rain 0.55 +
c_cracw gfdl_cloud_microphys_mod accretion efficiency of cloud water to rain 0.9 +
use_ppm gfdl_cloud_microphys_mod \e true to use PPM fall scheme; \e false to use time-implicit monotonic fall scheme .false. +
use_ccn gfdl_cloud_microphys_mod \e true to compute prescribed CCN. It should be .true. when \p prog_ccn = .false. .false. +
mono_prof gfdl_cloud_microphys_mod \e true to turn on terminal fall with monotonic PPM scheme. This is used together with \p use_ppm=.true. .true. +
z_slope_liq gfdl_cloud_microphys_mod \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud water to rain .true. +
z_slope_ice gfdl_cloud_microphys_mod \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud ice to snow .false. +
de_ice gfdl_cloud_microphys_mod \e true to convert excessive cloud ice to snow to prevent ice over-built from other sources like convection scheme (not supported in GFS physics) .false. +
fix_negative gfdl_cloud_microphys_mod \e true to fix negative water species using nearby points .false. +
icloud_f gfdl_cloud_microphys_mod flag (0,1,or 2) for cloud fraction diagnostic scheme 0 +
mp_time gfdl_cloud_microphys_mod time step of GFDL cloud microphysics 150.
- - - -\section gfs_physics_nml GFS Physics Parameters - option | DDT in Host Model | Description | Default Value | --------------------|---------------------------------|----------------------------------------------------|---------------| - fhzero | gfs_typedefs::gfs_control_type | hour between clearing of diagnostic buckets | 0.0 | - h2o_phys | gfs_typedefs::gfs_control_type | flag for stratosphere h2o scheme | .false. | - ldiag3d | gfs_typedefs::gfs_control_type | flag for 3D diagnostic fields | .false. | - oz_phys | gfs_typedefs::gfs_control_type | flag for old (2006) ozone physics | .true. | - oz_phys_2015 | gfs_typedefs::gfs_control_type | flag for new (2015) ozone physics | .false. | - fhcyc | gfs_typedefs::gfs_control_type | frequency for surface data cycling in hours | 0.0 | - use_ufo | gfs_typedefs::gfs_control_type | flag for using unfiltered orography surface option | .false. | - pre_rad | gfs_typedefs::gfs_control_type | flag for testing purpose | .false. | - ncld | gfs_typedefs::gfs_control_type | number of hydrometeors | 1 | - imp_physics | gfs_typedefs::gfs_control_type | choice of microphysics scheme: \n 11: GFDL microphysics scheme \n 8: GSD Thompson microphysics scheme \n 6: WSMG microphysics scheme \n 10: Morrison-Gettelman microphysics scheme | 99 | - pdfcld | gfs_typedefs::gfs_control_type | flag for PDF clouds | .false. | - fhswr | gfs_typedefs::gfs_control_type | frequency for shortwave radiation (secs) | 3600. | - fhlwr | gfs_typedefs::gfs_control_type | frequency for longwave radiation (secs) | 3600. | - ialb | gfs_typedefs::gfs_control_type | SW surface albedo control flag: \n 0: using climatology surface albedo scheme for SW \n 1: using MODIS based land surface albedo for SW | 0 | - iems | gfs_typedefs::gfs_control_type | LW surface emissivity control flag: \n 0: black-body emissivity \n 1:surface type based climatology in 1 degree horizontal resolution | 0 | - iaer | gfs_typedefs::gfs_control_type | aerosol flag "abc" (volcanic, LW, SW): \n a: stratospheric volcanic aerosols \n b: tropospheric aerosols for LW \n c: tropospheric aerosols for SW.\n 0: aerosol effect is not included; 1: aerosol effect is included | 1 | - ico2 | gfs_typedefs::gfs_control_type | \f$CO_2\f$ data source control flag:\n 0: prescribed value (380 ppmv) \n 1: yearly global averaged annual mean from observations \n 2: monthly 15 degree horizontal resolution from observations| 0 | - isubc_sw | gfs_typedefs::gfs_control_type | subgrid cloud approximation control flag in SW radiation: \n 0: no McICA approximation in SW radiation \n 1: use McICA with prescribed permutation seeds (test mode) \n 2: use McICA with randomly generated permutation seeds | 0 | - isubc_lw | gfs_typedefs::gfs_control_type | subgrid cloud approximation control flag in LW radiation: \n 0: no McICA approximation in LW radiation \n 1: use McICA with prescribed permutation seeds (test mode) \n 2: use McICA with randomly generated permutation seeds | 0 | - isol | gfs_typedefs::gfs_control_type | solar constant scheme control flag: \n 0: fixed value = 1366.0 \f$W m^{-2}\f$ (old standard) \n 10: fixed value =1360.8 \f$W m^{-2}\f$ (new standard) \n 1: NOAA ABS-scale TSI table (yearly) with 11-yr cycle approximation \n 2: NOAA TIM-scale TSI table(yearly) with 11-yr cycle approximation \n 3: CMIP5 TIM-scale TSI table (yearly) with 11-yr cycle approximation \n 4: CMIP5 TIM-scale TSI table (monthly) with 11-yr cycle approximation | 0 | - lwhtr | gfs_typedefs::gfs_control_type | logical flag for output of longwave heating rate | .true. | - swhtr | gfs_typedefs::gfs_control_type | logical flag for output of shortwave heating rate | .true. | - cnvgwd | gfs_typedefs::gfs_control_type | logical flag for convective gravity wave drag scheme | .false. | - shal_cnv | gfs_typedefs::gfs_control_type | logical flag for calling shallow convection | .false. | - cal_pre | gfs_typedefs::gfs_control_type | logical flag for calling precipitation type algorithm | .false. | - redrag | gfs_typedefs::gfs_control_type | logical flag for applying reduced drag coefficient for high wind over sea in GFS surface layer scheme | .false. | - dspheat | gfs_typedefs::gfs_control_type | logical flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes | .false. | - hybedmf | gfs_typedefs::gfs_control_type | logical flag for calling hybrid EDMF PBL scheme | .false. | - random_clds | gfs_typedefs::gfs_control_type | logical flag for whether clouds are random | .false. | - trans_trac | gfs_typedefs::gfs_control_type | logical flag for convective transport of tracers | .false. | - cnvcld | gfs_typedefs::gfs_control_type | logical flag for convective cloud | .false. | - imfshalcnv | gfs_typedefs::gfs_control_type | flag for mass flux shallow convective scheme:\n 1:July 2010 version of mass-flux shallow convective scheme (operational as of 2016) \n 2: scale- & aerosol- aware mass-flux shallow convective scheme (2017) \n 0: modified Tiedtke's eddy-diffusion shallow convective scheme \n -1: no shallow convection used | 1 | - imfdeepcnv | gfs_typedefs::gfs_control_type | flag for mass-flux deep convective scheme:\n 1: July 2010 version of SAS convective scheme (operational version as of 2016) \n 2: scale- & aerosol-aware mass-flux deep convective scheme (2017) \n 0: old SAS convective scheme before July 2010 | 1 | - cdmbgwd(2) | gfs_typedefs::gfs_control_type | multiplication factors for mountain blocking and orographic gravity wave drag | /2.0d0,0.25d0/ | - prslrd0 | gfs_typedefs::gfs_control_type | pressure level above which to apply Rayleigh damping | 0.0d0 | - ivegsrc | gfs_typedefs::gfs_control_type | flag for vegetation type dataset choice: \n 0: USGS; 1: IGBP(20 category); 2: UMD (13 category) | 2 | - isot | gfs_typedefs::gfs_control_type | flag for soil type dataset choice:\n 0: Zobler soil type (9 category) \n 1: STATSGO soil type (19 category) | 0 | - debug | gfs_typedefs::gfs_control_type | flag for debug printout | .false. | - nstf_name(5) | gfs_typedefs::gfs_control_type | NSST related paramters:\n flag 0 for no NST; 1 for uncoupled nst; and 2 for coupled NST \n nstf_name(1): 0=NSSTM off, 1= NSSTM on but uncoupled, 2= NSSTM on and coupled \n nstf_name(2): 1=NSSTM spin up on, 0=NSSTM spin up off \n nstf_name(3): 1=NSST analysis on, 0=NSSTM analysis off \n nstf_name(4): zsea1 in mm \n nstf_name(5): zesa2 in mm | /0,0,1,0,5/ | - nst_anl | gfs_typedefs::gfs_control_type | flag for NSSTM analysis in gcycle/sfcsub | .false. | - satmedmf | gfs_typedefs::gfs_control_type | logical flag for calling TKE EDMF PBL scheme | .false. | - -\section cpt_physics_nml EMC CPT Physics Parameters - \c NML_option | Definition in Host Model | Description | Default Value | --------------------|----------------------------------|---------------------------------------------------|-----------------------| - crtrh(3) | gfs_typedefs::gfs_control_type | critical relative humidity at the surface, PBL top and at the top of the atmosphere | /0.90d0,0.90d0,0.90d0/ | - ras | gfs_typedefs::gfs_control_type | logical flag for RAS convection scheme | .false. | - cscnv | gfs_typedefs::gfs_control_type | logical flag for Chikira-Sugiyama deep convection | .false. | - do_aw | gfs_typedefs::gfs_control_type | flag for Arakawa-Wu scale-awere adjustment | .false. | - shcnvcw | gfs_typedefs::gfs_control_type | logical flag for shallow convective cloud | .false. | - xkzm_h | gfs_typedefs::gfs_control_type | background vertical diffusion for heat q | 1.0d0 | - xkzm_m | gfs_typedefs::gfs_control_type | background vertical diffusion for momentum | 1.0d0 | - xkzm_s | gfs_typedefs::gfs_control_type | sigma threshold for background mom. diffusion | 1.0d0 | - microp_uniform | gfs_typedefs::gfs_control_type | logical flag for uniform subcolumns for MG microphysics | .true. | - mg_do_ice_gmao | gfs_typedefs::gfs_control_type | logical flag for turning on gmao ice autoconversion in MG microphysics | .false. | - mg_do_liq_liu | gfs_typedefs::gfs_control_type | logical flag for turning on Liu liquid treatment in MG microphysics | .true. | - mg_dcs | gfs_typedefs::gfs_control_type | autoconversion size threshold for cloud ice to snow in MG microphysics | 200.0 | - mg_alf | gfs_typedefs::gfs_control_type | tuning factor for alphas (alpha = 1 - critical relative humidity) | 1.0 | - mg_ts_auto_ice(2) | gfs_typedefs::gfs_control_type | autoconversion time scale for ice in MG microphysics | /180.0,180.0/ | - mg_qcvar | gfs_typedefs::gfs_control_type | cloud water relative variance in MG microphysics | 1.0 | - fprcp | gfs_typedefs::gfs_control_type | number of frozen precipitation species in MG microphysics \n 0: no prognostic rain and snow, 1: MG2;2:MG3 | 0 | - cs_parm(10) | gfs_typedefs::gfs_control_type | tunable parameters for Chikira-Sugiyama convection | /8.0,4.0,1.0e3,3.5e3,20.0,1.0,-999.,1.,0.6,0./ | - iccn | gfs_typedefs::gfs_control_type | flag for using IN and CCN forcing in MG2/3 microphysics | .false. | - aero_in | gfs_typedefs::gfs_control_type | flag for using aerosols in MG microphysics | .false. | - ctei_rm(2) | gfs_typedefs::gfs_control_type | critical cloud top entrainment instability criteria (used if mstrat=.true.) | /10.0d0,10.0d0/ | - rhcmax | gfs_typedefs::gfs_control_type | maximum critical relative humidity | 0.9999999 | - effr_in | gfs_typedefs::gfs_control_type | logical flag for using input cloud effective radii calculation | .false. | - cplflx | gfs_typedefs::gfs_control_type | logical flag for controlling cplflx collection | .false. | - iau_delthrs | gfs_typedefs::gfs_control_type | incremental analysis update (IAU) time interval in hours | 6 | - iaufhrs | gfs_typedefs::gfs_control_type | forecast hours associated with increment files | -1 | - -\section gsd_hrrr_nml GSD Physics Parameters - \c NML_option | Definition in Host Model | Description | Default Value | ----------------------------|---------------------------------|-----------------------------------------------|-----------------------| - ltaerosol | gfs_typedefs::gfs_control_type | logical flag for using aerosol climotology | .false. | - lradar | gfs_typedefs::gfs_control_type | logical flag for computing radar reflectivity | .false. | - do_mynnedmf | gfs_typedefs::gfs_control_type | flag to activate MYNN-EDMF scheme | .false. | - do_mynnsfclay | gfs_typedefs::gfs_control_type | flag to activate MYNN-SFCLAY scheme | .false. | - lmfshal | gfs_typedefs::gfs_control_type | flag for mass-flux shallow convection scheme in the cloud fraction calculation (lmf=shal_cnv .and. imfshalcnv > 0) | shal_cnv .and. (imfshalcnv > 0) | - bl_mynn_mixlength | gfs_typedefs::gfs_control_type | flag for different version of mixing length formulation \n 0: Original form from Nakanishi and Niino (2009) \cite NAKANISHI_2009 . NO scale-awareness is applied to the master mixing length, regardless of "scaleware" setting \n 1: HRRR operational form 201609-201807.Designed to work without the mass-flux scheme. Uses BouLac mixing length in free atmosphere. \n 2: HRRR operational form 201807-present. Designed to be compatible with mass-flux scheme activated (default) | 2 | - bl_mynn_edmf | gfs_typedefs::gfs_control_type | flag to activate the mass-flux scheme \n 0: Deactivate mass-flux scheme \n 1: Activate dynamic multiplume mass-flux scheme (default) | 0 | - bl_mynn_edmf_mom | gfs_typedefs::gfs_control_type | flag to activate the transport of momentum \n 0: Deactivate momentum transport in mass-flux scheme (default) \n 1: Activate momentum transport in dynamic multiplume mass-flux scheme. \p bl_mynn_edmf must be set to 1 | 1 | - bl_mynn_edmf_tke | gfs_typedefs::gfs_control_type | flag to activate the transport of TKE \n 0: Deactivate TKE transport in mass-flux scheme (default) \n 1: Activate TKE transport in dynamic multiplume mass-flux scheme. \p bl_mynn_edmf must be set to 1 | 0 | - bl_mynn_edmf_tkeadvect | gfs_typedefs::gfs_control_type | activate computation of TKE advection (not yet in use for FV3) \n False: Deactivate TKE advection (default) \n True: Activate TKE advection | .false. | - bl_mynn_edmf_tkebudget | gfs_typedefs::gfs_control_type | flag to activate TKE budget | 0 | - bl_mynn_edmf_cloudpdf | gfs_typedefs::gfs_control_type | flag to determine which cloud PDF to use \n 0: use Sommeria-Deardorff subgrid cloud PDF \n 1: use Kuwano-Yoshida subgrid cloud PDF \n 2: use modified Chaboureau-Bechtold subgrid cloud PDF (default) | 2 | - bl_mynn_edmf_cloudmix | gfs_typedefs::gfs_control_type | flag to activate mixing of cloud species \n: Deactivate the mixing of any water species mixing ratios \n 1: activate the mixing of all water species mixing ratios (default) | 1 | - bl_mynn_mixqt | gfs_typedefs::gfs_control_type | flag to mix total water or individual species \n 0: Mix individual water species separately (default) \n 1: DO NOT USE | 0 | - icloud_bl | gfs_typedefs::gfs_control_type | flag to coupling sgs clouds to radiation \n 0: Deactivate coupling subgrid clouds to radiation \n 1: Activate subgrid cloud coupling to radiation (highly suggested) | 1 | - lsoil_lsm | gfs_typedefs::gfs_control_type | number of soil layers internal to land surface model | -1 | - lsm | gfs_typedefs::gfs_control_type | flag for land surface model | 1 | - -\section stochy_nml Stochastic Physics Parameters - \c NML_option | Definition in Host Model | Description | Default Value | --------------------|--------------------------------|-----------------------------------------------------------------------|---------------| - do_sppt | gfs_typedefs::gfs_control_type | flag for stochastic SPPT option | .false. | - do_shum | gfs_typedefs::gfs_control_type | flag for stochastic SHUM option | .false. | - do_skeb | gfs_typedefs::gfs_control_type | flag for stochastic SKEB option | .false. | - use_zmtnblck | gfs_typedefs::gfs_control_type | flag for mountain blocking | .false. | - do_sfcperts | gfs_typedefs::gfs_control_type | flag for stochastic surface perturbations option | .false. | - nsfcpert | gfs_typedefs::gfs_control_type | number of weights for stochastic surface perturbation | 6 | - pertz0 | gfs_typedefs::gfs_control_type | magnitude of perturbation of momentum roughness length | -999. | - pertzt | gfs_typedefs::gfs_control_type | magnitude of perturbation of heat to momentum roughness length ratio | -999. | - pertshc | gfs_typedefs::gfs_control_type | magnitude of perturbation of soil hydraulic conductivity | -999. | - pertlai | gfs_typedefs::gfs_control_type | magnitude of perturbation of leaf area index | -999. | - pertalb | gfs_typedefs::gfs_control_type | magnitude of surface albedo perturbation | -999. | - pertvegf | gfs_typedefs::gfs_control_type | magnitude of perturbation of vegetation fraction | -999. | - -\subsection gen_stochy_nml General Stochastic Physics Paramters - \c NML_option | Definition in Host Model | Description | Default Value | --------------------|----------------------------|--------------------------------------------------------------|---------------| - ntrunc | compns_stochy_mod | spectral resolution (e.g. T126) of random patterns | -999 | - lon_s, lat_s | compns_stochy_mod | number of longitude and latitude point for the Gaussian grid | -999 | - fhstoch | compns_stochy_mod | forecast hour to write out random pattern in order to restart the pattern for a different forecast (used in DA), file is stoch_out.F | -999.0 | - stochini | compns_stochy_mod | set to true if wanting to read in a previous random pattern (input file need to be named \c stoch_ini) | -999.0 | .false. | - -\subsection sppt_contrl_nml SPPT Control Parameters - \c NML_option | Definition in Host Model | Description | Default Value | --------------------|----------------------------|--------------------------------------------------------------------------------|---------------| - sppt | compns_stochy_mod | amplitude of random patterns | -999. | - sppt_tau | compns_stochy_mod | decorrelation timescales in secods | -999. | - sppt_lscale | compns_stochy_mod | decorrelation spatial scales in meters | -999. | - sppt_logit | compns_stochy_mod | logit transform for SPPT to bounded interval [-1,+1] | .false. | - iseed_sppt | compns_stochy_mod | seeds for setting the random number sequence (ignored if \c stochini is true) | 0 | - sppt_sigtop1, sppt_sigtop2 | compns_stochy_mod | sigma levels to taper perturbations to zeros | 0.1, 0.025 | - sppt_sfclimit | compns_stochy_mod | reduce amplitude of SPPT near surface (lowest 2 levels) | .false. | - use_zmtnblck | gfs_typedefs::gfs_control_type | flag for mountain blocking. .T. = do not apply perturbations below the dividing streamline that is diagnosed by the gravity wave drag, mountain blocking scheme | .false. | - - -\subsection shum_contrl_nml SHUM Control Parameters - \c NML_option | Definition in Host Model | Description | Default Value | --------------------|----------------------------|------------------------------------------------------------------------------|---------------| - shum | compns_stochy_mod | amplitude of stochastic boundary layer specific humidity perturbations | -999. | - shum_tau | compns_stochy_mod | decorrelation time scales in seconds | -999. | - shum_lscale | compns_stochy_mod | decorrelation spatial scales in meters | -999. | - shum_sigefold | compns_stochy_mod | e-folding lengthscale (in units of sigma) of specific humidity perturbations | 0.2 | - -\subsection skeb_contrl_nml SKEB Control Parameters - \c NML_option | Definition in Host Model | Description | Default Value | -------------------------------|----------------------------|------------------------------------------------------------------------------------|---------------| - skeb | compns_stochy_mod | stochastic KE backscatter amplitude | -999. | - skeb_tau | compns_stochy_mod | decorrelation timescales in seconds | -999. | - skeb_lscale | compns_stochy_mod | decorrelation spatial scales in meter | -999. | - iseed_skeb | compns_stochy_mod | seeds for setting the random number sequnce (ignored if \c stochini is true) | 0 | - skebnorm | compns_stochy_mod | 0: random pattern is stream function,1: pattern is kenorm, 2: pattern is vorticity | 0 | - skeb_varspect_opt | compns_stochy_mod | Gaussian or power law variance spectrum for SKEB (0: Gaussian, 1: power law | 0 | - skeb_npass | compns_stochy_mod | number of passes of smoother for dissipation estimate | 11 | - skeb_vdof | compns_stochy_mod | the number of degrees of freedom in the vertical for the SKEB random pattern | 5 | - skeb_sigtop1, skeb_sigtop2 | compns_stochy_mod | sigma levels to taper perturbations to zeros | 0.1, 0.025 | - - - -\section zhao_carr_nml Zhao-Carr MP Parameters - \c NML_option | DDT in Host Model | Description | Default Value | --------------------|---------------------------------|-----------------------------------------------|---------------------| - psautco(2) | gfs_typedefs::gfs_control_type | auto conversion coeff from ice to snow | /6.0d-4,3.0d-4/ | - prautco(2) | gfs_typedefs::gfs_control_type | auto conversion coeff from cloud to rain | /1.0d-4,1.0d-4/ | - -\section gfdl_cloud_microphysics_nml GFDL Cloud MP Parameters -The namelist variable description is provided in module_gfdl_cloud_microphys.F90 - \c NML_option | Definition in CCPP | Description | Default Value | --------------------------|---------------------------|--------------------------------------------------------------------------------|----------------------| - sedi_transport | gfdl_cloud_microphys_mod | logical flag for turning on horizontal momentum transport during sedimentation | .true. | - do_sedi_heat | gfdl_cloud_microphys_mod | logical flag for turning on horizontal heat transport during sedimentation | .true. | - rad_snow | gfdl_cloud_microphys_mod | logical flag for considering snow in cloud fraction calculation | .true. | - rad_graupel | gfdl_cloud_microphys_mod | logical flag for considering graupel in cloud fraction calculation | .true. | - rad_rain | gfdl_cloud_microphys_mod | logical flag for considering rain in cloud fraction calculation | .true. | - const_vi | gfdl_cloud_microphys_mod | logical flag for using constant cloud ice fall speed | .false. | - const_vs | gfdl_cloud_microphys_mod | logical flag for using constant snow fall speed | .false. | - const_vg | gfdl_cloud_microphys_mod | logical flag for using constant graupel fall speed | .false. | - const_vr | gfdl_cloud_microphys_mod | logical flag for using constant rain fall speed | .false. | - vi_max | gfdl_cloud_microphys_mod | maximum fall speed for cloud ice | 0.5 | - vs_max | gfdl_cloud_microphys_mod | maximum fall speed for snow | 5.0 | - vg_max | gfdl_cloud_microphys_mod | maximum fall speed for graupel | 8.0 | - vr_max | gfdl_cloud_microphys_mod | maximum fall speed for rain | 12.0 | - qi_lim | gfdl_cloud_microphys_mod | cloud ice limiter to prevent large ice built up in cloud ice freezing and deposition | 1. | - prog_ccn | gfdl_cloud_microphys_mod | logical flag for activating prognostic CCN (not supported in GFS Physics) | .false. | - do_qa | gfdl_cloud_microphys_mod | logical flag for activating inline cloud fraction diagnosis in fast saturation adjustment | .true. | - fast_sat_adj | gfdl_cloud_microphys_mod | logical flag for adjusting cloud water evaporation/freezing, cloud ice deposition when fast saturation adjustment is activated (do_sat_adj=.true.) | .true. | - tau_l2v | gfdl_cloud_microphys_mod | time scale for evaporation of cloud water to water vapor. Increasing(decreasing) \p tau_l2v can decrease(boost) deposition of cloud water to water vapor | 300. | - tau_v2l | gfdl_cloud_microphys_mod | time scale for condensation of water vapor to cloud water. Increasing(decreasing) \p tau_v2l can decrease(boost) condensation of water vapor to cloud water | 150. | - tau_g2v | gfdl_cloud_microphys_mod | time scale for sublimation of graupel to water vapor. Increasing(decreasing) \p tau_g2v can decrease(boost) sublimation of graupel to water vapor | 900. | - rthresh | gfdl_cloud_microphys_mod | critical cloud water radius for autoconversion (cloud water -> rain). Increasing(decreasing) of \p rthresh makes the autoconversion harder(easier) | 10.0e-6 | - dw_land | gfdl_cloud_microphys_mod | base value for subgrid deviation/variability over land | 0.20 | - dw_ocean | gfdl_cloud_microphys_mod | base value for subgrid deviation/variability over ocean | 0.10 | - ql_gen | gfdl_cloud_microphys_mod | maximum value for cloud water generated from condensation of water vapor (water vapor-> cloud water) | 1.0e-3 | - ql_mlt | gfdl_cloud_microphys_mod | maximum value of cloud water allowed from melted cloud ice (cloud ice -> cloud water or rain) | 2.0e-3 | - qi0_crt | gfdl_cloud_microphys_mod | threshold of cloud ice to snow autoconversion (cloud ice -> snow) | 1.0e-4 | - qs0_crt | gfdl_cloud_microphys_mod | threshold of snow to graupel autoconversion (snow->graupel) | 1.0e-3 | - tau_i2s | gfdl_cloud_microphys_mod | time scale for autoconversion of cloud ice to snow | 1000. | - c_psaci | gfdl_cloud_microphys_mod | accretion efficiency of cloud ice to snow | 0.02 | - c_pgacs | gfdl_cloud_microphys_mod | accretion efficiency of snow to graupel | 2.0e-3 | - rh_inc | gfdl_cloud_microphys_mod | relative humidity increment for complete evaporation of cloud water and cloud ice | 0.25 | - rh_inr | gfdl_cloud_microphys_mod | relative humidity increment for sublimation of snow | 0.25 | - rh_ins | gfdl_cloud_microphys_mod | relative humidity increment for minimum evaporation of rain | 0.25 | - ccn_l | gfdl_cloud_microphys_mod | base CCN over land \f$cm^{-3}\f$ | 270. | - ccn_o | gfdl_cloud_microphys_mod | base CCN over ocean \f$cm^{-3}\f$ | 90. | - c_paut | gfdl_cloud_microphys_mod | autoconversion efficiency of cloud water to rain | 0.55 | - c_cracw | gfdl_cloud_microphys_mod | accretion efficiency of cloud water to rain | 0.9 | - use_ppm | gfdl_cloud_microphys_mod | \e true to use PPM fall scheme; \e false to use time-implicit monotonic fall scheme | .false. | - use_ccn | gfdl_cloud_microphys_mod | \e true to compute prescribed CCN. It should be .true. when \p prog_ccn = .false. | .false. | - mono_prof | gfdl_cloud_microphys_mod | \e true to turn on terminal fall with monotonic PPM scheme. This is used together with \p use_ppm=.true. | .true. | - z_slope_liq | gfdl_cloud_microphys_mod | \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud water to rain | .true. | - z_slope_ice | gfdl_cloud_microphys_mod | \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud ice to snow | .false. | - de_ice | gfdl_cloud_microphys_mod | \e true to convert excessive cloud ice to snow to prevent ice over-built from other sources like convection scheme (not supported in GFS physics) | .false. | - fix_negative | gfdl_cloud_microphys_mod | \e true to fix negative water species using nearby points | .false. | - icloud_f | gfdl_cloud_microphys_mod | flag (0,1,or 2) for cloud fraction diagnostic scheme | 0 | - mp_time | gfdl_cloud_microphys_mod | time step of GFDL cloud microphysics | 150. | - */ diff --git a/physics/funcphys.f90 b/physics/funcphys.f90 index 1b50ad185..8cb4b1b15 100644 --- a/physics/funcphys.f90 +++ b/physics/funcphys.f90 @@ -471,7 +471,7 @@ elemental function fpvslq(t) !! This function should be expanded inline in the calling routine. !>\author N Phillips !>\param[in] t real, temperature in Kelvin -!>\param[out] fpvslx real, saturation vapor pressure in Pascals +!\param[out] fpvslx real, saturation vapor pressure in Pascals elemental function fpvslx(t) !$$$ Subprogram Documentation Block ! @@ -683,7 +683,7 @@ elemental function fpvsiq(t) !!\n where tr is ttp/t and other values are physical constants. !! This function should be expanded inline in the calling routine. !>\param[in] t real, temperature in Kelvin -!>\param[out] fpvsix real, saturation vapor pressure in Pascals +!\param[out] fpvsix real, saturation vapor pressure in Pascals elemental function fpvsix(t) !$$$ Subprogram Documentation Block ! @@ -788,7 +788,7 @@ subroutine gpvs !! computed in gpvs(). See documentation for fpvsx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] t real, temperature in Kelvin -!>\param[out] fpvs real, saturation vapor pressure in Pascals +!\param[out] fpvs real, saturation vapor pressure in Pascals elemental function fpvs(t) !$$$ Subprogram Documentation Block ! @@ -838,7 +838,7 @@ elemental function fpvs(t) !! computed in gpvs(). See documentation for fpvsx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] t real, temperatue in Kelvin -!>\param[out] fpvsq real, saturation vapor pressure in Pascals +!\param[out] fpvsq real, saturation vapor pressure in Pascals elemental function fpvsq(t) !$$$ Subprogram Documentation Block ! @@ -902,8 +902,8 @@ elemental function fpvsq(t) !!\n where tr is ttp/t and other values are physical constants. !! The reference for this computation is Emanuel(1994), pages 116-117. !! This function should be expanded inline in the calling routine. -!>\param[in] t real, temperature in Kelvin -!>\param[out] fpvsx real, saturation vapor pressure in Pascals +!!\param[in] t real, temperature in Kelvin +!\param[out] fpvsx real, saturation vapor pressure in Pascals elemental function fpvsx(t) !$$$ Subprogram Documentation Block ! @@ -1078,8 +1078,8 @@ elemental function ftdpl(pv) !! A quadratic interpolation is done between values in a lookup table !! computed in gtdpl(). See documentation for ftdplxg() for details. !! Input values outside table range are reset to table extrema. -!>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdplq real, dewpoint temperature in Kelvin +!!\param[in] pv real, vapor pressure in Pascals +!\param[out] ftdplq real, dewpoint temperature in Kelvin elemental function ftdplq(pv) !$$$ Subprogram Documentation Block ! @@ -1133,8 +1133,8 @@ elemental function ftdplq(pv) !! An approximate dewpoint temperature for function ftdplxg() !! is obtained using ftdpl() so gtdpl() must be already called. !! See documentation for ftdplxg() for details. -!>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdplx real, dewpoint temperature in Kelvin +!!\param[in] pv real, vapor pressure in Pascals +!\param[out] ftdplx real, dewpoint temperature in Kelvin elemental function ftdplx(pv) !$$$ Subprogram Documentation Block ! @@ -1190,9 +1190,9 @@ elemental function ftdplx(pv) !!\n The formula is inverted by iterating Newtonian approximations !! for each pvs until t is found to within 1.e-6 Kelvin. !! This function can be expanded inline in the calling routine. -!>\param[in] tg real, guess dewpoint temperature in Kelvin -!>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdplxg real, dewpoint temperature in Kelvin +!!\param[in] tg real, guess dewpoint temperature in Kelvin +!!\param[in] pv real, vapor pressure in Pascals +!\param[out] ftdplxg real, dewpoint temperature in Kelvin elemental function ftdplxg(tg,pv) !$$$ Subprogram Documentation Block ! @@ -1314,7 +1314,7 @@ subroutine gtdpi !! computed in gtdpi(). See documentation for ftdpixg for details. !! Input values outside table range are reset to table extrema. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpi real, dewpoint temperature in Kelvin +!\param[out] ftdpi real, dewpoint temperature in Kelvin elemental function ftdpi(pv) !$$$ Subprogram Documentation Block ! @@ -1366,7 +1366,7 @@ elemental function ftdpi(pv) !! computed in gtdpi(). see documentation for ftdpixg() for details. !! Input values outside table range are reset to table extrema. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpiq real, dewpoint temperature in Kelvin +!\param[out] ftdpiq real, dewpoint temperature in Kelvin elemental function ftdpiq(pv) !$$$ Subprogram Documentation Block ! @@ -1422,7 +1422,7 @@ elemental function ftdpiq(pv) !! is obtained using ftdpi() so gtdpi() must be already called. !! See documentation for ftdpixg() for details. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpix real, dewpoint temperature in Kelvin +!\param[out] ftdpix real, dewpoint temperature in Kelvin elemental function ftdpix(pv) !$$$ Subprogram Documentation Block ! @@ -1481,7 +1481,7 @@ elemental function ftdpix(pv) !! This function can be expanded inline in the calling routine. !>\param[in] tg real, guess dewpoint temperature in Kelvin !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpixg real, dewpoint temperature in Kelvin +!\param[out] ftdpixg real, dewpoint temperature in Kelvin elemental function ftdpixg(tg,pv) !$$$ Subprogram Documentation Block ! @@ -1604,7 +1604,7 @@ subroutine gtdp !! computed in gtdp(). See documentation for ftdpxg() for details. !! Input values outside table range are reset to table extrema. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdp real, dewpoint temperature in Kelvin +!\param[out] ftdp real, dewpoint temperature in Kelvin elemental function ftdp(pv) !$$$ Subprogram Documentation Block ! @@ -1656,7 +1656,7 @@ elemental function ftdp(pv) !! computed in gtdp(). See documentation for ftdpxg() for details. !! Input values outside table range are reset to table extrema. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpq real, dewpoint temperature in Kelvin +!\param[out] ftdpq real, dewpoint temperature in Kelvin elemental function ftdpq(pv) !$$$ Subprogram Documentation Block ! @@ -1712,7 +1712,7 @@ elemental function ftdpq(pv) !! is obtained using ftdp() so gtdp() must be already called. !! See documentation for ftdpxg() for details. !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpx real, dewpoint temperature in Kelvin +!\param[out] ftdpx real, dewpoint temperature in Kelvin elemental function ftdpx(pv) !$$$ Subprogram Documentation Block ! @@ -1776,7 +1776,7 @@ elemental function ftdpx(pv) !! This function can be expanded inline in the calling routine. !>\param[in] tg real, guess dewpoint temperature in Kelvin !>\param[in] pv real, vapor pressure in Pascals -!>\param[out] ftdpxg real, dewpoint temperature in Kelvin +!\param[out] ftdpxg real, dewpoint temperature in Kelvin elemental function ftdpxg(tg,pv) !$$$ Subprogram Documentation Block ! @@ -1937,7 +1937,7 @@ subroutine gthe !! except zero is returned for too cold or high LCLs. !>\param[in] t real, LCL temperature in Kelvin !>\param[in] pk real, LCL pressure over 1e5 Pa to the kappa power -!>\param[out] fthe real, equivalent potential temperature in Kelvin +!\param[out] fthe real, equivalent potential temperature in Kelvin elemental function fthe(t,pk) !$$$ Subprogram Documentation Block ! @@ -2000,7 +2000,7 @@ elemental function fthe(t,pk) !! except zero is returned for too cold or high LCLs. !>\param[in] t real, LCL temperature in Kelvin !>\param[in] pk real, LCL pressure over 1e5 Pa to the kappa power -!>\param[out] ftheq real, equivalent potential temperature in Kelvin +!\param[out] ftheq real, equivalent potential temperature in Kelvin elemental function ftheq(t,pk) !$$$ Subprogram Documentation Block ! @@ -2085,7 +2085,7 @@ elemental function ftheq(t,pk) !! This function should be expanded inline in the calling routine. !>\param[in] t real, LCL temperature in Kelvin !>\param[in] pk real, LCL pressure over 1e5 Pa to the kappa power -!>\param[out] fthex real, equivalent potential temperature in Kelvin +!\param[out] fthex real, equivalent potential temperature in Kelvin function fthex(t,pk) !$$$ Subprogram Documentation Block ! @@ -2283,7 +2283,7 @@ elemental subroutine stma(the,pk,tma,qma) !! Input values outside table range are reset to table extrema. !>\param[in] the real, equivalent potential temperature in Kelvin !>\param[in] pk real, pressure over 1e5 Pa to the kappa power -!>\param[out] tmaq real, parcel temperature in Kelvin +!>\param[out] tma real, parcel temperature in Kelvin !>\param[out] qma real, parcel specific humidity in kg/kg elemental subroutine stmaq(the,pk,tma,qma) !$$$ Subprogram Documentation Block @@ -2569,7 +2569,7 @@ subroutine gpkap !! computed in gpkap(). See documentation for fpkapx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] p real, pressure in Pascals -!>\param[out] fpkap real, p over 1e5 Pa to the kappa power +!\param[out] fpkap real, p over 1e5 Pa to the kappa power elemental function fpkap(p) !$$$ Subprogram Documentation Block ! @@ -2621,7 +2621,7 @@ elemental function fpkap(p) !! computed in gpkap(). see documentation for fpkapx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] p real, pressure in Pascals -!>\param[out] fpkapq real, p over 1e5 Pa to the kappa power +!\param[out] fpkapq real, p over 1e5 Pa to the kappa power elemental function fpkapq(p) !$$$ Subprogram Documentation Block ! @@ -2678,7 +2678,7 @@ elemental function fpkapq(p) !! The pressure range is 40000-110000 Pa and kappa is defined in fpkapx(). !>\param[in] p real, surface pressure in Pascals p should be in the !! range 40000 to 110000 -!>\param[out] fpkapo real, p over 1e5 Pa to the kappa power +!\param[out] fpkapo real, p over 1e5 Pa to the kappa power function fpkapo(p) !$$$ Subprogram documentation block ! @@ -2739,7 +2739,7 @@ function fpkapo(p) !> This function raises pressure over 1e5 Pa to the kappa power. !! Kappa is equal to rd/cp where rd and cp are physical constants. !>\param[in] p real, pressure in Pascals -!>\param[out] fpkapx real, p over 1e5 Pa to the kappa power +!\param[out] fpkapx real, p over 1e5 Pa to the kappa power elemental function fpkapx(p) !$$$ Subprogram documentation block ! @@ -2827,7 +2827,7 @@ subroutine grkap !! computed in grkap(). See documentation for frkapx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] pkap real, p over 1e5 Pa to the kappa power -!>\param[out] frkap real, pressure in Pascals +!\param[out] frkap real, pressure in Pascals elemental function frkap(pkap) !$$$ Subprogram Documentation Block ! @@ -2878,7 +2878,7 @@ elemental function frkap(pkap) !! computed in grkap(). see documentation for frkapx() for details. !! Input values outside table range are reset to table extrema. !>\param[in] pkap real, p over 1e5 Pa to the kappa power -!>\param[out] frkapq real, pressure in Pascals +!\param[out] frkapq real, pressure in Pascals elemental function frkapq(pkap) !$$$ Subprogram Documentation Block ! @@ -2931,7 +2931,7 @@ elemental function frkapq(pkap) !> This function raise pressure over 1e5 Pa to the 1/kappa power. !! Kappa is equal to rd/cp where rd and cp are physical constants. !>\param[in] pkap real, p over 1e5 Pa to the kappa power -!>\param[out] frkapx real, pressure in Pascals +!\param[out] frkapx real, pressure in Pascals elemental function frkapx(pkap) !$$$ Subprogram documentation block ! @@ -3032,7 +3032,7 @@ subroutine gtlcl !! Input values outside table range are reset to table extrema. !>\param[in] t real, LCL temperature in Kelvin !>\param[in] tdpd real, dewpoint depression in Kelvin -!>\param[out] ftlcl real, temperature at the LCL in Kelvin +!\param[out] ftlcl real, temperature at the LCL in Kelvin elemental function ftlcl(t,tdpd) !$$$ Subprogram Documentation Block ! @@ -3087,7 +3087,7 @@ elemental function ftlcl(t,tdpd) !! Input values outside table range are reset to table extrema. !>\param[in] t real, LCL temperature in Kelvin !>\param[in] tdpd real, dowpoint depression in Kelvin -!>\param[out] ftlcl real, temperature at the LCL in Kelvin +!\param[out] ftlcl real, temperature at the LCL in Kelvin elemental function ftlclq(t,tdpd) !$$$ Subprogram Documentation Block ! @@ -3155,7 +3155,7 @@ elemental function ftlclq(t,tdpd) !! approximates the original exact implicit relationship. !>\param[in] t real, temperature in Kelvin !>\param[in] tdpd real, dewpoint depression in Kelvin -!>\param[out] ftlclo real, temperature at the LCL in Kelvin +!\param[out] ftlclo real, temperature at the LCL in Kelvin function ftlclo(t,tdpd) !$$$ Subprogram documentation block ! @@ -3219,7 +3219,7 @@ function ftlclo(t,tdpd) !! returned temperature is 180 Kelvin. !>\param[in] t real, temperature in Kelvin !>\param[in] tdpd real, dewpoint depression in Kelvin -!>\param[out] ftlclx real, temperature at the LCL in Kelvin +!\param[out] ftlclx real, temperature at the LCL in Kelvin elemental function ftlclx(t,tdpd) !$$$ Subprogram documentation block ! diff --git a/physics/gcycle.F90 b/physics/gcycle.F90 index 4fc1bfa04..411d41004 100644 --- a/physics/gcycle.F90 +++ b/physics/gcycle.F90 @@ -1,11 +1,11 @@ !>\file gcycle.F90 -!! This file repopulates specific time-varying sfc properties for -!! AMIP/forecast runs +!! This file repopulates specific time-varying surface properties for +!! atmospheric forecast runs. +!>\ingroup mod_GFS_phys_time_vary +!! This subroutine repopulates specific time-varying surface properties for +!! atmospheric forecast runs. # 1 "physics/gcycle.F90" -!>\ingroup Noah_LSM -!! This subroutine repopulates specific time-varying sfc properties for -!! AMIP/forecast runs. SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop) ! ! diff --git a/physics/gfdl_cloud_microphys.F90 b/physics/gfdl_cloud_microphys.F90 index 8e6f645ca..903175572 100644 --- a/physics/gfdl_cloud_microphys.F90 +++ b/physics/gfdl_cloud_microphys.F90 @@ -160,7 +160,7 @@ end subroutine gfdl_cloud_microphys_finalize !! | lradar | flag_for_radar_reflectivity | flag for radar reflectivity | flag | 0 | logical | | in | F | !! | refl_10cm | radar_reflectivity_10cm | instantaneous refl_10cm | dBZ | 2 | real | kind_phys | inout | F | !! | reset | flag_reset_maximum_hourly_fields | flag for resetting maximum hourly fields | flag | 0 | logical | | in | F | -!! | effr_in | flag_for_cloud_effective_radii | flag for cloud effective radii calculations in microphysics | | 0 | logical | | in | F | +!! | effr_in | flag_for_cloud_effective_radii | flag for cloud effective radii calculations in GFDL microphysics | | 0 | logical | | in | F | !! | rew | effective_radius_of_stratiform_cloud_liquid_water_particle_in_um | eff. radius of cloud liquid water particle in micrometer | um | 2 | real | kind_phys | inout | F | !! | rei | effective_radius_of_stratiform_cloud_ice_particle_in_um | eff. radius of cloud ice water particle in micrometer | um | 2 | real | kind_phys | inout | F | !! | rer | effective_radius_of_stratiform_cloud_rain_particle_in_um | effective radius of cloud rain particle in micrometers | um | 2 | real | kind_phys | inout | F | diff --git a/physics/gfdl_fv_sat_adj.F90 b/physics/gfdl_fv_sat_adj.F90 index bfa3fd7c7..01a563f0e 100644 --- a/physics/gfdl_fv_sat_adj.F90 +++ b/physics/gfdl_fv_sat_adj.F90 @@ -1,5 +1,5 @@ !>\file gfdl_fv_sat_adj.F90 -!! This file contains the fast saturation adjustment in the GFDL cloud microphysics. +!! This file contains the GFDL in-core fast saturation adjustment. !! and it is an "intermediate physics" implemented in the remapping Lagrangian to !! Eulerian loop of FV3 solver. !*********************************************************************** @@ -23,8 +23,8 @@ !* If not, see . !*********************************************************************** -!> This module is part of the GFDL Cloud MP and it is the CCPP-compliant -!! fast phyiscs called in FV3 dynamics solver. +!> This module contains the GFDL in-core fast saturation adjustment +!! called in FV3 dynamics solver. module fv_sat_adj ! Modules Included: ! @@ -226,7 +226,7 @@ subroutine fv_sat_adj_finalize (errmsg, errflg) end subroutine fv_sat_adj_finalize -!>\defgroup fast_sat_adj GFDL In-Core Fast Saturation Adjustment +!>\defgroup fast_sat_adj GFDL In-Core Fast Saturation Adjustment Module !> @{ !! The subroutine 'fv_sat_adj' implements the fast processes in the GFDL !! Cloud MP. It is part of the GFDL Cloud MP. diff --git a/physics/gwdc.f b/physics/gwdc.f index d25e8b533..48e78cb44 100644 --- a/physics/gwdc.f +++ b/physics/gwdc.f @@ -116,8 +116,7 @@ module gwdc subroutine gwdc_init() end subroutine gwdc_init -! \defgroup GFS_cgwd GFS Convective Gravity Wave Drag -!> \defgroup GFS_gwdc_run GFS gwdc Main +!> \defgroup GFS_gwdc_run GFS Convective Gravity Wave Drag Scheme Module !! \brief This subroutine is the parameterization of convective gravity wave !! drag based on the theory given by Chun and Baik (1998) !! \cite chun_and_baik_1998 modified for implementation into the diff --git a/physics/gwdps.f b/physics/gwdps.f index 5e47a6b24..d98573dcc 100644 --- a/physics/gwdps.f +++ b/physics/gwdps.f @@ -151,7 +151,7 @@ module gwdps subroutine gwdps_init() end subroutine gwdps_init -!> \defgroup gfs_gwdps GFS gwdps Main +!> \defgroup gfs_gwdps GFS Orographic Gravity Wave Drag and Mountain Blocking Scheme Module !! \brief This subroutine includes orographic gravity wave drag and mountain !! blocking. !! diff --git a/physics/h2ophys.f b/physics/h2ophys.f index 51e3a6051..287cfa3d3 100644 --- a/physics/h2ophys.f +++ b/physics/h2ophys.f @@ -19,7 +19,7 @@ module h2ophys subroutine h2ophys_init() end subroutine h2ophys_init -!>\defgroup GFS_h2ophys GFS h2ophys Main +!>\defgroup GFS_h2ophys GFS Water Vapor Photochemical Production and Loss Module !> This subroutine is NRL H2O physics for stratosphere and mesosphere. !! \section arg_table_h2ophys_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | diff --git a/physics/m_micro.F90 b/physics/m_micro.F90 index 2e33ce542..26a9471f6 100644 --- a/physics/m_micro.F90 +++ b/physics/m_micro.F90 @@ -137,7 +137,7 @@ end subroutine m_micro_init subroutine m_micro_finalize end subroutine m_micro_finalize -!> \defgroup mg2mg3 CPT Morrison-Gettelman MP scheme Module +!> \defgroup mg2mg3 Morrison-Gettelman MP scheme Module !! This module contains the the entity of MG2 and MG3 schemes. !> @{ !> \defgroup mg_driver Morrison-Gettelman MP Driver Module @@ -791,7 +791,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & !======================================================================================================================= !======================================================================================================================= !> -# Nucleation of cloud droplets and ice crystals -!! Aerosol cloud interactions. Calculate maxCCN tendency using Fountoukis and nenes (2005) or Abdul Razzak and Ghan (2002) +!! Aerosol cloud interactions. Calculate maxCCN tendency using Fountoukis and Nenes (2005) or Abdul Razzak and Ghan (2002) !! liquid Activation Parameterization !! Ice activation follows the Barahona & Nenes ice activation scheme, ACP, (2008, 2009). !! Written by Donifan Barahona and described in Barahona et al. (2013) @@ -821,7 +821,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & AERMASSMIX(:,:,1:5) = 1.e-6 AERMASSMIX(:,:,6:15) = 2.e-14 end if -!> - Call aerConversion1() +!> - Call aerconversion1() call AerConversion1 (AERMASSMIX, AeroProps) deallocate(AERMASSMIX) @@ -893,7 +893,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & ! ==================================================================== -!> -# Call gw_prof() to Calculate subgrid scale distribution in vertical velocity +!> -# Call gw_prof() to calculate subgrid scale distribution in vertical velocity ! ==================================================================== @@ -912,7 +912,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & wparc_cgw(k) = 0.0 end do -!> - Subgrid variability from Convective Sources According to Barahona et al. 2014 in prep +!> - Subgrid variability from convective sources according to Barahona et al. 2014 (in preparation) if (kcldtopcvn > 20) then @@ -973,7 +973,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & -!> - Compute Total variance +!> - Compute total variance do K = 1, LM swparc(k) = sqrt(wparc_gw(k) * wparc_gw(k) & @@ -1013,7 +1013,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & ! &,' ccn_param=',ccn_param,' in_param=',in_param & ! &,' AeroAux%kap=',AeroAux%kap -!> -# Call aerosol_activate() to activate the aerosols. +!> -# Call aerosol_activate() to activate the aerosols call aerosol_activate(tauxr8, plevr8(K), swparc(K), & & wparc_ls(K), AeroAux, npre8(k), dpre8(k), ccn_diag, & & ndropr8(k), npccninr8(K), smaxliq(K), & @@ -1108,7 +1108,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & !===========================End cloud particle nucleation======================= ! ----------------------------- ! -!> -# Begin Cloud Macrophysics +!> -# Begin cloud macrophysics ! do k=1,lm ! do i=1,im @@ -1172,7 +1172,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & ! call macro_cloud (IM, LM, DT_MOIST, PLO, PLE, PK, FRLAND, & ! call macro_cloud (IM, LM, DT_MOIST, PLO, PLE, FRLAND, & -!> - Call macro_cloud() for cloud macrophysics. +!> - Call macro_cloud() for cloud macrophysics call macro_cloud (IM, LM, DT_MOIST, alf_fac, PLO, PLE, & & CNV_DQLDT, & ! & CNV_MFD, CNV_DQLDT, & @@ -1242,7 +1242,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & !============ Put cloud fraction back in contact with the PDF (Barahona et al., GMD, 2014)============ !make sure QI , NI stay within T limits -!> - Call meltfrz_inst() to calculate instantaneous freezing or condensate. +!> - Call meltfrz_inst() to calculate instantaneous freezing or condensate call meltfrz_inst(IM, LM, TEMP, QLLS, QLCN, QILS, QICN, NCPL, NCPI) @@ -1372,6 +1372,7 @@ subroutine m_micro_run( im, ix, lm, flipv, dt_i & ! else ! call init_Aer(AeroAux) ! end if +!> - Call getinsubset() to extract dust properties call getINsubset(1, AeroAux, AeroAux_b) naux = AeroAux_b%nmods if (nbincontactdust < naux) then diff --git a/physics/micro_mg3_0.F90 b/physics/micro_mg3_0.F90 index 0157ac763..d9d47a347 100644 --- a/physics/micro_mg3_0.F90 +++ b/physics/micro_mg3_0.F90 @@ -44,8 +44,6 @@ !! Part II: Global model solutions and Aerosol-Cloud Interactions. !! J. Climate, 28, 1288-1307. doi:10.1175/JCLI-D-14-00103.1 , 2015. !! -!! for questions contact Hugh Morrison, Andrew Gettelman -!! e-mail: morrison@ucar.edu, andrew@ucar.edu !! !! NOTE: Modified to allow other microphysics packages (e.g. CARMA) to do ice !! microphysics in cooperation with the MG liquid microphysics. This is @@ -274,37 +272,37 @@ subroutine micro_mg_init( & ! !----------------------------------------------------------------------- - integer, intent(in) :: kind !< Kind used for reals + integer, intent(in) :: kind ! Kind used for reals real(r8), intent(in) :: gravit real(r8), intent(in) :: rair real(r8), intent(in) :: rh2o real(r8), intent(in) :: cpair - real(r8), intent(in) :: tmelt_in !< Freezing point of water (K) + real(r8), intent(in) :: tmelt_in ! Freezing point of water (K) real(r8), intent(in) :: latvap real(r8), intent(in) :: latice - real(r8), intent(in) :: rhmini_in !< Minimum rh for ice cloud fraction > 0. + real(r8), intent(in) :: rhmini_in ! Minimum rh for ice cloud fraction > 0. real(r8), intent(in) :: micro_mg_dcs real(r8), intent(in) :: ts_auto(2) real(r8), intent(in) :: mg_qcvar !++ag !MG3 dense precipitating ice. Note, only 1 can be true, or both false. - logical, intent(in) :: micro_mg_do_graupel_in !< .true. = configure with graupel - !< .false. = no graupel (hail possible) - logical, intent(in) :: micro_mg_do_hail_in !< .true. = configure with hail - !< .false. = no hail (graupel possible) + logical, intent(in) :: micro_mg_do_graupel_in ! .true. = configure with graupel + ! .false. = no graupel (hail possible) + logical, intent(in) :: micro_mg_do_hail_in ! .true. = configure with hail + ! .false. = no hail (graupel possible) !--ag - logical, intent(in) :: microp_uniform_in !< .true. = configure uniform for sub-columns - !< .false. = use w/o sub-columns (standard) - logical, intent(in) :: do_cldice_in !< .true. = do all processes (standard) - !< .false. = skip all processes affecting cloud ice - logical, intent(in) :: use_hetfrz_classnuc_in !< use heterogeneous freezing + logical, intent(in) :: microp_uniform_in ! .true. = configure uniform for sub-columns + ! .false. = use w/o sub-columns (standard) + logical, intent(in) :: do_cldice_in ! .true. = do all processes (standard) + ! .false. = skip all processes affecting cloud ice + logical, intent(in) :: use_hetfrz_classnuc_in ! use heterogeneous freezing - character(len=16),intent(in) :: micro_mg_precip_frac_method_in !< type of precipitation fraction method - real(r8), intent(in) :: micro_mg_berg_eff_factor_in !< berg efficiency factor - logical, intent(in) :: allow_sed_supersat_in !< allow supersaturated conditions after sedimentation loop - logical, intent(in) :: do_sb_physics_in !< do SB autoconversion and accretion physics + character(len=16),intent(in) :: micro_mg_precip_frac_method_in ! type of precipitation fraction method + real(r8), intent(in) :: micro_mg_berg_eff_factor_in ! berg efficiency factor + logical, intent(in) :: allow_sed_supersat_in ! allow supersaturated conditions after sedimentation loop + logical, intent(in) :: do_sb_physics_in ! do SB autoconversion and accretion physics logical, intent(in) :: do_ice_gmao_in logical, intent(in) :: do_liq_liu_in @@ -584,7 +582,9 @@ subroutine micro_mg_tend ( & real(r8), intent(in) :: liqcldf(mgncol,nlev) !< liquid cloud fraction (no units) real(r8), intent(in) :: icecldf(mgncol,nlev) !< ice cloud fraction (no units) real(r8), intent(in) :: qsatfac(mgncol,nlev) !< subgrid cloud water saturation scaling factor (no units) - logical, intent(in) :: lprnt, iccn, aero_in + logical, intent(in) :: lprnt !< control flag for diagnostic print out + logical, intent(in) :: iccn !< flag for IN and CCN forcing for Morrison-Gettelman microphysics + logical, intent(in) :: aero_in !< flag for using aerosols in Morrison-Gettelman microphysics ! used for scavenging @@ -4446,18 +4446,18 @@ end subroutine micro_mg_tend !======================================================================== !>\ingroup mg3_mp -!! This subroutine calculates effective radius for rain + cloud. +!! This subroutine calculates effective radius for rain and cloud. subroutine calc_rercld(lamr, n0r, lamc, pgam, qric, qcic, ncic, rercld, mgncol,nlev) - integer, intent(in) :: mgncol, nlev - real(r8), dimension(mgncol,nlev), intent(in) :: lamr !< rain size parameter (slope) - real(r8), dimension(mgncol,nlev), intent(in) :: n0r !< rain size parameter (intercept) - real(r8), dimension(mgncol,nlev), intent(in) :: lamc !< size distribution parameter (slope) - real(r8), dimension(mgncol,nlev), intent(in) :: pgam !< droplet size parameter - real(r8), dimension(mgncol,nlev), intent(in) :: qric !< in-cloud rain mass mixing ratio - real(r8), dimension(mgncol,nlev), intent(in) :: qcic !< in-cloud cloud liquid - real(r8), dimension(mgncol,nlev), intent(in) :: ncic !< in-cloud droplet number concentration - - real(r8), dimension(mgncol,nlev), intent(inout) :: rercld !< effective radius calculation for rain + cloud + integer, intent(in) :: mgncol, nlev ! horizontal and vertical dimension + real(r8), dimension(mgncol,nlev), intent(in) :: lamr ! rain size parameter (slope) + real(r8), dimension(mgncol,nlev), intent(in) :: n0r ! rain size parameter (intercept) + real(r8), dimension(mgncol,nlev), intent(in) :: lamc ! size distribution parameter (slope) + real(r8), dimension(mgncol,nlev), intent(in) :: pgam ! droplet size parameter + real(r8), dimension(mgncol,nlev), intent(in) :: qric ! in-cloud rain mass mixing ratio + real(r8), dimension(mgncol,nlev), intent(in) :: qcic ! in-cloud cloud liquid + real(r8), dimension(mgncol,nlev), intent(in) :: ncic ! in-cloud droplet number concentration + + real(r8), dimension(mgncol,nlev), intent(inout) :: rercld ! effective radius calculation for rain + cloud ! combined size of precip & cloud drops real(r8) :: Atmp diff --git a/physics/micro_mg_utils.F90 b/physics/micro_mg_utils.F90 index 46985c46c..51178813c 100644 --- a/physics/micro_mg_utils.F90 +++ b/physics/micro_mg_utils.F90 @@ -794,10 +794,10 @@ subroutine size_dist_param_ice_vect(props, qic, nic, lam, mgncol, n0) end subroutine size_dist_param_ice_vect !>\ingroup micro_mg_utils_mod +!> Finds the average diameter of particles given their density, and +!! mass/number concentrations in the air. +!! Assumes that diameter follows an exponential distribution. real(r8) elemental function avg_diameter(q, n, rho_air, rho_sub) - !> Finds the average diameter of particles given their density, and - !! mass/number concentrations in the air. - !! Assumes that diameter follows an exponential distribution. real(r8), intent(in) :: q !< mass mixing ratio real(r8), intent(in) :: n !< number concentration (per volume) real(r8), intent(in) :: rho_air !< local density of the air @@ -808,9 +808,9 @@ real(r8) elemental function avg_diameter(q, n, rho_air, rho_sub) end function avg_diameter !>\ingroup mg2mg3 +!> Finds a coefficient for process rates based on the relative variance +!! of cloud water. elemental function var_coef_r8(relvar, a) result(res) - !> Finds a coefficient for process rates based on the relative variance - !! of cloud water. real(r8), intent(in) :: relvar real(r8), intent(in) :: a real(r8) :: res @@ -820,9 +820,9 @@ elemental function var_coef_r8(relvar, a) result(res) end function var_coef_r8 !>\ingroup mg2mg3 +!> Finds a coefficient for process rates based on the relative variance +!! of cloud water. elemental function var_coef_integer(relvar, a) result(res) - !> Finds a coefficient for process rates based on the relative variance - !! of cloud water. real(r8), intent(in) :: relvar integer, intent(in) :: a real(r8) :: res diff --git a/physics/module_MYNNPBL_wrapper.F90 b/physics/module_MYNNPBL_wrapper.F90 index 740948695..4d97c6f24 100644 --- a/physics/module_MYNNPBL_wrapper.F90 +++ b/physics/module_MYNNPBL_wrapper.F90 @@ -26,7 +26,11 @@ end subroutine mynnedmf_wrapper_finalize !! | levs | vertical_dimension | vertical layer dimension | count | 0 | integer | | in | F | !! | flag_init | flag_for_first_time_step | flag signaling first time step for time integration loop | flag | 0 | logical | | in | F | !! | flag_restart | flag_for_restart | flag for restart (warmstart) or coldstart | flag | 0 | logical | | in | F | +!! | lssav | flag_diagnostics | logical flag for storing diagnostics | flag | 0 | logical | | in | F | +!! | ldiag3d | flag_diagnostics_3D | flag for 3d diagnostic fields | flag | 0 | logical | | in | F | +!! | lsidea | flag_idealized_physics | flag for idealized physics | flag | 0 | logical | | in | F | !! | delt | time_step_for_physics | time step for physics | s | 0 | real | kind_phys | in | F | +!! | dtf | time_step_for_dynamics | dynamics timestep | s | 0 | real | kind_phys | in | F | !! | dx | cell_size | size of the grid cell | m | 1 | real | kind_phys | in | F | !! | zorl | surface_roughness_length | surface roughness length in cm | cm | 1 | real | kind_phys | in | F | !! | phii | geopotential_at_interface | geopotential at model layer interfaces | m2 s-2 | 2 | real | kind_phys | in | F | @@ -95,6 +99,14 @@ end subroutine mynnedmf_wrapper_finalize !! | dqdt_ice_num_conc | tendency_of_ice_number_concentration_due_to_model_physics | number conc. of ice tendency due to model physics | kg-1 s-1 | 2 | real | kind_phys | inout | F | !! | dqdt_water_aer_num_conc | tendency_of_water_friendly_aerosol_number_concentration_due_to_model_physics | number conc. of water-friendly aerosols tendency due to model physics | kg-1 s-1 | 2 | real | kind_phys | inout | F | !! | dqdt_ice_aer_num_conc | tendency_of_ice_friendly_aerosol_number_concentration_due_to_model_physics | number conc. of ice-friendly aerosols tendency due to model physics | kg-1 s-1 | 2 | real | kind_phys | inout | F | +!! | dt3dt | cumulative_change_in_temperature_due_to_PBL | cumulative change in temperature due to PBL | K | 2 | real | kind_phys | inout | F | +!! | du3dt_PBL | cumulative_change_in_x_wind_due_to_PBL | cumulative change in x wind due to PBL | m s-1 | 2 | real | kind_phys | inout | F | +!! | du3dt_OGWD | cumulative_change_in_x_wind_due_to_orographic_gravity_wave_drag | cumulative change in x wind due to orographic gravity wave drag | m s-1 | 2 | real | kind_phys | inout | F | +!! | dv3dt_PBL | cumulative_change_in_y_wind_due_to_PBL | cumulative change in y wind due to PBL | m s-1 | 2 | real | kind_phys | inout | F | +!! | dv3dt_OGWD | cumulative_change_in_y_wind_due_to_orographic_gravity_wave_drag | cumulative change in y wind due to orographic gravity wave drag | m s-1 | 2 | real | kind_phys | inout | F | +!! | htrsw | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep | total sky sw heating rate | K s-1 | 2 | real | kind_phys | in | F | +!! | htrlw | tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep | total sky lw heating rate | K s-1 | 2 | real | kind_phys | in | F | +!! | xmu | zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes | zenith angle temporal adjustment factor for shortwave | none | 1 | real | kind_phys | in | F | !! | grav_settling | grav_settling | flag to activate gravitational setting of fog | flag | 0 | integer | | in | F | !! | bl_mynn_tkebudget | tke_budget | flag for activating TKE budget | flag | 0 | integer | | in | F | !! | bl_mynn_tkeadvect | tke_advect | flag for activating TKE advect | flag | 0 | logical | | in | F | @@ -121,7 +133,8 @@ end subroutine mynnedmf_wrapper_finalize SUBROUTINE mynnedmf_wrapper_run( & & ix,im,levs, & & flag_init,flag_restart, & - & delt,dx,zorl, & + & lssav, ldiag3d, lsidea, & + & delt,dtf,dx,zorl, & & phii,u,v,omega,t3d, & & qgrs_water_vapor, & & qgrs_liquid_cloud, & @@ -151,6 +164,8 @@ SUBROUTINE mynnedmf_wrapper_run( & & dqdt_ice_cloud, dqdt_ozone, & & dqdt_cloud_droplet_num_conc, dqdt_ice_num_conc, & & dqdt_water_aer_num_conc, dqdt_ice_aer_num_conc, & + & dt3dt, du3dt_PBL, du3dt_OGWD, dv3dt_PBL, dv3dt_OGWD, & + & htrsw, htrlw, xmu, & & grav_settling, bl_mynn_tkebudget, bl_mynn_tkeadvect, & & bl_mynn_cloudpdf, bl_mynn_mixlength, & & bl_mynn_edmf, bl_mynn_edmf_mom, bl_mynn_edmf_tke, & @@ -246,7 +261,8 @@ SUBROUTINE mynnedmf_wrapper_run( & character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - + + LOGICAL, INTENT(IN) :: lssav, ldiag3d, lsidea ! NAMELIST OPTIONS (INPUT): LOGICAL, INTENT(IN) :: bl_mynn_tkeadvect, ltaerosol, & lprnt, do_mynnsfclay @@ -278,7 +294,7 @@ SUBROUTINE mynnedmf_wrapper_run( & & p_qc, p_qr, p_qi, p_qs, p_qg, p_qnc, p_qni !MYNN-1D - REAL(kind=kind_phys), intent(in) :: delt + REAL(kind=kind_phys), intent(in) :: delt, dtf INTEGER, intent(in) :: im, ix, levs LOGICAL, intent(in) :: flag_init, flag_restart INTEGER :: initflag, k, i @@ -287,6 +303,7 @@ SUBROUTINE mynnedmf_wrapper_run( & & ITS,ITE,JTS,JTE,KTS,KTE INTEGER :: kdvel, num_vert_mix INTEGER, PARAMETER :: nchem=1, ndvel=1 + REAL(kind=kind_phys) :: tem !MYNN-3D real(kind=kind_phys), dimension(im,levs+1), intent(in) :: phii @@ -315,7 +332,10 @@ SUBROUTINE mynnedmf_wrapper_run( & & RTHRATEN real(kind=kind_phys), dimension(im,levs), intent(out) :: & & Tsq, Qsq, Cov, exch_h, exch_m - + real(kind=kind_phys), dimension(:,:), intent(inout) :: dt3dt, & + & du3dt_PBL, du3dt_OGWD, dv3dt_PBL, dv3dt_OGWD + real(kind=kind_phys), dimension(im), intent(in) :: xmu + real(kind=kind_phys), dimension(im, levs), intent(in) :: htrsw, htrlw !LOCAL real(kind=kind_phys), dimension(im,levs) :: & & qvsh,qc,qi,qnc,qni,ozone,qnwfa,qnifa, & @@ -791,7 +811,28 @@ SUBROUTINE mynnedmf_wrapper_run( & enddo enddo endif - + + if (lssav .and. ldiag3d) then + if (lsidea) then + dt3dt(1:im,:) = dt3dt(1:im,:) + dtdt(1:im,:)*dtf + else + do k=1,levs + do i=1,im + tem = dtdt(i,k) - (htrlw(i,k)+htrsw(i,k)*xmu(i)) + dt3dt(i,k) = dt3dt(i,k) + tem*dtf + enddo + enddo + endif + do k=1,levs + do i=1,im + du3dt_PBL(i,k) = du3dt_PBL(i,k) + dudt(i,k) * dtf + du3dt_OGWD(i,k) = du3dt_OGWD(i,k) - dudt(i,k) * dtf + dv3dt_PBL(i,k) = dv3dt_PBL(i,k) + dvdt(i,k) * dtf + dv3dt_OGWD(i,k) = dv3dt_OGWD(i,k) - dvdt(i,k) * dtf + enddo + enddo + endif + if (lprnt) then print* print*,"===Finished with mynn_bl_driver; output:" diff --git a/physics/module_bl_mynn.F90 b/physics/module_bl_mynn.F90 index 8cec1b382..183d4bb5a 100644 --- a/physics/module_bl_mynn.F90 +++ b/physics/module_bl_mynn.F90 @@ -4,27 +4,35 @@ !WRF:MODEL_LAYER:PHYSICS ! -!>\defgroup gsd_mynn_edmf GSD MYNN-EDMF PBL Scheme -!! This module is translated from Nakanishi and Niino (2009) \cite NAKANISHI_2009 -!! f77 to F90 and put into WRF by Mariusz Pagowski -!! NOAA/GSD & CIRA/CSU, Feb 2008. -!! Changes to original code: -!! -# code is 1D (in z) -!! -# no advection of TKE, covariances and variances +!>\defgroup gsd_mynn_edmf GSD MYNN-EDMF PBL Scheme Module +!! The MYNN-EDMF scheme (Olson et al. 2019 \cite olson_et_al_2019) represents the local +!! mixing using an eddy-diffusivity approach tied to turbulent kinetic energy (TKE). +!! The nonlocal mixing, important for convective boundary layers, is represented using +!! a mass-flux approach. The scheme can be run with either a 2.5 or 3.0 closure and includes +!! a partial-condensation scheme, commonly referred to as a cloud PDF or statistical-cloud +!! scheme, to represent the effects of subgrid-scale (SGS) clouds on buoyancy. +!! This module was originally translated from Nakanishi and Niino (2009) \cite NAKANISHI_2009 +!! and put into the WRF model by Mariusz Pagowski NOAA/GSD and CIRA/CSU in 2008. It was +!! extensively modified by Joseph Olson and Jaymes Kenyon of NOAA/GSD and CU/CIRES. +!! +!! Changes to original code introduced by M. Pagowski in 2008: +!! -# Code is 1D (in z) +!! -# No advection of TKE, covariances and variances !! -# Cranck-Nicholson replaced with the implicit scheme -!! -# removed terrain dependent grid since input in WRF in actual distances in z[m] -!! -# cosmetic changes to adhere to WRF standard (remove common blocks, intent etc) +!! -# Removed terrain dependent grid since input in WRF in actual distances in z[m] +!! -# Cosmetic changes to adhere to WRF standard (remove common blocks, intent etc) !! -!!Modifications implemented by Joseph Olson and Jaymes Kenyon NOAA/GSD/MDB - CU/CIRES +!! Further modifications implemented by J. Olson and J. Kenyon: !! !! Departures from original MYNN (Nakanish and Niino (2009) \cite NAKANISHI_2009) -!! -# Addition of BouLac mixing length in the free atmosphere. +!! -# Added the of BouLac mixing length in the free atmosphere. !! -# Changed the turbulent mixing length to be integrated from the -!! surface to the top of the BL + a transition layer depth. +!! surface to the top of the BL plus a transition layer depth. !! +!! Changes made in various versions of the WRF model: !!\version v3.4.1: !! - Option to use Kitamura/Canuto modification which removes -!! the critical Richardson number and negative TKE (default). +!! the critical Richardson number and negative TKE (default) !! - Hybrid PBL height diagnostic, which blends a theta-v-based !! definition in neutral/convective BL and a TKE-based definition !! in stable conditions. @@ -32,7 +40,7 @@ !!\version v3.5.0: !! - TKE advection option (bl_mynn_tkeadvect) !!\version v3.5.1: -!! - Fog deposition related changes. +!! - Fog deposition related changes !!\version v3.6.0: !! - Removed fog deposition from the calculation of tendencies !! - Added mixing of qc, qi, qni @@ -40,10 +48,10 @@ !! coupling to shcu schemes !!\version v3.8.0: !! - Added subgrid scale cloud output for coupling to radiation -!! schemes (activated by setting icloud_bl =1 in phys namelist). +!! schemes (activated by setting icloud_bl =1 in phys namelist) !! - Added WRF_DEBUG prints (at level 3000) -!! - Added Tripoli and Cotton (1981) \cite Tripoli_1981 correction. -!! - Added namelist option bl_mynn_cloudmix to test effect of mixing cloud species (default = 1: on). +!! - Added Tripoli and Cotton (1981) \cite Tripoli_1981 correction +!! - Added namelist option bl_mynn_cloudmix to test effect of mixing cloud species (default = 1: on) !! - Added mass-flux option (bl_mynn_edmf, = 1 for DMP mass-flux, 0: off). Related options: !! - bl_mynn_edmf_mom = 1 : activate momentum transport in MF scheme !! - bl_mynn_edmf_tke = 1 : activate TKE transport in MF scheme @@ -52,56 +60,56 @@ !! - Added new cloud PDF option (bl_mynn_cloudpdf = 2) from Chaboureau !! and Bechtold (2002) \cite Chaboureau_2002 with modifications !! - Added capability to mix chemical species when env variable -!! WRF_CHEM = 1, thanks to Wayne Angevine. +!! WRF_CHEM = 1, thanks to Wayne Angevine !! - Added scale-aware mixing length, following Junshi Ito's work -!! Ito et al. (2015, BLM) \cite Ito_2015. +!! Ito et al. (2015, BLM) \cite Ito_2015 !!\version v3.9.0: !! - Improvement to the mass-flux scheme (dynamic number of plumes, -!! better plume/cloud depth, significant speed up, better cloud fraction). -!! - Added Stochastic Parameter Perturbation (SPP) implementation. +!! better plume/cloud depth, significant speed up, better cloud fraction) +!! - Added Stochastic Parameter Perturbation (SPP) implementation !! - Many miscellaneous tweaks to the mixing lengths and stratus -!! component of the subgrid clouds. +!! component of the subgrid clouds !!\version v4.0: !! - Removed or added alternatives to WRF-specific functions/modules -!! for the sake of portability to other models. +!! for the sake of portability to other models !! - Further refinement of mass-flux scheme from SCM experiments with !! Wayne Angevine: switch to linear entrainment and back to -!! Simpson and Wiggert-type w-equation. +!! Simpson and Wiggert-type w-equation !! - Addition of TKE production due to radiation cooling at top of -!! clouds (proto-version); not activated by default. +!! clouds (proto-version); not activated by default !! - Some code rewrites to move if-thens out of loops in an attempt to -!! improve computational efficiency. +!! improve computational efficiency !! - New tridiagonal solver, which is supposedly 14% faster and more -!! conservative. Impact seems very small. +!! conservative. Impact seems very small !! - Many miscellaneous tweaks to the mixing lengths and stratus -!! component of the subgrid-scale (SGS) clouds. +!! component of the subgrid-scale (SGS) clouds !!\version v4.1: !! - Big improvements in downward SW radiation due to revision of subgrid clouds -!! - better cloud fraction and subgrid scale mixing ratios. +!! - better cloud fraction and subgrid scale mixing ratios !! - may experience a small cool bias during the daytime now that high -!! SW-down bias is greatly reduced... +!! SW-down bias is greatly reduced !! - Some tweaks to increase the turbulent mixing during the daytime for -!! bl_mynn_mixlength option 2 to alleviate cool bias (very small impact). -!! - Improved ensemble spread from changes to SPP in MYNN +!! bl_mynn_mixlength option 2 to alleviate cool bias (very small impact) +!! - Improved ensemble spread from changes to Stochastic Parameter Perturbation (SPP) in MYNN !! - now perturbing eddy diffusivity and eddy viscosity directly !! - now perturbing background rh (in SGS cloud calc only) !! - now perturbing entrainment rates in mass-flux scheme !! - Added IF checks (within IFDEFS) to protect mixchem code from being used -!! when HRRR smoke is used (no impact on regular non-wrf chem use) -!! - Important bug fix for wrf chem when transporting chemical species in MF scheme +!! when HRRR smoke is used (no impact when WRF-CHEM is not used) +!! - Important bug fix for WRF-CHEM when transporting chemical species in MF scheme !! - Removed 2nd mass-flux scheme (no only bl_mynn_edmf = 1, no option 2) !! - Removed unused stochastic code for mass-flux scheme !! - Changed mass-flux scheme to be integrated on interface levels instead of !! mass levels - impact is small -!! - Added option to mix 2nd moments in MYNN as opposed to the scalar_pblmix option. +!! - Added option to mix second moments in MYNN as opposed to the scalar_pblmix option. !! - activated with bl_mynn_mixscalars = 1; this sets scalar_pblmix = 0 !! - added tridagonal solver used in scalar_pblmix option to duplicate tendencies -!! - this alone changes the interface call considerably from v4.0. +!! - this alone changes the interface call considerably from v4.0 !! - Slight revision to TKE production due to radiation cooling at top of clouds !! - Added the non-Guassian buoyancy flux function of Bechtold and Siebesma (1998) \cite Bechtold_1998 !! - improves TKE in SGS clouds !! - Added heating due to dissipation of TKE (small impact, maybe + 0.1 C daytime PBL temp) -!! - Misc changes made for FV3/MPAS compatibility +!! - Miscellaneous changes made for FV3/MPAS compatibility !! !!Many of these changes are now documented in Olson et al. (2019, !! NOAA Technical Memorandum) @@ -1126,12 +1134,12 @@ END SUBROUTINE mym_length !! computational expense. This subroutine computes the length scales up and down !! and then computes the min, average of the up/down length scales, and also !! considers the distance to the surface. -!!\param dlu the distance a parcel can be lifted upwards give a finite -!! amount of TKE. +!\param dlu the distance a parcel can be lifted upwards give a finite +! amount of TKE. !\param dld the distance a parcel can be displaced downwards given a -!! finite amount of TKE. -!!\param lb1 the minimum of the length up and length down -!!\param lb2 the average of the length up and length down +! finite amount of TKE. +!\param lb1 the minimum of the length up and length down +!\param lb2 the average of the length up and length down SUBROUTINE boulac_length0(k,kts,kte,zw,dz,qtke,theta,lb1,lb2) INTEGER, INTENT(IN) :: k,kts,kte diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 8e2340ade..66f2bfa44 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -408,7 +408,7 @@ MODULE module_mp_thompson !>\ingroup aathompson !! This subroutine calculates simplified cloud species equations and create !! lookup tables in Thomspson scheme. -!>\section gen_thompson_init GSD thompson_init General Algorithm +!>\section gen_thompson_init thompson_init General Algorithm !> @{ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & ids, ide, jds, jde, kds, kde, & @@ -501,22 +501,22 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & !> - From Martin et al. (1994), assign gamma shape parameter mu for cloud !! drops according to general dispersion characteristics (disp=~0.25 -!! for Maritime and 0.45 for Continental). +!! for maritime and 0.45 for continental) !.. disp=SQRT((mu+2)/(mu+1) - 1) so mu varies from 15 for Maritime !.. to 2 for really dirty air. This not used in 2-moment cloud water !.. scheme and nu_c used instead and varies from 2 to 15 (integer-only). mu_c = MIN(15., (1000.E6/Nt_c + 2.)) -!> - Compute Schmidt number to one-third used numerous times. +!> - Compute Schmidt number to one-third used numerous times Sc3 = Sc**(1./3.) -!> - Compute min ice diam from mass, min snow/graupel mass from diam. +!> - Compute minimum ice diam from mass, min snow/graupel mass from diam D0i = (xm0i/am_i)**(1./bm_i) xm0s = am_s * D0s**bm_s xm0g = am_g * D0g**bm_g -!> - Compute constants various exponents and gamma() assoc with cloud, -!! rain, snow, and graupel. +!> - Compute constants various exponents and gamma() associated with cloud, +!! rain, snow, and graupel do n = 1, 15 cce(1,n) = n + 1. cce(2,n) = bm_r + n + 1. @@ -621,7 +621,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & ogg3 = 1./cgg(3) !+---+-----------------------------------------------------------------+ -!> - Simplify various rate eqns the best we can now. +!> - Simplify various rate equations !+---+-----------------------------------------------------------------+ !> - Compute rain collecting cloud water and cloud ice @@ -629,36 +629,36 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & t1_qr_qi = PI*.25*av_r * crg(9) t2_qr_qi = PI*.25*am_r*av_r * crg(8) -!> - Compute Graupel collecting cloud water +!> - Compute graupel collecting cloud water t1_qg_qc = PI*.25*av_g * cgg(9) -!> - Compute Snow collecting cloud water +!> - Compute snow collecting cloud water t1_qs_qc = PI*.25*av_s -!> - Compute Snow collecting cloud ice +!> - Compute snow collecting cloud ice t1_qs_qi = PI*.25*av_s -!> - Compute Evaporation of rain; ignore depositional growth of rain. +!> - Compute evaporation of rain; ignore depositional growth of rain t1_qr_ev = 0.78 * crg(10) t2_qr_ev = 0.308*Sc3*SQRT(av_r) * crg(11) -!> - Compute Sublimation/depositional growth of snow +!> - Compute sublimation/depositional growth of snow t1_qs_sd = 0.86 t2_qs_sd = 0.28*Sc3*SQRT(av_s) -!> - Compute Melting of snow +!> - Compute melting of snow t1_qs_me = PI*4.*C_sqrd*olfus * 0.86 t2_qs_me = PI*4.*C_sqrd*olfus * 0.28*Sc3*SQRT(av_s) -!> - Compute Sublimation/depositional growth of graupel +!> - Compute sublimation/depositional growth of graupel t1_qg_sd = 0.86 * cgg(10) t2_qg_sd = 0.28*Sc3*SQRT(av_g) * cgg(11) -!> - Compute Melting of graupel +!> - Compute melting of graupel t1_qg_me = PI*4.*C_cube*olfus * 0.86 * cgg(10) t2_qg_me = PI*4.*C_cube*olfus * 0.28*Sc3*SQRT(av_g) * cgg(11) -!> - Compute Constants for helping find lookup table indexes. +!> - Compute constants for helping find lookup table indexes nic2 = NINT(ALOG10(r_c(1))) nii2 = NINT(ALOG10(r_i(1))) nii3 = NINT(ALOG10(Nt_i(1))) @@ -669,7 +669,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & nig3 = NINT(ALOG10(N0g_exp(1))) niIN2 = NINT(ALOG10(Nt_IN(1))) -!> - Create bins of cloud water (from min diameter up to 100 microns). +!> - Create bins of cloud water (from min diameter up to 100 microns) Dc(1) = D0c*1.0d0 dtc(1) = D0c*1.0d0 do n = 2, nbc @@ -677,7 +677,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & dtc(n) = (Dc(n) - Dc(n-1)) enddo -!> - Create bins of cloud ice (from min diameter up to 5x min snow size). +!> - Create bins of cloud ice (from min diameter up to 5x min snow size) xDx(1) = D0i*1.0d0 xDx(nbi+1) = 5.0d0*D0s do n = 2, nbi @@ -689,7 +689,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & dti(n) = xDx(n+1) - xDx(n) enddo -!> - Create bins of rain (from min diameter up to 5 mm). +!> - Create bins of rain (from min diameter up to 5 mm) xDx(1) = D0r*1.0d0 xDx(nbr+1) = 0.005d0 do n = 2, nbr @@ -701,7 +701,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & dtr(n) = xDx(n+1) - xDx(n) enddo -!> - Create bins of snow (from min diameter up to 2 cm). +!> - Create bins of snow (from min diameter up to 2 cm) xDx(1) = D0s*1.0d0 xDx(nbs+1) = 0.02d0 do n = 2, nbs @@ -713,7 +713,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & dts(n) = xDx(n+1) - xDx(n) enddo -!> - Create bins of graupel (from min diameter up to 5 cm). +!> - Create bins of graupel (from min diameter up to 5 cm) xDx(1) = D0g*1.0d0 xDx(nbg+1) = 0.05d0 do n = 2, nbg @@ -725,7 +725,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & dtg(n) = xDx(n+1) - xDx(n) enddo -!> - Create bins of cloud droplet number concentration (1 to 3000 per cc). +!> - Create bins of cloud droplet number concentration (1 to 3000 per cc) xDx(1) = 1.0d0 xDx(nbc+1) = 3000.0d0 do n = 2, nbc @@ -738,7 +738,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & nic1 = DLOG(t_Nc(nbc)/t_Nc(1)) !+---+-----------------------------------------------------------------+ -!> - Create lookup tables for most costly calculations. +!> - Create lookup tables for most costly calculations !+---+-----------------------------------------------------------------+ ! Assign mpicomm to module variable @@ -876,20 +876,20 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & !> - Call table_ccnact() to read a static file containing CCN activation of aerosols. The !! data were created from a parcel model by Feingold & Heymsfield with -!! further changes by Eidhammer and Kriedenweis. +!! further changes by Eidhammer and Kriedenweis ! This computation is cheap compared to the others below, and ! doing it always ensures that the correct data is in the SIONlib ! file containing the precomputed tables *DH WRITE (*,*) ' calling table_ccnAct routine' call table_ccnAct -!> - Call table_efrw() and table_Efsw() to creat collision efficiency table -!! between rain/snow and cloud water. +!> - Call table_efrw() and table_efsw() to creat collision efficiency table +!! between rain/snow and cloud water WRITE (*,*)' creating qc collision eff tables' call table_Efrw call table_Efsw -!> - Call table_dropevap() to creat rain drop evaporation table. +!> - Call table_dropevap() to creat rain drop evaporation table WRITE(*,*) ' creating rain evap table' call table_dropEvap @@ -898,7 +898,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & end if precomputed_tables_1 -!> - Call radar_init() to initialize various constants for computing radar reflectivity. +!> - Call radar_init() to initialize various constants for computing radar reflectivity call cpu_time(stime) xam_r = am_r xbm_r = bm_r @@ -925,7 +925,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & !$OMP sections !$OMP section -!> - Call qr_acr_qg() to create rain collecting graupel & graupel collecting rain table. +!> - Call qr_acr_qg() to create rain collecting graupel & graupel collecting rain table WRITE (*,*) ' creating rain collecting graupel table' call cpu_time(stime) call qr_acr_qg @@ -933,7 +933,7 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & if (mpirank==mpiroot) print '("Computing rain collecting graupel table took ",f10.3," seconds.")', etime-stime !$OMP section -!> - Call qr_acr_qs() to create rain collecting snow & snow collecting rain table. +!> - Call qr_acr_qs() to create rain collecting snow & snow collecting rain table WRITE (*,*) ' creating rain collecting snow table' call cpu_time(stime) call qr_acr_qs @@ -944,14 +944,14 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & !$OMP end parallel -!> - Call freezeh2o() to create cloud water and rain freezing (Bigg, 1953) table. +!> - Call freezeh2o() to create cloud water and rain freezing (Bigg, 1953) table WRITE (*,*) ' creating freezing of water drops table' call cpu_time(stime) call freezeH2O(threads) call cpu_time(etime) if (mpirank==mpiroot) print '("Computing freezing of water drops table took ",f10.3," seconds.")', etime-stime -!> - Call qi_aut_qs() to create conversion of some ice mass into snow category. +!> - Call qi_aut_qs() to create conversion of some ice mass into snow category WRITE (*,*) ' creating ice converting to snow table' call cpu_time(stime) call qi_aut_qs @@ -989,12 +989,11 @@ SUBROUTINE thompson_init(nwfa2d, nifa2d, nwfa, nifa, & endif if_micro_init END SUBROUTINE thompson_init - !> @} !>\ingroup aathompson !!This is a wrapper routine designed to transfer values from 3D to 1D. -!!\section gen_mpgtdriver GSD Thompson mp_gt_driver General Algorithm +!!\section gen_mpgtdriver Thompson mp_gt_driver General Algorithm !> @{ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & nwfa, nifa, nwfa2d, nifa2d, & @@ -1477,7 +1476,7 @@ END SUBROUTINE thompson_finalize !! Previously this code was based on Reisner et al (1998), but few of !! those pieces remain. A complete description is now found in !! Thompson et al. (2004, 2008)\cite Thompson_2004 \cite Thompson_2008. -!>\section gen_mp_thompson GSD mp_thompson General Algorithm +!>\section gen_mp_thompson mp_thompson General Algorithm !> @{ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & nr1d, nc1d, nwfa1d, nifa1d, t1d, p1d, w1d, dzq, & @@ -3695,7 +3694,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & enddo end subroutine mp_thompson -! >@} +!>@} + !+---+-----------------------------------------------------------------+ !ctrlL !+---+-----------------------------------------------------------------+ @@ -4755,9 +4755,11 @@ end function activ_ncloud !+---+-----------------------------------------------------------------+ !+---+-----------------------------------------------------------------+ !>\ingroup aathompson +!! Returns the incomplete gamma function q(a,x) evaluated by its +!! continued fraction representation as gammcf. SUBROUTINE GCF(GAMMCF,A,X,GLN) -!> RETURNS THE INCOMPLETE GAMMA FUNCTION Q(A,X) EVALUATED BY ITS -!! CONTINUED FRACTION REPRESENTATION AS GAMMCF. ALSO RETURNS +! RETURNS THE INCOMPLETE GAMMA FUNCTION Q(A,X) EVALUATED BY ITS +! CONTINUED FRACTION REPRESENTATION AS GAMMCF. ALSO RETURNS ! --- LN(GAMMA(A)) AS GLN. THE CONTINUED FRACTION IS EVALUATED BY ! --- A MODIFIED LENTZ METHOD. ! --- USES GAMMLN @@ -4792,6 +4794,8 @@ END SUBROUTINE GCF ! (C) Copr. 1986-92 Numerical Recipes Software 2.02 !>\ingroup aathompson +!! Returns the incomplete gamma function p(a,x) evaluated by +!! its series representation as gamser. SUBROUTINE GSER(GAMSER,A,X,GLN) ! --- RETURNS THE INCOMPLETE GAMMA FUNCTION P(A,X) EVALUATED BY ITS ! --- ITS SERIES REPRESENTATION AS GAMSER. ALSO RETURNS LN(GAMMA(A)) @@ -4825,6 +4829,7 @@ END SUBROUTINE GSER ! (C) Copr. 1986-92 Numerical Recipes Software 2.02 !>\ingroup aathompson +!! Returns the value ln(gamma(xx)) for xx > 0. REAL FUNCTION GAMMLN(XX) ! --- RETURNS THE VALUE LN(GAMMA(XX)) FOR XX > 0. IMPLICIT NONE diff --git a/physics/module_sf_ruclsm.F90 b/physics/module_sf_ruclsm.F90 index 37a574495..9ffc8f49b 100644 --- a/physics/module_sf_ruclsm.F90 +++ b/physics/module_sf_ruclsm.F90 @@ -2,8 +2,8 @@ !! This file is the entity of NOAA/ESRL/GSD RUC LSM Model(WRF version 4.0). !>\ingroup lsm_ruc_group -!!\brief This is the entity of RUC LSM model of physics subroutines. -!! It is a soil/veg/snowpack and ice/snowpack/land-surface model to update soil +!! This module contains the entity of the RUC LSM model, which is a +!! soil/veg/snowpack and ice/snowpack/land-surface model to update soil !! moisture, soil temperature, skin temperature, snowpack water content, snowdepth, !! and all terms of the surface energy balance and surface water balance. MODULE module_sf_ruclsm @@ -57,107 +57,6 @@ MODULE module_sf_ruclsm !>\ingroup lsm_ruc_group !> The RUN LSM model is described in Smirnova et al.(1997) !! \cite Smirnova_1997 and Smirnova et al.(2000) \cite Smirnova_2000 -!>\param dt time step(second) -!>\param ktau number of time step -!>\param nsl number of soil layers -!>\param graupelncv. -!>\param snowncv -!>\param rainncv one time step grid scale precipitation (mm/step) -!>\param raincv one time step convective precipitation (mm/step) -!>\param zs depth of soil levels (\f$m\f$) -!>\param rainbl accumulated rain in mm between the PBL calls -!>\param snow snow water equivalent (\f$mm\f$) -!>\param snowh -!>\param snowc flag indicating snow coverage (1 for snow cover) -!>\param frzfrac fraction of frozen precipitation -!>\param frpcpn -!>\param rhosnf -!>\param precipfr time step frozen precipitation (\f$mm\f$) -!>\param z3d height(\f$m\f$) -!>\param p8w 3D pressure (\f$Pa\f$) -!>\param t3d temperature (\f$K\f$) -!>\param qv3d 3D water vapor mixing ratio (\f$Kg Kg^{-1}\f$) -!>\param qc3d 3D cloud water mixing ratio (\f$Kg Kg^{-1}\f$) -!>\param rho3d 3D air density (\f$Kg m^{-3}\f$) -!>\param glw downward longwave flux at ground surface (\f$Wm^{-2}\f$) -!>\param gsw absorbed shortwave flux at ground surface (\f$Wm^{-2}\f$) -!>\param emiss surface emissivity (between 0 and 1) -!>\param chklowq is either 0 or 1 (so far set equal to 1).used only in MYJPBL -!>\param chs -!>\param flqc surface exchange coefficient for moisture(\f$Kg m^{-2} s^{-1}\f$) -!>\param flhc surface exchange coefficient for heat(\f$Wm^{-2}s^{-1}K^{-1}\f$) -!>\param mavail -!>\param canwat canopy moisture content (\f$mm\f$) -!>\param vegfra vegetation fraction (between 0 and 100) -!>\param alb surface albedo (between 0 and 1) -!>\param znt roughness length (\f$m\f$) -!>\param z0 -!>\param snoalb maximum snow albedo (between 0 and 1) -!>\param albbck snow-free albedo (between 0 and 1) -!>\param landusef -!>\param nlcat -!>\param soilctop -!>\param nscat -!>\param qsfc -!>\param qsg -!>\param qvg -!>\param qcg -!>\param dew -!>\param soilt1 -!>\param tsnav -!>\param tbot soil temperature at lower boundary (\f$K\f$) -!>\param ivgtyp USGS vegetation type (24 classes) -!>\param isltyp STASGO soil type (16 classes) -!>\param xland land mask (1 for land, 2 for water) -!>\param iswater -!>\param isice -!>\param xice -!>\param xice_threshold -!>\param cp heat capacity at constant pressure for dry air (\f$J Kg^{-1} K^{-1}\f$) -!>\param rv -!>\param rd -!>\param g0 acceleration due to gravity (\f$m s^{-2}\f$) -!>\param pi -!>\param lv latent heat of melting (\f$J Kg^{-1}\f$) -!>\param stbolt Stefan-Boltzmann constant (\f$W m^{-2} K^{-4}\f$) -!>\param soilmois soil moisture content (volumetric fraction) -!>\param sh2o -!>\param smavail -!>\param smmax -!>\param tso soil temperature (\f$K\f$) -!>\param soilt surface temperature (\f$K\f$) -!>\param hfx upward heat flux at the surface (\f$W m^{-2}\f$) -!>\param qfx upward moisture flux at the surface (\f$Kg m^{-2} s^{-1}\f$) -!>\param lh upward latent heat flux (\f$W m^{-2}\f$) -!>\param infiltr -!>\param runoff1 -!>\param runoff2 -!>\param acrunoff run-total surface runoff (\f$mm\f$) -!>\param sfcexc -!>\param sfcevp -!>\param grdflx soil heat flux (\f$W m^{-2}\f$; negative, if downward from surface) -!>\param snowfallac run-total snowfall accumulation (\f$m\f$) -!>\param acsnow run-total SWE of snowfall (\f$mm\f$) -!>\param snom -!>\param smfr3d -!>\param keepfr3dflag -!>\param myj -!>\param shdmin -!>\param shdmax -!>\param rdlai2d -!>\param ims start index for i in memory -!>\param ime end index for i in memory -!>\param jms start index for j in memory -!>\param jme end index for j in memory -!>\param kms start index for k in memory -!>\param kme end index for k in memory -!>\param its -!>\param ite -!>\param jts -!>\param jte -!>\param kts -!>\param kte -!! !>\section gen_lsmruc GSD RUC LSM General Algorithm !! @{ SUBROUTINE LSMRUC( & @@ -7678,8 +7577,8 @@ END SUBROUTINE SOILIN !+---+-----------------------------------------------------------------+ !>\ingroup lsm_ruc_group -!> THIS FUNCTION CALCULATES THE LIQUID SATURATION VAPOR MIXING RATIO AS -!! A FUNCTION OF TEMPERATURE AND PRESSURE (from Thompson scheme) +!> This function calculates the liquid saturation vapor mixing ratio as +!! a function of temperature and pressure (from Thompson scheme). REAL FUNCTION RSLF(P,T) IMPLICIT NONE diff --git a/physics/moninedmf.f b/physics/moninedmf.f index 918255a12..76bc62298 100644 --- a/physics/moninedmf.f +++ b/physics/moninedmf.f @@ -16,7 +16,7 @@ subroutine hedmf_finalize () end subroutine hedmf_finalize -!> \defgroup HEDMF GFS moninedmf Main +!> \defgroup HEDMF GFS Hybrid Eddy-Diffusivity Mass-Flux (HEDMF) Scheme Module !! @{ !! \brief This subroutine contains all of logic for the !! Hybrid EDMF PBL scheme except for the calculation of @@ -1094,7 +1094,7 @@ subroutine hedmf_run (ix,im,km,ntrac,ntcw,dv,du,tau,rtg, & ! compute tke dissipation rate ! !> ## Calculate heating due to TKE dissipation and add to the tendency for temperature -!! Following Han et al. (2015) \cite han_et_al_2015 , turbulence dissipation contributes to the tendency of temperature in the following way. First, turbulence dissipation is calculated by equation 17 of Han et al. (2015) \cite han_et_al_2015 for the PBL and equation 16 for the surface layer. +!! Following Han et al. (2016) \cite Han_2016 , turbulence dissipation contributes to the tendency of temperature in the following way. First, turbulence dissipation is calculated by equation 17 of Han et al. (2016) \cite Han_2016 for the PBL and equation 16 for the surface layer. if(dspheat) then ! do k = 1,km1 diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 index 9fdd43bad..86727aea7 100644 --- a/physics/mp_thompson.F90 +++ b/physics/mp_thompson.F90 @@ -1,11 +1,9 @@ !>\file mp_thompson.F90 -!! This file contains NOAA/GSD's Thompson MP scheme. +!! This file contains aerosol-aware Thompson MP scheme. -!>\defgroup aathompson GSD Aerosol-Aware Thompson MP Module -!! -!! Last modified 4 Apr 2019: remove legacy debugging code D. Heinzeller -!> @{ +!>\defgroup aathompson Aerosol-Aware Thompson MP Module +!! This module contains the aerosol-aware Thompson microphysics scheme. module mp_thompson use machine, only : kind_phys @@ -149,7 +147,7 @@ end subroutine mp_thompson_init #if 0 -!! \section arg_table_mp_thompson_run Argument Table +!> \section arg_table_mp_thompson_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | !! |-----------------|-----------------------------------------------------------------------|-----------------------------------------------------------------------|------------|------|-----------|-----------|--------|----------| !! | ncol | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | @@ -194,7 +192,7 @@ end subroutine mp_thompson_init !! #endif !>\ingroup aathompson -!>\section gen_thompson_hrrr GSD Thompson MP General Algorithm +!>\section gen_thompson_hrrr Thompson MP General Algorithm !>@{ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & spechum, qc, qr, qi, qs, qg, ni, nr, & @@ -496,4 +494,3 @@ subroutine mp_thompson_finalize(errmsg, errflg) end subroutine mp_thompson_finalize end module mp_thompson -!> @} diff --git a/physics/ozphys_2015.f b/physics/ozphys_2015.f index 6eceaf203..0e7e11484 100644 --- a/physics/ozphys_2015.f +++ b/physics/ozphys_2015.f @@ -20,7 +20,7 @@ subroutine ozphys_2015_finalize() end subroutine ozphys_2015_finalize -!>\defgroup GFS_ozphys_2015 GFS ozphys_2015 Main +!>\defgroup GFS_ozphys_2015 GFS Ozone Photochemistry (2015) Scheme Module !! \brief The operational GFS currently parameterizes ozone production and !! destruction based on monthly mean coefficients ( !! \c ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77) provided by Naval diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f index a6afff5d3..60bb50d34 100644 --- a/physics/radiation_aerosols.f +++ b/physics/radiation_aerosols.f @@ -123,20 +123,6 @@ !! \brief This module contains climatological atmospheric aerosol schemes for !! radiation computations. !! -!! GFS selection for Aerosol distribution (namelist control paramter - \b IAER = 111 -!! and \b IAERMDL =0; not available for the current operational GFS) -!! \n IAERMDL=0: OPAC-climatology tropospheric model (monthly mean, \f$15^o\f$ horizontal resolution) -!! \n IAERMDL=1: GOCART-climatology tropospheric aerosol model -!! \n IAERMDL=2: GOCART-climatology prognostic aerosol model -!! -!!\n \b Stratosphere: historical recorded volcanic forcing in four zonal mean bands (1850-2000) -!!\n \b IAER = abc of 3-digit integer flags: a-volcanic; b-LW; c-SW -!!\n a=0: include background stratospheric volcanic aerosol effect (if both b&c /=0) -!!\n a=1: include recorded stratospheric volcanic aerosol effect -!!\n b=0: no LW tropospheric aerosol effect -!!\n b=1: include LW tropospheric aerosol effect -!!\n c=0: no SW tropospheric aerosol effect -!!\n c=1: include SW tropospheric aerosol effect !! !!\version NCEP-Radiation_aerosols v5.2 Jan 2013 !! diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f index 66da419bf..1c5605ae3 100644 --- a/physics/radiation_clouds.f +++ b/physics/radiation_clouds.f @@ -845,6 +845,8 @@ end subroutine progcld1 !!\param delp (IX,NLAY), model layer pressure thickness in mb (100Pa) !!\param IX horizontal dimention !!\param NLAY,NLP1 vertical layer/level dimensions +!!\param lmfshal flag for mass-flux shallow convection scheme in the cloud fraction calculation +!!\param lmfdeep2 flag for mass-flux deep convection scheme in the cloud fraction calculation !!\param clouds (IX,NLAY,NF_CLDS), cloud profiles !!\n (:,:,1) - layer total cloud fraction !!\n (:,:,2) - layer cloud liq water path \f$(g/m^2)\f$ @@ -860,7 +862,7 @@ end subroutine progcld1 !!\param mbot (IX,3), vertical indices for low, mid, hi cloud bases !!\param de_lgth (IX), clouds decorrelation length (km) !>\section gen_progcld2 progcld2 General Algorithm -!! @{ +!> @{ subroutine progcld2 & & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, & ! --- inputs: & xlat,xlon,slmsk,dz,delp, f_ice,f_rain,r_rime,flgmin, & @@ -1265,7 +1267,7 @@ subroutine progcld2 & return !................................... end subroutine progcld2 -!! @} +!> @} !----------------------------------- !> \ingroup module_radiation_clouds @@ -1279,6 +1281,8 @@ end subroutine progcld2 !!\param qstl (ix,nlay), layer saturate humidity in gm/gm !!\param rhly (ix,nlay), layer relative humidity (=qlyr/qstl) !!\param clw (ix,nlay), layer cloud condensate amount +!!\param cnvw (ix,nlay), layer convective cloud condensate +!!\param cnvc (ix,nlay), layer convective cloud cover !!\param xlat (ix), grid latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param xlon (ix), grid longitude in radians (not used) @@ -1684,6 +1688,8 @@ end subroutine progcld3 !!\param xlon (ix), grid longitude in radians (not used) !!\param slmsk (ix), sea/land mask array (sea:0, land:1, sea-ice:2) !!\param cldtot (ix,nlay), layer total cloud fraction +!!\param dz (ix,nlay), layer thickness (km) +!!\param delp (ix,nlay), model layer pressure thickness in mb (100Pa) !!\param ix horizontal dimension !!\param nlay vertical layer dimension !!\param nlp1 vertical level dimension @@ -1700,6 +1706,7 @@ end subroutine progcld3 !!\param clds fraction of clouds for low, mid, hi cloud tops !!\param mtop vertical indices for low, mid, hi cloud tops !!\param mbot vertical indices for low, mid, hi cloud bases +!!\param de_lgth clouds decorrelation length (km) !>\section gen_progcld4 progcld4 General Algorithm !! @{ subroutine progcld4 & @@ -2014,6 +2021,8 @@ end subroutine progcld4 !! range, otherwise see in-line comment !>\param xlon (ix), grid longitude in radians (not used) !>\param slmsk (ix), sea/land mask array (sea:0, land:1, sea-ice:2) +!>\param dz layer thickness (km) +!>\param delp model layer pressure thickness in mb (100Pa) !>\param ntrac number of tracers minus one (Model%ntrac-1) !>\param ntcw tracer index for cloud liquid water minus one (Model%ntcw-1) !>\param ntiw tracer index for cloud ice water minus one (Model%ntiw-1) @@ -2037,6 +2046,7 @@ end subroutine progcld4 !>\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 de_lgth clouds decorrelation length (km) !>\section gen_progcld4o progcld4o General Algorithm !! @{ subroutine progcld4o & @@ -2677,9 +2687,8 @@ end subroutine progcld5 !!\param plvl (IX,NLP1), model level pressure in mb (100Pa) !!\param tlyr (IX,NLAY), model layer mean temperature in K !!\param tvly (IX,NLAY), model layer virtual temperature in K -!!\param qlyr (IX,NLAY), layer specific humidity in gm/gm -!!\param clw (IX,NLAY), layer cloud liquid water amount -!!\param ciw (IX,NLAY), layer cloud ice water amount +!!\param ccnd (IX,NLAY), layer cloud condensate amount +!!\param ncnd number of layer cloud condensate types !!\param xlat (IX), grid latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param xlon (IX), grid longitude in radians (not used) diff --git a/physics/radlw_main.f b/physics/radlw_main.f index 23ed429e6..4d560b7b2 100644 --- a/physics/radlw_main.f +++ b/physics/radlw_main.f @@ -356,7 +356,7 @@ module rrtmg_lw subroutine rrtmg_lw_init () end subroutine rrtmg_lw_init -!> \defgroup module_radlw_main GFS radlw Main +!> \defgroup module_radlw_main GFS RRTMG Longwave Module !! \brief This module includes NCEP's modifications of the RRTMG-LW radiation !! code from AER. !! @@ -1848,6 +1848,8 @@ end subroutine cldprop !!\param cldf layer cloud fraction !!\param nlay number of model vertical layers !!\param ipseed permute seed for random num generator +!!\param dz layer thickness +!!\param de_lgth layer cloud decorrelation length (km) !!\param lcloudy sub-colum cloud profile flag array !!\section mcica_subcol_gen mcica_subcol General Algorithm !! @{ @@ -2086,7 +2088,7 @@ end subroutine mcica_subcol !! 4-h2o/ch4,5-n2o/co2,6-o3/co2 !!\n (:,:,n)n=1,2: the rates of ref press at !! the 2 sides of the layer -!!\param facij factors multiply the reference ks, i,j=0/1 for +!!\param fac00,fac01,fac10,fac11 factors multiply the reference ks, i,j=0/1 for !! lower/higher of the 2 appropriate temperatures !! and altitudes. !!\param selffac scale factor for w. v. self-continuum equals @@ -2102,8 +2104,7 @@ end subroutine mcica_subcol !!\param scaleminor,scaleminorn2 scale factors for minor gases !!\param indminor index of lower ref temp for minor gases !>\section setcoef_gen setcoef General Algorithm -!! -! ---------------------------------- +!> @{ subroutine setcoef & & ( pavel,tavel,tz,stemp,h2ovmr,colamt,coldry,colbrd, & ! --- inputs: & nlay, nlp1, & @@ -2360,6 +2361,7 @@ subroutine setcoef & return ! .................................. end subroutine setcoef +!> @} ! ---------------------------------- !>\ingroup module_radlw_main @@ -3768,7 +3770,7 @@ end subroutine rtrnmc !! 5-n2o/co2,6-o3/co2 !!\n (:,:,n)n=1,2: the rates of ref press at the 2 !! sides of the layer -!!\param facij factors multiply the reference ks, i,j of 0/1 +!!\param fac00,fac01,fac10,fac11 factors multiply the reference ks, i,j of 0/1 !! for lower/higher of the 2 appropriate !! temperatures and altitudes !!\param jp index of lower reference pressure diff --git a/physics/radsw_main.f b/physics/radsw_main.f index 06c60bac8..23bfdaa8a 100644 --- a/physics/radsw_main.f +++ b/physics/radsw_main.f @@ -376,7 +376,7 @@ module rrtmg_sw subroutine rrtmg_sw_init () end subroutine rrtmg_sw_init -!> \defgroup module_radsw_main GFS radsw Main +!> \defgroup module_radsw_main GFS RRTMG Shortwave Module !! This module includes NCEP's modifications of the RRTMG-SW radiation !! code from AER. !! @@ -1586,6 +1586,8 @@ end subroutine rswinit !!\param nlay vertical layer number !!\param ipseed permutation seed for generating random numbers !! (isubcsw>0) +!!\param dz layer thickness (km) +!!\param delgth layer cloud decorrelation length (km) !!\param taucw cloud optical depth, w/o delta scaled !!\param ssacw weighted cloud single scattering albedo !! (ssa = ssacw / taucw) @@ -1974,9 +1976,11 @@ end subroutine cldprop !!\param cldf layer cloud fraction !!\param nlay number of model vertical layers !!\param ipseed permute seed for random num generator +!!\param dz layer thickness (km) +!!\param de_lgth layer cloud decorrelation length (km) !!\param lcloudy sub-colum cloud profile flag array !!\section mcica_sw_gen mcica_subcol General Algorithm -!! @{ +!> @{ ! ---------------------------------- subroutine mcica_subcol & & ( cldf, nlay, ipseed, dz, de_lgth, & ! --- inputs @@ -2184,7 +2188,7 @@ subroutine mcica_subcol & return ! .................................. end subroutine mcica_subcol -!! @} +!> @} ! ---------------------------------- !>\ingroup module_radsw_main @@ -2199,7 +2203,7 @@ end subroutine mcica_subcol !!\param jp indices of lower reference pressure !!\param jt,jt1 indices of lower reference temperatures at !! levels of jp and jp+1 -!!\param facij factors mltiply the reference ks,i,j=0/1 for +!!\param fac00,fac01,fac10,fac11 factors mltiply the reference ks,i,j=0/1 for !! lower/higher of the 2 appropriate temperature !! and altitudes. !!\param selffac scale factor for w. v. self-continuum equals @@ -4004,7 +4008,7 @@ end subroutine vrtqdr !! are for h2o, co2, o3, n2o, ch4, and o2, !! respectively \f$(mol/cm^2)\f$ !!\param colmol total column amount (dry air+water vapor) -!!\param facij for each layer, these are factors that are +!!\param fac00,fac01,fac10,fac11 for each layer, these are factors that are !! needed to compute the interpolation factors !! that multiply the appropriate reference !! k-values. a value of 0/1 for i,j indicates diff --git a/physics/rayleigh_damp.f b/physics/rayleigh_damp.f index 1e5711347..6c2806668 100644 --- a/physics/rayleigh_damp.f +++ b/physics/rayleigh_damp.f @@ -11,7 +11,7 @@ module rayleigh_damp subroutine rayleigh_damp_init () end subroutine rayleigh_damp_init -!>\defgroup rayleigh_main GFS Rayleigh Damping Main +!>\defgroup rayleigh_main GFS Rayleigh Damping Module !!\brief This is the Rayleigh friction calculation with total energy conservation. !! !! Role of Rayleigh friction, it attempts to resolve two issues: diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index d4b48af35..0cd4468a0 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -23,7 +23,7 @@ end subroutine samfdeepcnv_init subroutine samfdeepcnv_finalize() end subroutine samfdeepcnv_finalize -!> \defgroup SAMFdeep GFS samfdeepcnv Main +!> \defgroup SAMFdeep GFS Scale-Aware Mass-Flux Deep Convection Scheme Module !! @{ !> \brief This subroutine contains the entirety of the SAMF deep convection !! scheme. diff --git a/physics/samfshalcnv.f b/physics/samfshalcnv.f index 1600244ea..24f56d1cd 100644 --- a/physics/samfshalcnv.f +++ b/physics/samfshalcnv.f @@ -23,7 +23,7 @@ subroutine samfshalcnv_finalize() end subroutine samfshalcnv_finalize -!> \defgroup SAMF_shal GFS samfshalcnv Main +!> \defgroup SAMF_shal GFS Scale-Aware Mass-Flux Shallow Convection Scheme Module !! @{ !> \brief This subroutine contains the entirety of the SAMF shallow convection !! scheme. diff --git a/physics/satmedmfvdif.F b/physics/satmedmfvdif.F index 2e2d472ac..fc3cc9d98 100644 --- a/physics/satmedmfvdif.F +++ b/physics/satmedmfvdif.F @@ -12,7 +12,7 @@ end subroutine satmedmfvdif_init subroutine satmedmfvdif_finalize () end subroutine satmedmfvdif_finalize -!> \defgroup satmedmf GFS satmedmfvdif Main +!> \defgroup satmedmf GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (TKE-EDMF) Scheme Module !! @{ !! \brief This subroutine contains all of the logic for the !! scale-aware TKE-based moist eddy-diffusion mass-flux (TKE-EDMF) scheme. @@ -83,15 +83,14 @@ end subroutine satmedmfvdif_finalize !! !!\section gen_satmedmfvdif GFS satmedmfvdif General Algorithm !! satmedmfvdif_run() computes subgrid vertical turbulence mixing -!! using scale-aware TKE-based moist eddy-diffusion mass-flux (EDMF) parameterization -!! (Han and Bretherton (2019)). -!! -# For the convective boundary layer, the scheme adopts -!! EDMF parameterization (Siebesma et al., 2007) to take -!! into account nonlocal transport by large eddies (mfpblt.f). -!! -# A new mass-flux parameterization for stratocumulus-top-induced turbulence -!! mixing has been introduced (previously, it was eddy diffusion form) -!! [mfscu.f]. -!! -# For local turbulence mixing, a TKE closure model is used. +!! using the scale-aware TKE-based moist eddy-diffusion mass-flux (EDMF) parameterization of +!! Han and Bretherton (2019) \cite Han_2019 . +!! -# The local turbulent mixing is represented by an eddy-diffusivity scheme which +!! is a function of a prognostic TKE. +!! -# For the convective boundary layer, nonlocal transport by large eddies +!! (mfpblt.f), is represented using a mass flux approach (Siebesma et al.(2007) \cite Siebesma_2007 ). +!! -# A mass-flux approach is also used to represent the stratocumulus-top-induced turbulence +!! (mfscu.f). !! \section detail_satmedmfvidf GFS satmedmfvdif Detailed Algorithm !> @{ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & @@ -287,7 +286,7 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & kmpbl = km / 2 kmscu = km / 2 !> - Compute physical height of the layer centers and interfaces from -!! the geopotential height (zi and zl) +!! the geopotential height (\p zi and \p zl) do k=1,km do i=1,im zi(i,k) = phii(i,k) * gravi @@ -308,12 +307,12 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & zm(i,k) = zi(i,k+1) enddo enddo -!> - Compute horizontal grid size (gdx) +!> - Compute horizontal grid size (\p gdx) do i=1,im gdx(i) = sqrt(garea(i)) enddo !> - Initialize tke value at vertical layer centers and interfaces -!! from tracer (tke and tkeh) +!! from tracer (\p tke and \p tkeh) do k=1,km do i=1,im tke(i,k) = max(q1(i,k,ntke), tkmin) @@ -449,7 +448,6 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! !> - Compute an empirical cloud fraction based on !! Xu and Randall (1996) \cite xu_and_randall_1996 -!! (see \ref cld_fra). do k = 1, km do i = 1, im plyr(i,k) = 0.01 * prsl(i,k) ! pa to mb (hpa) @@ -520,7 +518,7 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & if(.not.sfcflg(i) .or. sflux(i) <= 0.) pblflg(i)=.false. enddo ! -!> - Compute critical bulk richardson number (\f$Rb_{cr}\f$) (crb) +!> - Compute critical bulk Richardson number (\f$Rb_{cr}\f$) (crb) !! - For the unstable PBL, crb is a constant (0.25) !! - For the stable boundary layer (SBL), \f$Rb_{cr}\f$ varies !! with the surface Rossby number, \f$R_{0}\f$, as given by @@ -573,7 +571,7 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! Find pbl height based on bulk richardson number (mrf pbl scheme) +! Find pbl height based on bulk Richardson number (mrf pbl scheme) ! and also for diagnostic purpose ! ! @@ -584,7 +582,7 @@ subroutine satmedmfvdif_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & !> - Given the thermal's properties and the critical Richardson number, !! a loop is executed to find the first level above the surface (kpblx) where !! the modified Richardson number is greater than the critical Richardson -!! number, using equation 10a from Toen and Mahrt (1996) \cite troen_and_mahrt_1986 +!! number, using equation 10a from Troen and Mahrt (1996) \cite troen_and_mahrt_1986 !! (also equation 8 from Hong and Pan (1996) \cite hong_and_pan_1996): do k = 1, kmpbl do i = 1, im diff --git a/physics/sfc_diff.f b/physics/sfc_diff.f index 5361b6355..7757dd3c9 100644 --- a/physics/sfc_diff.f +++ b/physics/sfc_diff.f @@ -24,7 +24,7 @@ end subroutine sfc_diff_init subroutine sfc_diff_finalize end subroutine sfc_diff_finalize -!> \defgroup GFS_diff_main GFS sfc_diff Main +!> \defgroup GFS_diff_main GFS Surface Layer Scheme Module !> @{ !> \brief This subroutine calculates surface roughness length. !! diff --git a/physics/sfc_drv_ruc.F90 b/physics/sfc_drv_ruc.F90 index 3b0e64637..8316aba4d 100644 --- a/physics/sfc_drv_ruc.F90 +++ b/physics/sfc_drv_ruc.F90 @@ -114,8 +114,8 @@ end subroutine lsm_ruc_finalize ! snwdph - real, snow depth (water equiv) over land im ! ! tskin - real, ground surface skin temperature ( k ) im ! ! tprcp - real, total precipitation im ! -! srflag - real, snow/rain flag for precipitation im ! -! sr - real, mixed-phase precipitation fraction im ! +! srflag - real, snow/rain flag for precipitation or mixed-phase +! precipitation fraction (depends on MP) im ! ! tslb - real, soil temp (k) im,km ! ! sh2o - real, liquid soil moisture im,km ! ! canopy - real, canopy moisture content (mm) im ! @@ -134,140 +134,144 @@ end subroutine lsm_ruc_finalize ! sbsno - real, sublimation/deposit from snopack (m/s) im ! ! stm - real, total soil column moisture content (m) im ! ! zorl - real, surface roughness im ! -! wet1 - real, normalized soil wetness im ! +! wetness - real, normalized soil wetness im ! ! ! ! ==================== end of description ===================== ! !> \defgroup lsm_ruc_group GSD RUC LSM Model -!! This module contains GSD RUC Land Surface Model +!! This module contains the RUC Land Surface Model developed by NOAA/GSD +!! (Smirnova et al. 2016 \cite Smirnova_2016). #if 0 !> \section arg_table_lsm_ruc_run Argument Table -!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | -!! |-----------------|------------------------------------------------------------------------------|-----------------------------------------------------------------|---------------|------|-----------|-----------|--------|----------| -!! | delt | time_step_for_dynamics | physics time step | s | 0 | real | kind_phys | in | F | -!! | me | mpi_rank | current MPI-rank | index | 0 | integer | | in | F | -!! | kdt | index_of_time_step | current number of time steps | index | 0 | integer | | in | F | -!! | iter | ccpp_loop_counter | loop counter for subcycling loops in CCPP | index | 0 | integer | | in | F | -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | -!! | nlev | vertical_dimension | number of vertical levels | count | 0 | integer | | in | F | -!! | lsm_ruc | flag_for_ruc_land_surface_scheme | flag for RUC land surface model | flag | 0 | integer | | in | F | -!! | lsm | flag_for_land_surface_scheme | flag for land surface model | flag | 0 | integer | | in | F | -!! | do_mynnsfclay | do_mynnsfclay | flag to activate MYNN surface layer | flag | 0 | logical | | in | F | -!! | lsoil_ruc | soil_vertical_dimension_for_land_surface_model | number of soil layers internal to land surface model | count | 0 | integer | | in | F | -!! | lsoil | soil_vertical_dimension | soil vertical layer dimension | count | 0 | integer | | in | F | -!! | zs | depth_of_soil_levels_for_land_surface_model | depth of soil levels for land surface model | m | 1 | real | kind_phys | inout | F | -!! | islmsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | -!! | con_cp | specific_heat_of_dry_air_at_constant_pressure | specific heat !of dry air at constant pressure | J kg-1 K-1 | 0 | real | kind_phys | in | F | -!! | con_g | gravitational_acceleration | gravitational acceleration | m s-2 | 0 | real | kind_phys | in | F | -!! | con_pi | pi | ratio of a circle's circumference to its diameter | radians | 0 | real | kind_phys | in | F | -!! | con_rd | gas_constant_dry_air | ideal gas constant for dry air | J kg-1 K-1 | 0 | real | kind_phys | in | F | -!! | con_rv | gas_constant_water_vapor | ideal gas constant for water vapor | J kg-1 K-1 | 0 | real | kind_phys | in | F | -!! | con_hvap | latent_heat_of_vaporization_of_water_at_0C | latent heat of vaporization/sublimation (hvap) | J kg-1 | 0 | real | kind_phys | in | F | -!! | con_fvirt | ratio_of_vapor_to_dry_air_gas_constants_minus_one | rv/rd - 1 (rv = ideal gas constant for water vapor) | none | 0 | real | kind_phys | in | F | -!! | land | flag_nonzero_land_surface_fraction | flag indicating presence of some land surface area fraction | flag | 1 | logical | | in | F | -!! | rainnc | lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep | explicit rainfall from previous timestep | m | 1 | real | kind_phys | in | F | -!! | rainc | lwe_thickness_of_convective_precipitation_amount_from_previous_timestep | convective_precipitation_amount from previous timestep | m | 1 | real | kind_phys | in | F | -!! | ice | lwe_thickness_of_ice_amount_from_previous_timestep | ice amount from previous timestep | m | 1 | real | kind_phys | in | F | -!! | snow | lwe_thickness_of_snow_amount_from_previous_timestep | snow amount from previous timestep | m | 1 | real | kind_phys | in | F | -!! | graupel | lwe_thickness_of_graupel_amount_from_previous_timestep | graupel amount from previous timestep | m | 1 | real | kind_phys | in | F | -!! | srflag | flag_for_precipitation_type | snow/rain flag for precipitation | flag | 1 | real | kind_phys | in | F | -!! | sncovr1 | surface_snow_area_fraction_over_land | surface snow area fraction | frac | 1 | real | kind_phys | inout | F | -!! | weasd | water_equivalent_accumulated_snow_depth_over_land | water equiv of acc snow depth over land | mm | 1 | real | kind_phys | inout | F | -!! | snwdph | surface_snow_thickness_water_equivalent_over_land | water equivalent snow depth over land | mm | 1 | real | kind_phys | inout | F | -!! | sr | ratio_of_snowfall_to_rainfall | snow ratio: ratio of snow to total precipitation | frac | 1 | real | kind_phys | in | F | -!! | rhosnf | density_of_frozen_precipitation | density of frozen precipitation | kg m-3 | 1 | real | kind_phys | out | F | -!! | zf | height_above_ground_at_lowest_model_layer | layer 1 height above ground (not MSL) | m | 1 | real | kind_phys | in | F | -!! | u1 | x_wind_at_lowest_model_layer | zonal wind at lowest model layer | m s-1 | 1 | real | kind_phys | in | F | -!! | v1 | y_wind_at_lowest_model_layer | meridional wind at lowest model layer | m s-1 | 1 | real | kind_phys | in | F | -!! | prsl1 | air_pressure_at_lowest_model_layer | mean pressure at lowest model layer | Pa | 1 | real | kind_phys | in | F | -!! | ddvel | surface_wind_enhancement_due_to_convection | surface wind enhancement due to convection | m s-1 | 1 | real | kind_phys | in | F | -!! | t1 | air_temperature_at_lowest_model_layer | mean temperature at lowest model layer | K | 1 | real | kind_phys | in | F | -!! | q1 | water_vapor_specific_humidity_at_lowest_model_layer | water vapor specific humidity at lowest model layer | kg kg-1 | 1 | real | kind_phys | in | F | -!! | qc | cloud_condensed_water_mixing_ratio_at_lowest_model_layer | moist (dry+vapor, no condensates) mixing ratio of cloud water at lowest model layer | kg kg-1 | 1 | real | kind_phys | in | F | -!! | dlwflx | surface_downwelling_longwave_flux | surface downwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | -!! | dswsfc | surface_downwelling_shortwave_flux | surface downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | -!! | snet | surface_net_downwelling_shortwave_flux | surface net downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | -!! | sfcemis | surface_longwave_emissivity | surface lw emissivity in fraction | frac | 1 | real | kind_phys | inout | F | -!! | wspd | wind_speed_at_lowest_model_layer | wind speed at lowest model level | m s-1 | 1 | real | kind_phys | inout | F | -!! | cm | surface_drag_coefficient_for_momentum_in_air_over_land | surface exchange coeff for momentum over land | none | 1 | real | kind_phys | in | F | -!! | ch | surface_drag_coefficient_for_heat_and_moisture_in_air_over_land | surface exchange coeff heat & moisture over land | none | 1 | real | kind_phys | in | F | -!! | chh | surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land | thermal exchange coefficient over land | kg m-2 s-1 | 1 | real | kind_phys | inout | F | -!! | cmm | surface_drag_wind_speed_for_momentum_in_air_over_land | momentum exchange coefficient over land | m s-1 | 1 | real | kind_phys | inout | F | -!! | wet1 | normalized_soil_wetness | normalized soil wetness | frac | 1 | real | kind_phys | inout | F | -!! | canopy | canopy_water_amount | canopy water amount | kg m-2 | 1 | real | kind_phys | inout | F | -!! | sigmaf | vegetation_area_fraction | areal fractional cover of green vegetation | frac | 1 | real | kind_phys | in | F | -!! | sfalb | surface_diffused_shortwave_albedo | mean surface diffused sw albedo | frac | 1 | real | kind_phys | inout | F | -!! | alvwf | mean_vis_albedo_with_weak_cosz_dependency | mean vis albedo with weak cosz dependency | frac | 1 | real | kind_phys | in | F | -!! | alnwf | mean_nir_albedo_with_weak_cosz_dependency | mean nir albedo with weak cosz dependency | frac | 1 | real | kind_phys | in | F | -!! | snoalb | upper_bound_on_max_albedo_over_deep_snow | maximum snow albedo | frac | 1 | real | kind_phys | in | F | -!! | zorl | surface_roughness_length_over_land_interstitial | surface roughness length over land (temporary use as interstitial)| cm | 1 | real | kind_phys | inout | F | -!! | qsurf | surface_specific_humidity_over_land | surface air saturation specific humidity over land | kg kg-1 | 1 | real | kind_phys | inout | F | -!! | sfcqc | cloud_condensed_water_mixing_ratio_at_surface | moist cloud water mixing ratio at surface | kg kg-1 | 1 | real | kind_phys | inout | F | -!! | sfcqv | water_vapor_mixing_ratio_at_surface | water vapor mixing ratio at surface | kg kg-1 | 1 | real | kind_phys | inout | F | -!! | sfcdew | surface_condensation_mass | surface condensation mass | kg m-2 | 1 | real | kind_phys | inout | F | -!! | tg3 | deep_soil_temperature | deep soil temperature | K | 1 | real | kind_phys | in | F | -!! | smc | volume_fraction_of_soil_moisture | total soil moisture | frac | 2 | real | kind_phys | inout | F | -!! | slc | volume_fraction_of_unfrozen_soil_moisture | liquid soil moisture | frac | 2 | real | kind_phys | inout | F | -!! | stc | soil_temperature | soil temperature | K | 2 | real | kind_phys | inout | F | -!! | smcwlt2 | volume_fraction_of_condensed_water_in_soil_at_wilting_point | soil water fraction at wilting point | frac | 1 | real | kind_phys | inout | F | -!! | smcref2 | threshold_volume_fraction_of_condensed_water_in_soil | soil moisture threshold | frac | 1 | real | kind_phys | inout | F | -!! | vegtype | vegetation_type_classification | vegetation type at each grid cell | index | 1 | integer | | in | F | -!! | soiltyp | soil_type_classification | soil type at each grid cell | index | 1 | integer | | in | F | -!! | isot | soil_type_dataset_choice | soil type dataset choice | index | 0 | integer | | in | F | -!! | ivegsrc | vegetation_type_dataset_choice | land use dataset choice | index | 0 | integer | | in | F | -!! | fice | sea_ice_concentration | ice fraction over open water | frac | 1 | real | kind_phys | in | F | -!! | keepfr | flag_for_frozen_soil_physics | flag for frozen soil physics (RUC) | flag | 2 | real | kind_phys | inout | F | -!! | smois | volume_fraction_of_soil_moisture_for_land_surface_model | volumetric fraction of soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | -!! | sh2o | volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model | volume fraction of unfrozen soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | -!! | smfrkeep | volume_fraction_of_frozen_soil_moisture_for_land_surface_model | volume fraction of frozen soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | -!! | tslb | soil_temperature_for_land_surface_model | soil temperature for land surface model | K | 2 | real | kind_phys | inout | F | -!! | stm | soil_moisture_content | soil moisture content | kg m-2 | 1 | real | kind_phys | inout | F | -!! | tskin | surface_skin_temperature_over_land_interstitial | surface skin temperature over land use as interstitial | K | 1 | real | kind_phys | inout | F | -!! | tsurf | surface_skin_temperature_after_iteration_over_land | surface skin temperature after iteration over land | K | 1 | real | kind_phys | inout | F | -!! | tice | sea_ice_temperature_interstitial | sea ice surface skin temperature use as interstitial | K | 1 | real | kind_phys | inout | F | -!! | tsnow | snow_temperature_bottom_first_layer | snow temperature at the bottom of first snow layer | K | 1 | real | kind_phys | inout | F | -!! | snowfallac | total_accumulated_snowfall | run-total snow accumulation on the ground | kg m-2 | 1 | real | kind_phys | inout | F | -!! | acsnow | accumulated_water_equivalent_of_frozen_precip | snow water equivalent of run-total frozen precip | kg m-2 | 1 | real | kind_phys | inout | F | -!! | evap | kinematic_surface_upward_latent_heat_flux_over_land | kinematic surface upward evaporation flux over land | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | -!! | hflx | kinematic_surface_upward_sensible_heat_flux_over_land | kinematic surface upward sensible heat flux over land | K m s-1 | 1 | real | kind_phys | out | F | -!! | evbs | soil_upward_latent_heat_flux | soil upward latent heat flux | W m-2 | 1 | real | kind_phys | out | F | -!! | evcw | canopy_upward_latent_heat_flux | canopy upward latent heat flux | W m-2 | 1 | real | kind_phys | out | F | -!! | sbsno | snow_deposition_sublimation_upward_latent_heat_flux | latent heat flux from snow depo/subl | W m-2 | 1 | real | kind_phys | out | F | -!! | trans | transpiration_flux | total plant transpiration rate | kg m-2 s-1 | 1 | real | kind_phys | out | F | -!! | runof | surface_runoff_flux | surface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | -!! | drain | subsurface_runoff_flux | subsurface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | -!! | runoff | total_runoff | total water runoff | kg m-2 | 1 | real | kind_phys | inout | F | -!! | srunoff | surface_runoff | surface water runoff (from lsm) | kg m-2 | 1 | real | kind_phys | inout | F | -!! | gflux | upward_heat_flux_in_soil_over_land | soil heat flux over land | W m-2 | 1 | real | kind_phys | out | F | -!! | shdmin | minimum_vegetation_area_fraction | min fractional coverage of green vegetation | frac | 1 | real | kind_phys | in | F | -!! | shdmax | maximum_vegetation_area_fraction | max fractional coverage of green vegetation | frac | 1 | real | kind_phys | in | F | -!! | flag_iter | flag_for_iteration | flag for iteration | flag | 1 | logical | | in | F | -!! | flag_guess | flag_for_guess_run | flag for guess run | flag | 1 | logical | | in | F | -!! | flag_init | flag_for_first_time_step | flag signaling first time step for time integration loop | flag | 0 | logical | | in | F | -!! | flag_restart | flag_for_restart | flag for restart (warmstart) or coldstart | flag | 0 | logical | | in | F | -!! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | -!! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | +!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | +!! |----------------------|------------------------------------------------------------------------------|-----------------------------------------------------------------|---------------|------|-----------|-----------|--------|----------| +!! | delt | time_step_for_dynamics | physics time step | s | 0 | real | kind_phys | in | F | +!! | me | mpi_rank | current MPI-rank | index | 0 | integer | | in | F | +!! | kdt | index_of_time_step | current number of time steps | index | 0 | integer | | in | F | +!! | iter | ccpp_loop_counter | loop counter for subcycling loops in CCPP | index | 0 | integer | | in | F | +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | +!! | nlev | vertical_dimension | number of vertical levels | count | 0 | integer | | in | F | +!! | lsm_ruc | flag_for_ruc_land_surface_scheme | flag for RUC land surface model | flag | 0 | integer | | in | F | +!! | lsm | flag_for_land_surface_scheme | flag for land surface model | flag | 0 | integer | | in | F | +!! | imp_physics | flag_for_microphysics_scheme | choice of microphysics scheme | flag | 0 | integer | | in | F | +!! | imp_physics_gfdl | flag_for_gfdl_microphysics_scheme | choice of GFDL microphysics scheme | flag | 0 | integer | | in | F | +!! | imp_physics_thompson | flag_for_thompson_microphysics_scheme | choice of Thompson microphysics scheme | flag | 0 | integer | | in | F | +!! | do_mynnsfclay | do_mynnsfclay | flag to activate MYNN surface layer | flag | 0 | logical | | in | F | +!! | lsoil_ruc | soil_vertical_dimension_for_land_surface_model | number of soil layers internal to land surface model | count | 0 | integer | | in | F | +!! | lsoil | soil_vertical_dimension | soil vertical layer dimension | count | 0 | integer | | in | F | +!! | zs | depth_of_soil_levels_for_land_surface_model | depth of soil levels for land surface model | m | 1 | real | kind_phys | inout | F | +!! | islmsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!! | con_cp | specific_heat_of_dry_air_at_constant_pressure | specific heat !of dry air at constant pressure | J kg-1 K-1 | 0 | real | kind_phys | in | F | +!! | con_g | gravitational_acceleration | gravitational acceleration | m s-2 | 0 | real | kind_phys | in | F | +!! | con_pi | pi | ratio of a circle's circumference to its diameter | radians | 0 | real | kind_phys | in | F | +!! | con_rd | gas_constant_dry_air | ideal gas constant for dry air | J kg-1 K-1 | 0 | real | kind_phys | in | F | +!! | con_rv | gas_constant_water_vapor | ideal gas constant for water vapor | J kg-1 K-1 | 0 | real | kind_phys | in | F | +!! | con_hvap | latent_heat_of_vaporization_of_water_at_0C | latent heat of vaporization/sublimation (hvap) | J kg-1 | 0 | real | kind_phys | in | F | +!! | con_fvirt | ratio_of_vapor_to_dry_air_gas_constants_minus_one | rv/rd - 1 (rv = ideal gas constant for water vapor) | none | 0 | real | kind_phys | in | F | +!! | land | flag_nonzero_land_surface_fraction | flag indicating presence of some land surface area fraction | flag | 1 | logical | | in | F | +!! | rainnc | lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep | explicit rainfall from previous timestep | m | 1 | real | kind_phys | in | F | +!! | rainc | lwe_thickness_of_convective_precipitation_amount_from_previous_timestep | convective_precipitation_amount from previous timestep | m | 1 | real | kind_phys | in | F | +!! | ice | lwe_thickness_of_ice_amount_from_previous_timestep | ice amount from previous timestep | m | 1 | real | kind_phys | in | F | +!! | snow | lwe_thickness_of_snow_amount_from_previous_timestep | snow amount from previous timestep | m | 1 | real | kind_phys | in | F | +!! | graupel | lwe_thickness_of_graupel_amount_from_previous_timestep | graupel amount from previous timestep | m | 1 | real | kind_phys | in | F | +!! | srflag | flag_for_precipitation_type | snow/rain flag for precipitation | flag | 1 | real | kind_phys | in | F | +!! | sncovr1 | surface_snow_area_fraction_over_land | surface snow area fraction | frac | 1 | real | kind_phys | inout | F | +!! | weasd | water_equivalent_accumulated_snow_depth_over_land | water equiv of acc snow depth over land | mm | 1 | real | kind_phys | inout | F | +!! | snwdph | surface_snow_thickness_water_equivalent_over_land | water equivalent snow depth over land | mm | 1 | real | kind_phys | inout | F | +!! | rhosnf | density_of_frozen_precipitation | density of frozen precipitation | kg m-3 | 1 | real | kind_phys | out | F | +!! | zf | height_above_ground_at_lowest_model_layer | layer 1 height above ground (not MSL) | m | 1 | real | kind_phys | in | F | +!! | u1 | x_wind_at_lowest_model_layer | zonal wind at lowest model layer | m s-1 | 1 | real | kind_phys | in | F | +!! | v1 | y_wind_at_lowest_model_layer | meridional wind at lowest model layer | m s-1 | 1 | real | kind_phys | in | F | +!! | prsl1 | air_pressure_at_lowest_model_layer | mean pressure at lowest model layer | Pa | 1 | real | kind_phys | in | F | +!! | ddvel | surface_wind_enhancement_due_to_convection | surface wind enhancement due to convection | m s-1 | 1 | real | kind_phys | in | F | +!! | t1 | air_temperature_at_lowest_model_layer | mean temperature at lowest model layer | K | 1 | real | kind_phys | in | F | +!! | q1 | water_vapor_specific_humidity_at_lowest_model_layer | water vapor specific humidity at lowest model layer | kg kg-1 | 1 | real | kind_phys | in | F | +!! | qc | cloud_condensed_water_mixing_ratio_at_lowest_model_layer | moist (dry+vapor, no condensates) mixing ratio of cloud water at lowest model layer | kg kg-1 | 1 | real | kind_phys | in | F | +!! | dlwflx | surface_downwelling_longwave_flux | surface downwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | +!! | dswsfc | surface_downwelling_shortwave_flux | surface downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | +!! | snet | surface_net_downwelling_shortwave_flux | surface net downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | +!! | sfcemis | surface_longwave_emissivity | surface lw emissivity in fraction | frac | 1 | real | kind_phys | inout | F | +!! | wspd | wind_speed_at_lowest_model_layer | wind speed at lowest model level | m s-1 | 1 | real | kind_phys | inout | F | +!! | cm | surface_drag_coefficient_for_momentum_in_air_over_land | surface exchange coeff for momentum over land | none | 1 | real | kind_phys | in | F | +!! | ch | surface_drag_coefficient_for_heat_and_moisture_in_air_over_land | surface exchange coeff heat & moisture over land | none | 1 | real | kind_phys | in | F | +!! | chh | surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land | thermal exchange coefficient over land | kg m-2 s-1 | 1 | real | kind_phys | inout | F | +!! | cmm | surface_drag_wind_speed_for_momentum_in_air_over_land | momentum exchange coefficient over land | m s-1 | 1 | real | kind_phys | inout | F | +!! | wetness | normalized_soil_wetness_for_land_surface_model | normalized soil wetness | frac | 1 | real | kind_phys | inout | F | +!! | canopy | canopy_water_amount | canopy water amount | kg m-2 | 1 | real | kind_phys | inout | F | +!! | sigmaf | vegetation_area_fraction | areal fractional cover of green vegetation | frac | 1 | real | kind_phys | in | F | +!! | sfalb | surface_diffused_shortwave_albedo | mean surface diffused sw albedo | frac | 1 | real | kind_phys | inout | F | +!! | alvwf | mean_vis_albedo_with_weak_cosz_dependency | mean vis albedo with weak cosz dependency | frac | 1 | real | kind_phys | in | F | +!! | alnwf | mean_nir_albedo_with_weak_cosz_dependency | mean nir albedo with weak cosz dependency | frac | 1 | real | kind_phys | in | F | +!! | snoalb | upper_bound_on_max_albedo_over_deep_snow | maximum snow albedo | frac | 1 | real | kind_phys | in | F | +!! | zorl | surface_roughness_length_over_land_interstitial | surface roughness length over land (temporary use as interstitial)| cm | 1 | real | kind_phys | inout | F | +!! | qsurf | surface_specific_humidity_over_land | surface air saturation specific humidity over land | kg kg-1 | 1 | real | kind_phys | inout | F | +!! | sfcqc | cloud_condensed_water_mixing_ratio_at_surface | moist cloud water mixing ratio at surface | kg kg-1 | 1 | real | kind_phys | inout | F | +!! | sfcqv | water_vapor_mixing_ratio_at_surface | water vapor mixing ratio at surface | kg kg-1 | 1 | real | kind_phys | inout | F | +!! | sfcdew | surface_condensation_mass | surface condensation mass | kg m-2 | 1 | real | kind_phys | inout | F | +!! | tg3 | deep_soil_temperature | deep soil temperature | K | 1 | real | kind_phys | in | F | +!! | smc | volume_fraction_of_soil_moisture | total soil moisture | frac | 2 | real | kind_phys | inout | F | +!! | slc | volume_fraction_of_unfrozen_soil_moisture | liquid soil moisture | frac | 2 | real | kind_phys | inout | F | +!! | stc | soil_temperature | soil temperature | K | 2 | real | kind_phys | inout | F | +!! | smcwlt2 | volume_fraction_of_condensed_water_in_soil_at_wilting_point | soil water fraction at wilting point | frac | 1 | real | kind_phys | inout | F | +!! | smcref2 | threshold_volume_fraction_of_condensed_water_in_soil | soil moisture threshold | frac | 1 | real | kind_phys | inout | F | +!! | vegtype | vegetation_type_classification | vegetation type at each grid cell | index | 1 | integer | | in | F | +!! | soiltyp | soil_type_classification | soil type at each grid cell | index | 1 | integer | | in | F | +!! | isot | soil_type_dataset_choice | soil type dataset choice | index | 0 | integer | | in | F | +!! | ivegsrc | vegetation_type_dataset_choice | land use dataset choice | index | 0 | integer | | in | F | +!! | fice | sea_ice_concentration | ice fraction over open water | frac | 1 | real | kind_phys | in | F | +!! | keepfr | flag_for_frozen_soil_physics | flag for frozen soil physics (RUC) | flag | 2 | real | kind_phys | inout | F | +!! | smois | volume_fraction_of_soil_moisture_for_land_surface_model | volumetric fraction of soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | +!! | sh2o | volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model | volume fraction of unfrozen soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | +!! | smfrkeep | volume_fraction_of_frozen_soil_moisture_for_land_surface_model | volume fraction of frozen soil moisture for lsm | frac | 2 | real | kind_phys | inout | F | +!! | tslb | soil_temperature_for_land_surface_model | soil temperature for land surface model | K | 2 | real | kind_phys | inout | F | +!! | stm | soil_moisture_content | soil moisture content | kg m-2 | 1 | real | kind_phys | inout | F | +!! | tskin | surface_skin_temperature_over_land_interstitial | surface skin temperature over land use as interstitial | K | 1 | real | kind_phys | inout | F | +!! | tsurf | surface_skin_temperature_after_iteration_over_land | surface skin temperature after iteration over land | K | 1 | real | kind_phys | inout | F | +!! | tice | sea_ice_temperature_interstitial | sea ice surface skin temperature use as interstitial | K | 1 | real | kind_phys | inout | F | +!! | tsnow | snow_temperature_bottom_first_layer | snow temperature at the bottom of first snow layer | K | 1 | real | kind_phys | inout | F | +!! | snowfallac | total_accumulated_snowfall | run-total snow accumulation on the ground | kg m-2 | 1 | real | kind_phys | inout | F | +!! | acsnow | accumulated_water_equivalent_of_frozen_precip | snow water equivalent of run-total frozen precip | kg m-2 | 1 | real | kind_phys | inout | F | +!! | evap | kinematic_surface_upward_latent_heat_flux_over_land | kinematic surface upward evaporation flux over land | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | +!! | hflx | kinematic_surface_upward_sensible_heat_flux_over_land | kinematic surface upward sensible heat flux over land | K m s-1 | 1 | real | kind_phys | out | F | +!! | evbs | soil_upward_latent_heat_flux | soil upward latent heat flux | W m-2 | 1 | real | kind_phys | out | F | +!! | evcw | canopy_upward_latent_heat_flux | canopy upward latent heat flux | W m-2 | 1 | real | kind_phys | out | F | +!! | sbsno | snow_deposition_sublimation_upward_latent_heat_flux | latent heat flux from snow depo/subl | W m-2 | 1 | real | kind_phys | out | F | +!! | trans | transpiration_flux | total plant transpiration rate | kg m-2 s-1 | 1 | real | kind_phys | out | F | +!! | runof | surface_runoff_flux | surface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | +!! | drain | subsurface_runoff_flux | subsurface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | +!! | runoff | total_runoff | total water runoff | kg m-2 | 1 | real | kind_phys | inout | F | +!! | srunoff | surface_runoff | surface water runoff (from lsm) | kg m-2 | 1 | real | kind_phys | inout | F | +!! | gflux | upward_heat_flux_in_soil_over_land | soil heat flux over land | W m-2 | 1 | real | kind_phys | out | F | +!! | shdmin | minimum_vegetation_area_fraction | min fractional coverage of green vegetation | frac | 1 | real | kind_phys | in | F | +!! | shdmax | maximum_vegetation_area_fraction | max fractional coverage of green vegetation | frac | 1 | real | kind_phys | in | F | +!! | flag_iter | flag_for_iteration | flag for iteration | flag | 1 | logical | | in | F | +!! | flag_guess | flag_for_guess_run | flag for guess run | flag | 1 | logical | | in | F | +!! | flag_init | flag_for_first_time_step | flag signaling first time step for time integration loop | flag | 0 | logical | | in | F | +!! | flag_restart | flag_for_restart | flag for restart (warmstart) or coldstart | flag | 0 | logical | | in | F | +!! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F | +!! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F | !! #endif !>\section gen_lsmruc GSD RUC LSM General Algorithm - subroutine lsm_ruc_run & ! --- inputs +! DH* TODO - make order of arguments the same as in the metadata table + subroutine lsm_ruc_run & ! inputs & ( iter, me, kdt, im, nlev, lsoil_ruc, lsoil, zs, & & u1, v1, t1, q1, qc, soiltyp, vegtype, sigmaf, & & sfcemis, dlwflx, dswsfc, snet, delt, tg3, cm, ch, & & prsl1, zf, islmsk, ddvel, shdmin, shdmax, alvwf, alnwf, & & snoalb, sfalb, flag_iter, flag_guess, isot, ivegsrc, fice, & & smc, stc, slc, lsm_ruc, lsm, land, & + & imp_physics, imp_physics_gfdl, imp_physics_thompson, & & smcwlt2, smcref2, wspd, do_mynnsfclay, & - & con_cp, con_rv, con_rd, con_g, con_pi, con_hvap, con_fvirt,& ! constants - & weasd, snwdph, tskin, & ! in/outs + & con_cp, con_rv, con_rd, con_g, con_pi, con_hvap, con_fvirt,& ! constants + & weasd, snwdph, tskin, & ! in/outs & rainnc, rainc, ice, snow, graupel, & ! in - & srflag, sr, & ! in/outs - & smois, tslb, sh2o, keepfr, smfrkeep, & ! on RUC levels + & srflag, smois, tslb, sh2o, keepfr, smfrkeep, & ! in/outs, on RUC levels & canopy, trans, tsurf, tsnow, zorl, & & sfcqc, sfcdew, tice, sfcqv, & - & sncovr1, qsurf, gflux, drain, evap, hflx, & ! --- outputs + & sncovr1, qsurf, gflux, drain, evap, hflx, & ! outputs & rhosnf, runof, runoff, srunoff, & - & chh, cmm, evbs, evcw, sbsno, stm, wet1, & + & chh, cmm, evbs, evcw, sbsno, stm, wetness, & & acsnow, snowfallac, & & flag_init, flag_restart, errmsg, errflg & & ) @@ -282,6 +286,7 @@ subroutine lsm_ruc_run & ! --- inpu integer, intent(in) :: me integer, intent(in) :: im, nlev, iter, lsoil_ruc, lsoil, kdt, isot, ivegsrc integer, intent(in) :: lsm_ruc, lsm + integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson real (kind=kind_phys), dimension(im,lsoil), intent(inout) :: smc,stc,slc @@ -305,7 +310,7 @@ subroutine lsm_ruc_run & ! --- inpu real (kind=kind_phys), dimension(lsoil_ruc), intent(inout ) :: zs real (kind=kind_phys), dimension(im), intent(inout) :: weasd, & & snwdph, tskin, & - & srflag, sr, canopy, trans, tsurf, zorl, tsnow, & + & srflag, canopy, trans, tsurf, zorl, tsnow, & & sfcqc, sfcqv, sfcdew, fice, tice, sfalb, smcwlt2, smcref2 ! --- in real (kind=kind_phys), dimension(im), intent(in) :: & @@ -319,7 +324,7 @@ subroutine lsm_ruc_run & ! --- inpu real (kind=kind_phys), dimension(im), intent(inout) :: sncovr1, & & qsurf , gflux , evap , runof , drain , & & runoff, srunoff, hflx, cmm, chh, & - & rhosnf, evbs, evcw, sbsno, stm, wet1, & + & rhosnf, evbs, evcw, sbsno, stm, wetness, & & acsnow, snowfallac logical, intent(in) :: flag_init, flag_restart @@ -329,9 +334,9 @@ subroutine lsm_ruc_run & ! --- inpu ! --- locals: real (kind=kind_phys), dimension(im) :: rch, rho, & & q0, qs1, wind, weasd_old, snwdph_old, & - & tprcp_old, srflag_old, sr_old, tskin_old, canopy_old, & + & tprcp_old, srflag_old, tskin_old, canopy_old, & & tsnow_old, snowfallac_old, acsnow_old, sfalb_old, & - & sfcqv_old, sfcqc_old, wet1_old, zorl_old, sncovr1_old + & sfcqv_old, sfcqc_old, wetness_old, zorl_old, sncovr1_old real (kind=kind_phys), dimension(lsoil_ruc) :: et @@ -426,7 +431,7 @@ subroutine lsm_ruc_run & ! --- inpu smc, slc, stc, & ! in smcref2, smcwlt2, & ! inout lsm_ruc, lsm, & ! in - zs, sh2o, smfrkeep, tslb, smois, wet1, & ! out + zs, sh2o, smfrkeep, tslb, smois, wetness, & ! out errmsg, errflg) !do i = 1, im ! n - horizontal loop @@ -514,14 +519,13 @@ subroutine lsm_ruc_run & ! --- inpu canopy_old(i) = canopy(i) !tprcp_old(i) = tprcp(i) srflag_old(i) = srflag(i) - sr_old(i) = sr(i) tsnow_old(i) = tsnow(i) snowfallac_old(i) = snowfallac(i) acsnow_old(i) = acsnow(i) sfalb_old(i) = sfalb(i) sfcqv_old(i) = sfcqv(i) sfcqc_old(i) = sfcqc(i) - wet1_old(i) = wet1(i) + wetness_old(i) = wetness(i) zorl_old(i) = zorl(i) sncovr1_old(i) = sncovr1(i) do k = 1, lsoil_ruc @@ -606,22 +610,23 @@ subroutine lsm_ruc_run & ! --- inpu !!\n \a lsoil_ruc - number of soil layers (= 6 or 9) !!\n \a zs - the depth of each soil level (\f$m\f$) - ! DH* TODO - TEST FOR DIFFERENT PHYSICS AND SET ACCORDINGLY? - frpcpn = .true. ! .true. if mixed phase precipitation available (Thompson) + ! Set flag for mixed phase precipitation depending on microphysics scheme. + ! For GFDL and Thompson, srflag is fraction of frozen precip for convective+explicit precip. + if (imp_physics==imp_physics_gfdl .or. imp_physics==imp_physics_thompson) then + frpcpn = .true. + else + frpcpn = .false. + endif do j = 1, 1 ! 1:1 do i = 1, im ! i - horizontal loop if (flag_iter(i) .and. flag(i)) then - if(.not.frpcpn) then ! no mixed-phase precipitation available - if (srflag(i) == 1.0) then ! snow phase - ffrozp(i,j) = 1.0 - elseif (srflag(i) == 0.0) then ! rain phase - ffrozp(i,j) = 0.0 - endif - else ! mixed-phase precipitation is available - ffrozp(i,j) = sr(i) - endif ! frpcpn + if (frpcpn) then + ffrozp(i,j) = srflag(i) + else + ffrozp(i,j) = real(nint(srflag(i)),kind_phys) + endif !tgs - for now set rdlai2d to .false., WRF has LAI maps, and RUC LSM ! uses rdlai2d = .true. @@ -777,8 +782,8 @@ subroutine lsm_ruc_run & ! --- inpu if(stype(i,j) .ne. 14) then ! land - if (wet1(i) > 0.) then - wet(i,j) = wet1(i) + if (wetness(i) > 0.) then + wet(i,j) = wetness(i) else wet(i,j) = max(0.0001,smsoil(i,1,j)/0.3) endif @@ -1034,7 +1039,7 @@ subroutine lsm_ruc_run & ! --- inpu runof (i) = runoff1(i,j) drain (i) = runoff2(i,j) - wet1(i) = wet(i,j) + wetness(i) = wet(i,j) ! State variables tsnow(i) = soilt1(i,j) @@ -1111,7 +1116,7 @@ subroutine lsm_ruc_run & ! --- inpu sfalb(i) = sfalb_old(i) sfcqv(i) = sfcqv_old(i) sfcqc(i) = sfcqc_old(i) - wet1(i) = wet1_old(i) + wetness(i) = wetness_old(i) zorl(i) = zorl_old(i) sncovr1(i) = sncovr1_old(i) do k = 1, lsoil_ruc @@ -1157,8 +1162,8 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in smc, slc, stc, & ! in smcref2, smcwlt2, & ! inout lsm_ruc, lsm, & ! in - zs, sh2o, smfrkeep, tslb, smois, wet1, & ! out - errmsg, errflg) + zs, sh2o, smfrkeep, tslb, smois, & ! out + wetness, errmsg, errflg) implicit none @@ -1180,7 +1185,7 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in integer, dimension(im), intent(inout) :: soiltyp integer, dimension(im), intent(inout) :: vegtype - real (kind=kind_phys), dimension(im), intent(inout) :: wet1 + real (kind=kind_phys), dimension(im), intent(inout) :: wetness real (kind=kind_phys), dimension(im), intent(inout) :: fice real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout) :: smois! ruc real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout) :: tslb ! ruc @@ -1502,7 +1507,7 @@ subroutine rucinit (restart, im, lsoil_ruc, lsoil, nlev, & ! in do j=jts,jte do i=its,ite - wet1(i) = mavail(i,j) + wetness(i) = mavail(i,j) do k = 1, lsoil_ruc smois(i,k) = soilm(i,k,j) tslb(i,k) = soiltemp(i,k,j) diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f index 1e2eeb3e0..5246411e2 100644 --- a/physics/sfc_nst.f +++ b/physics/sfc_nst.f @@ -21,7 +21,7 @@ end subroutine sfc_nst_init subroutine sfc_nst_finalize end subroutine sfc_nst_finalize -!>\defgroup gfs_nst_main GFS sfc_nst Main +!>\defgroup gfs_nst_main GFS Near-Surface Sea Temperature Scheme Module !> \brief This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile. !! \section arg_table_sfc_nst_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f index 58f1c0549..fbc14587a 100644 --- a/physics/sfc_sice.f +++ b/physics/sfc_sice.f @@ -12,7 +12,7 @@ end subroutine sfc_sice_init subroutine sfc_sice_finalize end subroutine sfc_sice_finalize -!>\defgroup gfs_sice_main GFS sfc_sice Main +!>\defgroup gfs_sice_main GFS Three-layer Thermodynomics Sea-Ice Scheme Module !! \brief This is three-layer thermodynomics sea-ice model based on Winton (2000) \cite winton_2000. !! \section arg_table_sfc_sice_run Argument Table !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | diff --git a/physics/sfcsub.F b/physics/sfcsub.F index 7c78707f5..7039884f8 100644 --- a/physics/sfcsub.F +++ b/physics/sfcsub.F @@ -2,10 +2,9 @@ !! This file contains gribcode for each parameter. -!>\defgroup mod_sfcsub_mod GFS sfcsub Module +!>\defgroup mod_sfcsub GFS sfcsub Module !!\ingroup Noah_LSM !> @{ -!>\ingroup mod_sfcsub !! This module contains grib code for each parameter-used in subroutines sfccycle() !! and setrmsk(). module sfccyc_module @@ -39,18 +38,37 @@ module sfccyc_module ! end module sfccyc_module -!>\ingroup mod_sfcsub - subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc - &, iy,im,id,ih,fh - &, rla, rlo, slmask,orog,orog_uf,use_ufo,nst_anl - &, sihfcs,sicfcs,sitfcs - &, swdfcs,slcfcs - &, vmnfcs,vmxfcs,slpfcs,absfcs - &, tsffcs,snofcs,zorfcs,albfcs,tg3fcs - &, cnpfcs,smcfcs,stcfcs,slifcs,aisfcs - &, vegfcs,vetfcs,sotfcs,alffcs - &, cvfcs,cvbfcs,cvtfcs,me,nlunit - &, sz_nml,input_nml_file +!>\ingroup mod_GFS_phys_time_vary +!! This subroutine reads or interpolates surface climatology data in analysis +!! and forecast mode. +!!\param lugb the unit number used in this subprogram +!!\param len number of points on which sfccyc operates +!!\param lsoil number of soil layers +!!\param sig1t sigma level 1 temperature for dead start. it should be on gaussian +!! grid. If not dead start, no need for dimension but set to zero as +!! in the example below. +!!\param deltsfc = fhcyc, frequcy for surface data cycling in hours +!!\param iy,im,id,ih year, month, day, and hour of initial state +!!\param fh forecast hour +!!\param rla, rlo latitude and longitudes of the len points +!!\param slmsk +!!\param orog +!!\param orog_uf +!!\param use_ufo +!!\param nst_anl +!! + + subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc & + &, iy,im,id,ih,fh & + &, rla, rlo, slmask,orog,orog_uf,use_ufo,nst_anl & + &, sihfcs,sicfcs,sitfcs & + &, swdfcs,slcfcs & + &, vmnfcs,vmxfcs,slpfcs,absfcs & + &, tsffcs,snofcs,zorfcs,albfcs,tg3fcs & + &, cnpfcs,smcfcs,stcfcs,slifcs,aisfcs & + &, vegfcs,vetfcs,sotfcs,alffcs & + &, cvfcs,cvbfcs,cvtfcs,me,nlunit & + &, sz_nml,input_nml_file & &, ialb,isot,ivegsrc,tile_num_ch,i_index,j_index) ! use machine , only : kind_io8,kind_io4 @@ -59,90 +77,90 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc character(len=*), intent(in) :: tile_num_ch integer,intent(in) :: i_index(len), j_index(len) logical use_ufo, nst_anl - real (kind=kind_io8) sllnd,slsea,aicice,aicsea,tgice,rlapse, - & orolmx,orolmn,oroomx,oroomn,orosmx, - & orosmn,oroimx,oroimn,orojmx,orojmn, - & alblmx,alblmn,albomx,albomn,albsmx, - & albsmn,albimx,albimn,albjmx,albjmn, - & wetlmx,wetlmn,wetomx,wetomn,wetsmx, - & wetsmn,wetimx,wetimn,wetjmx,wetjmn, - & snolmx,snolmn,snoomx,snoomn,snosmx, - & snosmn,snoimx,snoimn,snojmx,snojmn, - & zorlmx,zorlmn,zoromx,zoromn,zorsmx, - & zorsmn,zorimx,zorimn,zorjmx, zorjmn, - & plrlmx,plrlmn,plromx,plromn,plrsmx, - & plrsmn,plrimx,plrimn,plrjmx,plrjmn, - & tsflmx,tsflmn,tsfomx,tsfomn,tsfsmx, - & tsfsmn,tsfimx,tsfimn,tsfjmx,tsfjmn, - & tg3lmx,tg3lmn,tg3omx,tg3omn,tg3smx, - & tg3smn,tg3imx,tg3imn,tg3jmx,tg3jmn, - & stclmx,stclmn,stcomx,stcomn,stcsmx, - & stcsmn,stcimx,stcimn,stcjmx,stcjmn, - & smclmx,smclmn,smcomx,smcomn,smcsmx, - & smcsmn,smcimx,smcimn,smcjmx,smcjmn, - & scvlmx,scvlmn,scvomx,scvomn,scvsmx, - & scvsmn,scvimx,scvimn,scvjmx,scvjmn, - & veglmx,veglmn,vegomx,vegomn,vegsmx, - & vegsmn,vegimx,vegimn,vegjmx,vegjmn, - & vetlmx,vetlmn,vetomx,vetomn,vetsmx, - & vetsmn,vetimx,vetimn,vetjmx,vetjmn, - & sotlmx,sotlmn,sotomx,sotomn,sotsmx, - & sotsmn,sotimx,sotimn,sotjmx,sotjmn, - & alslmx,alslmn,alsomx,alsomn,alssmx, - & alssmn,alsimx,alsimn,alsjmx,alsjmn, - & epstsf,epsalb,epssno,epswet,epszor, - & epsplr,epsoro,epssmc,epsscv,eptsfc, - & epstg3,epsais,epsacn,epsveg,epsvet, - & epssot,epsalf,qctsfs,qcsnos,qctsfi, - & aislim,snwmin,snwmax,cplrl,cplrs, - & cvegl,czors,csnol,csnos,czorl,csots, - & csotl,cvwgs,cvetl,cvets,calfs, - & fcalfl,fcalfs,ccvt,ccnp,ccv,ccvb, - & calbl,calfl,calbs,ctsfs,grboro, - & grbmsk,ctsfl,deltf,caisl,caiss, - & fsalfl,fsalfs,flalfs,falbl,ftsfl, - & ftsfs,fzorl,fzors,fplrl,fsnos,faisl, - & faiss,fsnol,bltmsk,falbs,cvegs,percrit, - & deltsfc,critp2,critp3,blnmsk,critp1, - & fcplrl,fcplrs,fczors,fvets,fsotl,fsots, - & fvetl,fplrs,fvegl,fvegs,fcsnol,fcsnos, - & fczorl,fcalbs,fctsfl,fctsfs,fcalbl, - & falfs,falfl,fh,crit,zsca,ztsfc,tem1,tem2 - &, fsihl,fsihs,fsicl,fsics, - & csihl,csihs,csicl,csics,epssih,epssic - &, fvmnl,fvmns,fvmxl,fvmxs,fslpl,fslps, - & fabsl,fabss,cvmnl,cvmns,cvmxl,cvmxs, - & cslpl,cslps,cabsl,cabss,epsvmn,epsvmx, - & epsslp,epsabs - &, sihlmx,sihlmn,sihomx,sihomn,sihsmx, - & sihsmn,sihimx,sihimn,sihjmx,sihjmn, - & siclmx,siclmn,sicomx,sicomn,sicsmx, - & sicsmn,sicimx,sicimn,sicjmx,sicjmn - &, glacir_hice - &, vmnlmx,vmnlmn,vmnomx,vmnomn,vmnsmx, - & vmnsmn,vmnimx,vmnimn,vmnjmx,vmnjmn, - & vmxlmx,vmxlmn,vmxomx,vmxomn,vmxsmx, - & vmxsmn,vmximx,vmximn,vmxjmx,vmxjmn, - & slplmx,slplmn,slpomx,slpomn,slpsmx, - & slpsmn,slpimx,slpimn,slpjmx,slpjmn, - & abslmx,abslmn,absomx,absomn,abssmx, - & abssmn,absimx,absimn,absjmx,absjmn + real (kind=kind_io8) sllnd,slsea,aicice,aicsea,tgice,rlapse, & + & orolmx,orolmn,oroomx,oroomn,orosmx, & + & orosmn,oroimx,oroimn,orojmx,orojmn, & + & alblmx,alblmn,albomx,albomn,albsmx, & + & albsmn,albimx,albimn,albjmx,albjmn, & + & wetlmx,wetlmn,wetomx,wetomn,wetsmx, & + & wetsmn,wetimx,wetimn,wetjmx,wetjmn, & + & snolmx,snolmn,snoomx,snoomn,snosmx, & + & snosmn,snoimx,snoimn,snojmx,snojmn, & + & zorlmx,zorlmn,zoromx,zoromn,zorsmx, & + & zorsmn,zorimx,zorimn,zorjmx, zorjmn, & + & plrlmx,plrlmn,plromx,plromn,plrsmx, & + & plrsmn,plrimx,plrimn,plrjmx,plrjmn, & + & tsflmx,tsflmn,tsfomx,tsfomn,tsfsmx, & + & tsfsmn,tsfimx,tsfimn,tsfjmx,tsfjmn, & + & tg3lmx,tg3lmn,tg3omx,tg3omn,tg3smx, & + & tg3smn,tg3imx,tg3imn,tg3jmx,tg3jmn, & + & stclmx,stclmn,stcomx,stcomn,stcsmx, & + & stcsmn,stcimx,stcimn,stcjmx,stcjmn, & + & smclmx,smclmn,smcomx,smcomn,smcsmx, & + & smcsmn,smcimx,smcimn,smcjmx,smcjmn, & + & scvlmx,scvlmn,scvomx,scvomn,scvsmx, & + & scvsmn,scvimx,scvimn,scvjmx,scvjmn, & + & veglmx,veglmn,vegomx,vegomn,vegsmx, & + & vegsmn,vegimx,vegimn,vegjmx,vegjmn, & + & vetlmx,vetlmn,vetomx,vetomn,vetsmx, & + & vetsmn,vetimx,vetimn,vetjmx,vetjmn, & + & sotlmx,sotlmn,sotomx,sotomn,sotsmx, & + & sotsmn,sotimx,sotimn,sotjmx,sotjmn, & + & alslmx,alslmn,alsomx,alsomn,alssmx, & + & alssmn,alsimx,alsimn,alsjmx,alsjmn, & + & epstsf,epsalb,epssno,epswet,epszor, & + & epsplr,epsoro,epssmc,epsscv,eptsfc, & + & epstg3,epsais,epsacn,epsveg,epsvet, & + & epssot,epsalf,qctsfs,qcsnos,qctsfi, & + & aislim,snwmin,snwmax,cplrl,cplrs, & + & cvegl,czors,csnol,csnos,czorl,csots, & + & csotl,cvwgs,cvetl,cvets,calfs, & + & fcalfl,fcalfs,ccvt,ccnp,ccv,ccvb, & + & calbl,calfl,calbs,ctsfs,grboro, & + & grbmsk,ctsfl,deltf,caisl,caiss, & + & fsalfl,fsalfs,flalfs,falbl,ftsfl, & + & ftsfs,fzorl,fzors,fplrl,fsnos,faisl, & + & faiss,fsnol,bltmsk,falbs,cvegs,percrit, & + & deltsfc,critp2,critp3,blnmsk,critp1, & + & fcplrl,fcplrs,fczors,fvets,fsotl,fsots, & + & fvetl,fplrs,fvegl,fvegs,fcsnol,fcsnos, & + & fczorl,fcalbs,fctsfl,fctsfs,fcalbl, & + & falfs,falfl,fh,crit,zsca,ztsfc,tem1,tem2 & + &, fsihl,fsihs,fsicl,fsics, & + & csihl,csihs,csicl,csics,epssih,epssic & + &, fvmnl,fvmns,fvmxl,fvmxs,fslpl,fslps, & + & fabsl,fabss,cvmnl,cvmns,cvmxl,cvmxs, & + & cslpl,cslps,cabsl,cabss,epsvmn,epsvmx, & + & epsslp,epsabs & + &, sihlmx,sihlmn,sihomx,sihomn,sihsmx, & + & sihsmn,sihimx,sihimn,sihjmx,sihjmn, & + & siclmx,siclmn,sicomx,sicomn,sicsmx, & + & sicsmn,sicimx,sicimn,sicjmx,sicjmn & + &, glacir_hice & + &, vmnlmx,vmnlmn,vmnomx,vmnomn,vmnsmx, & + & vmnsmn,vmnimx,vmnimn,vmnjmx,vmnjmn, & + & vmxlmx,vmxlmn,vmxomx,vmxomn,vmxsmx, & + & vmxsmn,vmximx,vmximn,vmxjmx,vmxjmn, & + & slplmx,slplmn,slpomx,slpomn,slpsmx, & + & slpsmn,slpimx,slpimn,slpjmx,slpjmn, & + & abslmx,abslmn,absomx,absomn,abssmx, & + & abssmn,absimx,absimn,absjmx,absjmn & &, sihnew - integer imsk,jmsk,ifp,irtscv,irtacn,irtais,irtsno,irtzor, - & irtalb,irtsot,irtalf,j,irtvet,irtsmc,irtstc,irtveg, - & irtwet,k,iprnt,kk,irttsf,iret,i,igrdbg,iy,im,id, - & icalbl,icalbs,icalfl,ictsfs,lugb,len,lsoil,ih, - & ictsfl,iczors,icplrl,icplrs,iczorl,icalfs,icsnol, - & icsnos,irttg3,me,kqcm,nlunit,sz_nml,ialb + integer imsk,jmsk,ifp,irtscv,irtacn,irtais,irtsno,irtzor, & + & irtalb,irtsot,irtalf,j,irtvet,irtsmc,irtstc,irtveg, & + & irtwet,k,iprnt,kk,irttsf,iret,i,igrdbg,iy,im,id, & + & icalbl,icalbs,icalfl,ictsfs,lugb,len,lsoil,ih, & + & ictsfl,iczors,icplrl,icplrs,iczorl,icalfs,icsnol, & + & icsnos,irttg3,me,kqcm,nlunit,sz_nml,ialb & &, irtvmn, irtvmx, irtslp, irtabs, isot, ivegsrc - logical gausm, deads, qcmsk, znlst, monclm, monanl, + logical gausm, deads, qcmsk, znlst, monclm, monanl, & & monfcs, monmer, mondif, landice character(len=*), intent(in) :: input_nml_file(sz_nml) integer num_parthds ! -!> this is a limited point version of surface program. +!> This is a limited point version of surface program. !! !! this program runs in two different modes: !! @@ -159,9 +177,7 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc !! forecast hour. if surface analysis file is given, for the corresponding !! dates, the program will use it. !! -!! note: -!! -!! if the date of the analysis does not match given iy,im,id,ih, (and fh), +!!\note if the date of the analysis does not match given iy,im,id,ih, (and fh), !! the program searches an old analysis by going back 6 hours, then 12 hours, !! then one day upto nrepmx days (parameter statement in the subrotine fixrd. !! now defined as 8). this allows the user to provide non-daily analysis to @@ -178,15 +194,6 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc !! !! for a dead start, do not supply fnbgsi or set fnbgsi=' ' ! -! lugb is the unit number used in this subprogram -! len ... number of points on which sfccyc operates -! lsoil .. number of soil layers (2 as of april, 1994) -! iy,im,id,ih .. year, month, day, and hour of initial state. -! fh .. forecast hour -! rla, rlo -- latitude and longitudes of the len points -! sig1t .. sigma level 1 temperature for dead start. should be on gaussian -! grid. if not dead start, no need for dimension but set to zero -! as in the example below. ! ! variable naming conventions: ! @@ -427,7 +434,7 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc ! ! mask orography and variance on gaussian grid ! - real (kind=kind_io8) slmask(len),orog(len), orog_uf(len) + real (kind=kind_io8) slmask(len),orog(len), orog_uf(len) & &, orogd(len) real (kind=kind_io8) rla(len), rlo(len) ! @@ -440,50 +447,50 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc ! ! climatology surface fields (last character 'c' or 'clm' indicate climatology) ! - character*500 fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc, - & fnplrc,fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc, - & fnvegc,fnvetc,fnsotc + character*500 fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc, & + & fnplrc,fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc, & + & fnvegc,fnvetc,fnsotc & &, fnvmnc,fnvmxc,fnslpc,fnabsc, fnalbc2 - real (kind=kind_io8) tsfclm(len), wetclm(len), snoclm(len), - & zorclm(len), albclm(len,4), aisclm(len), - & tg3clm(len), acnclm(len), cnpclm(len), - & cvclm (len), cvbclm(len), cvtclm(len), - & scvclm(len), tsfcl2(len), vegclm(len), - & vetclm(len), sotclm(len), alfclm(len,2), sliclm(len), - & smcclm(len,lsoil), stcclm(len,lsoil) - &, sihclm(len), sicclm(len) + real (kind=kind_io8) tsfclm(len), wetclm(len), snoclm(len), & + & zorclm(len), albclm(len,4), aisclm(len), & + & tg3clm(len), acnclm(len), cnpclm(len), & + & cvclm (len), cvbclm(len), cvtclm(len), & + & scvclm(len), tsfcl2(len), vegclm(len), & + & vetclm(len), sotclm(len), alfclm(len,2), sliclm(len), & + & smcclm(len,lsoil), stcclm(len,lsoil) & + &, sihclm(len), sicclm(len) & &, vmnclm(len), vmxclm(len), slpclm(len), absclm(len) ! ! analyzed surface fields (last character 'a' or 'anl' indicate analysis) ! - character*500 fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa, - & fnplra,fntg3a,fnscva,fnsmca,fnstca,fnacna, - & fnvega,fnveta,fnsota + character*500 fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa, & + & fnplra,fntg3a,fnscva,fnsmca,fnstca,fnacna, & + & fnvega,fnveta,fnsota & &, fnvmna,fnvmxa,fnslpa,fnabsa ! - real (kind=kind_io8) tsfanl(len), wetanl(len), snoanl(len), - & zoranl(len), albanl(len,4), aisanl(len), - & tg3anl(len), acnanl(len), cnpanl(len), - & cvanl (len), cvbanl(len), cvtanl(len), - & scvanl(len), tsfan2(len), veganl(len), - & vetanl(len), sotanl(len), alfanl(len,2), slianl(len), - & smcanl(len,lsoil), stcanl(len,lsoil) - &, sihanl(len), sicanl(len) + real (kind=kind_io8) tsfanl(len), wetanl(len), snoanl(len), & + & zoranl(len), albanl(len,4), aisanl(len), & + & tg3anl(len), acnanl(len), cnpanl(len), & + & cvanl (len), cvbanl(len), cvtanl(len), & + & scvanl(len), tsfan2(len), veganl(len), & + & vetanl(len), sotanl(len), alfanl(len,2), slianl(len), & + & smcanl(len,lsoil), stcanl(len,lsoil) & + &, sihanl(len), sicanl(len) & &, vmnanl(len), vmxanl(len), slpanl(len), absanl(len) ! real (kind=kind_io8) tsfan0(len) ! sea surface temperature analysis at ft=0. ! ! predicted surface fields (last characters 'fcs' indicates forecast) ! - real (kind=kind_io8) tsffcs(len), wetfcs(len), snofcs(len), - & zorfcs(len), albfcs(len,4), aisfcs(len), - & tg3fcs(len), acnfcs(len), cnpfcs(len), - & cvfcs (len), cvbfcs(len), cvtfcs(len), - & slifcs(len), vegfcs(len), - & vetfcs(len), sotfcs(len), alffcs(len,2), - & smcfcs(len,lsoil), stcfcs(len,lsoil) - &, sihfcs(len), sicfcs(len), sitfcs(len) - &, vmnfcs(len), vmxfcs(len), slpfcs(len), absfcs(len) + real (kind=kind_io8) tsffcs(len), wetfcs(len), snofcs(len), & + & zorfcs(len), albfcs(len,4), aisfcs(len), & + & tg3fcs(len), acnfcs(len), cnpfcs(len), & + & cvfcs (len), cvbfcs(len), cvtfcs(len), & + & slifcs(len), vegfcs(len), & + & vetfcs(len), sotfcs(len), alffcs(len,2), & + & smcfcs(len,lsoil), stcfcs(len,lsoil) & + &, sihfcs(len), sicfcs(len), sitfcs(len) & + &, vmnfcs(len), vmxfcs(len), slpfcs(len), absfcs(len) & &, swdfcs(len), slcfcs(len,lsoil) ! ! ratio of sigma level 1 wind and 10m wind (diagnozed by model and not touched @@ -989,7 +996,7 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc if((fabss.gt.0.).and.(fabss.lt.99999)) cabss=exp(-deltf/fabss) !clu ---------------------------------------------------------------------- ! -! read a high resolution mask field for use in grib interpolation +!> - Call hmskrd() to read a high resolution mask field for use in grib interpolation ! call hmskrd(lugb,imsk,jmsk,fnmskh, & kpdmsk,slmskh,gausm,blnmsk,bltmsk,me) @@ -2671,7 +2678,8 @@ subroutine dayoyr(iyr,imo,idy,ldy) end !>\ingroup mod_sfcsub - subroutine hmskrd(lugb,imsk,jmsk,fnmskh, +!! reads a high resolution mask field for use in grib interpolation + subroutine hmskrd(lugb,imsk,jmsk,fnmskh, & & kpds5,slmskh,gausm,blnmsk,bltmsk,me) use machine , only : kind_io8,kind_io4 use sfccyc_module, only : mdata, xdata, ydata @@ -2706,7 +2714,7 @@ subroutine hmskrd(lugb,imsk,jmsk,fnmskh, end !>\ingroup mod_sfcsub - subroutine fixrdg(lugb,idim,jdim,fngrib, + subroutine fixrdg(lugb,idim,jdim,fngrib, & & kpds5,gdata,gaus,blno,blto,me) use machine , only : kind_io8,kind_io4 use sfccyc_module, only : mdata @@ -2824,7 +2832,7 @@ subroutine fixrdg(lugb,idim,jdim,fngrib, !>\ingroup mod_sfcsub !! This subroutine get area of the grib record. - subroutine getarea(kgds,dlat,dlon,rslat,rnlat,wlon,elon,ijordr + subroutine getarea(kgds,dlat,dlon,rslat,rnlat,wlon,elon,ijordr & &, me) use machine , only : kind_io8,kind_io4 implicit none @@ -3040,24 +3048,22 @@ subroutine subst(data,imax,jmax,dlon,dlat,ijordr) !>\ingroup mod_sfcsub !! This subroutine conducts interpolation from lat/lon to Gaussian !! grid to other lat/lon grid. - subroutine la2ga(regin,imxin,jmxin,rinlon,rinlat,rlon,rlat,inttyp, - & gauout,len,lmask,rslmsk,slmask + subroutine la2ga(regin,imxin,jmxin,rinlon,rinlat,rlon,rlat,inttyp,& + & gauout,len,lmask,rslmsk,slmask & &, outlat, outlon,me) use machine , only : kind_io8,kind_io4 implicit none - real (kind=kind_io8) wei4,wei3,wei2,sum2,sum1,sum3,wei1,sum4, - & wsum,tem,wsumiv,sums,sumn,wi2j2,x,y,wi1j1, - & wi1j2,wi2j1,rlat,rlon,aphi, + real (kind=kind_io8) wei4,wei3,wei2,sum2,sum1,sum3,wei1,sum4, & + & wsum,tem,wsumiv,sums,sumn,wi2j2,x,y,wi1j1, & + & wi1j2,wi2j1,rlat,rlon,aphi, & & rnume,alamd,denom - integer jy,ifills,ix,len,inttyp,me,i,j,jmxin,imxin,jq,jx,j1,j2, + integer jy,ifills,ix,len,inttyp,me,i,j,jmxin,imxin,jq,jx,j1,j2, & & ii,i1,i2,kmami,it integer nx,kxs,kxt integer, allocatable, save :: imxnx(:) integer, allocatable :: ifill(:) ! -! interpolation from lat/lon or gaussian grid to other lat/lon grid -! - real (kind=kind_io8) outlon(len),outlat(len),gauout(len), + real (kind=kind_io8) outlon(len),outlat(len),gauout(len), & & slmask(len) real (kind=kind_io8) regin (imxin,jmxin),rslmsk(imxin,jmxin) ! @@ -3613,54 +3619,46 @@ subroutine maxmin(f,imax,kmax) end !>\ingroup mod_sfcsub - subroutine filanl(tsfanl,tsfan2,wetanl,snoanl,zoranl,albanl, - & aisanl, - & tg3anl,cvanl ,cvbanl,cvtanl, - & cnpanl,smcanl,stcanl,slianl,scvanl,veganl, - & vetanl,sotanl,alfanl, -!cwu [+1l] add ()anl for sih, sic - & sihanl,sicanl, -!clu [+1l] add ()anl for vmn, vmx, slp, abs - & vmnanl,vmxanl,slpanl,absanl, - & tsfclm,tsfcl2,wetclm,snoclm,zorclm,albclm, - & aisclm, - & tg3clm,cvclm ,cvbclm,cvtclm, - & cnpclm,smcclm,stcclm,sliclm,scvclm,vegclm, - & vetclm,sotclm,alfclm, -!cwu [+1l] add ()clm for sih, sic - & sihclm,sicclm, -!clu [+1l] add ()clm for vmn, vmx, slp, abs - & vmnclm,vmxclm,slpclm,absclm, + subroutine filanl(tsfanl,tsfan2,wetanl,snoanl,zoranl,albanl, & + & aisanl, & + & tg3anl,cvanl ,cvbanl,cvtanl, & + & cnpanl,smcanl,stcanl,slianl,scvanl,veganl, & + & vetanl,sotanl,alfanl, & + & sihanl,sicanl, & !cwu [+1l] add ()anl for sih, sic + & vmnanl,vmxanl,slpanl,absanl, & !clu [+1l] add ()anl for vmn, vmx, slp, abs + & tsfclm,tsfcl2,wetclm,snoclm,zorclm,albclm, & + & aisclm, & + & tg3clm,cvclm ,cvbclm,cvtclm, & + & cnpclm,smcclm,stcclm,sliclm,scvclm,vegclm, & + & vetclm,sotclm,alfclm, & + & sihclm,sicclm, & !cwu [+1l] add ()clm for sih, sic + & vmnclm,vmxclm,slpclm,absclm, & !clu [+1l] add ()clm for vmn, vmx, slp, abs & len,lsoil) use machine , only : kind_io8,kind_io4 implicit none integer i,j,len,lsoil ! - real (kind=kind_io8) tsfanl(len),tsfan2(len),wetanl(len), - & snoanl(len), - & zoranl(len),albanl(len,4),aisanl(len), - & tg3anl(len), - & cvanl (len),cvbanl(len),cvtanl(len), - & cnpanl(len), - & smcanl(len,lsoil),stcanl(len,lsoil), - & slianl(len),scvanl(len),veganl(len), - & vetanl(len),sotanl(len),alfanl(len,2) -!cwu [+1l] add ()anl for sih, sic - &, sihanl(len),sicanl(len) -!clu [+1l] add ()anl for vmn, vmx, slp, abs - &, vmnanl(len),vmxanl(len),slpanl(len),absanl(len) - real (kind=kind_io8) tsfclm(len),tsfcl2(len),wetclm(len), - & snoclm(len), - & zorclm(len),albclm(len,4),aisclm(len), - & tg3clm(len), - & cvclm (len),cvbclm(len),cvtclm(len), - & cnpclm(len), - & smcclm(len,lsoil),stcclm(len,lsoil), - & sliclm(len),scvclm(len),vegclm(len), - & vetclm(len),sotclm(len),alfclm(len,2) -!cwu [+1l] add ()clm for sih, sic - &, sihclm(len),sicclm(len) -!clu [+1l] add ()clm for vmn, vmx, slp, abs + real (kind=kind_io8) tsfanl(len),tsfan2(len),wetanl(len), & + & snoanl(len), & + & zoranl(len),albanl(len,4),aisanl(len), & + & tg3anl(len), & + & cvanl (len),cvbanl(len),cvtanl(len), & + & cnpanl(len), & + & smcanl(len,lsoil),stcanl(len,lsoil), & + & slianl(len),scvanl(len),veganl(len), & + & vetanl(len),sotanl(len),alfanl(len,2) & + &, sihanl(len),sicanl(len) & + &, vmnanl(len),vmxanl(len),slpanl(len),absanl(len) + real (kind=kind_io8) tsfclm(len),tsfcl2(len),wetclm(len), & + & snoclm(len), & + & zorclm(len),albclm(len,4),aisclm(len), & + & tg3clm(len), & + & cvclm (len),cvbclm(len),cvtclm(len), & + & cnpclm(len), & + & smcclm(len,lsoil),stcclm(len,lsoil), & + & sliclm(len),scvclm(len),vegclm(len), & + & vetclm(len),sotclm(len),alfclm(len,2) & + &, sihclm(len),sicclm(len) & &, vmnclm(len),vmxclm(len),slpclm(len),absclm(len) ! do i=1,len @@ -3712,43 +3710,34 @@ subroutine filanl(tsfanl,tsfan2,wetanl,snoanl,zoranl,albanl, end !>\ingroup mod_sfcsub - subroutine analy(lugb,iy,im,id,ih,fh,len,lsoil, - & slmask,fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa, - & fntg3a,fnscva,fnsmca,fnstca,fnacna,fnvega, - & fnveta,fnsota, -!clu [+1l] add fn()a for vmn, vmx, slp, abs - & fnvmna,fnvmxa,fnslpa,fnabsa, - & tsfanl,wetanl,snoanl,zoranl,albanl,aisanl, - & tg3anl,cvanl ,cvbanl,cvtanl, - & smcanl,stcanl,slianl,scvanl,acnanl,veganl, - & vetanl,sotanl,alfanl,tsfan0, -!clu [+1l] add ()anl for vmn, vmx, slp, abs - & vmnanl,vmxanl,slpanl,absanl, -!cggg snow mods start & kpdtsf,kpdwet,kpdsno,kpdzor,kpdalb,kpdais, - & kpdtsf,kpdwet,kpdsno,kpdsnd,kpdzor,kpdalb,kpdais, -!cggg snow mods end - & kpdtg3,kpdscv,kpdacn,kpdsmc,kpdstc,kpdveg, - & kprvet,kpdsot,kpdalf, -!clu [+1l] add kpd() for vmn, vmx, slp, abs - & kpdvmn,kpdvmx,kpdslp,kpdabs, - & irttsf,irtwet,irtsno,irtzor,irtalb,irtais, - & irttg3,irtscv,irtacn,irtsmc,irtstc,irtveg, - & irtvet,irtsot,irtalf -!clu [+1l] add irt() for vmn, vmx, slp, abs - &, irtvmn,irtvmx,irtslp,irtabs - &, imsk, jmsk, slmskh, outlat, outlon + subroutine analy(lugb,iy,im,id,ih,fh,len,lsoil, & + & slmask,fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa,& + & fntg3a,fnscva,fnsmca,fnstca,fnacna,fnvega, & + & fnveta,fnsota, & + & fnvmna,fnvmxa,fnslpa,fnabsa, & !clu [+1l] add fn()a for vmn, vmx, slp, abs + & tsfanl,wetanl,snoanl,zoranl,albanl,aisanl, & + & tg3anl,cvanl ,cvbanl,cvtanl, & + & smcanl,stcanl,slianl,scvanl,acnanl,veganl, & + & vetanl,sotanl,alfanl,tsfan0, & + & vmnanl,vmxanl,slpanl,absanl, & !clu [+1l] add ()anl for vmn, vmx, slp, abs + & kpdtsf,kpdwet,kpdsno,kpdsnd,kpdzor,kpdalb,kpdais,& + & kpdtg3,kpdscv,kpdacn,kpdsmc,kpdstc,kpdveg, & + & kprvet,kpdsot,kpdalf, & + & kpdvmn,kpdvmx,kpdslp,kpdabs, & !clu [+1l] add kpd() for vmn, vmx, slp, abs + & irttsf,irtwet,irtsno,irtzor,irtalb,irtais, & + & irttg3,irtscv,irtacn,irtsmc,irtstc,irtveg, & + & irtvet,irtsot,irtalf & + &, irtvmn,irtvmx,irtslp,irtabs & !clu [+1l] add irt() for vmn, vmx, slp, abs + &, imsk, jmsk, slmskh, outlat, outlon & &, gaus, blno, blto, me, lanom) use machine , only : kind_io8,kind_io4 implicit none logical lanom - integer irtsmc,irtacn,irtstc,irtvet,irtveg,irtscv,irtzor,irtsno, - & irtalb,irttg3,irtais,iret,me,kk,kpdvet,i,irtalf,irtsot, -!cggg snow mods start & imsk,jmsk,irtwet,lsoil,len, kpdtsf,kpdsno,kpdwet,iy, - & imsk,jmsk,irtwet,lsoil,len,kpdtsf,kpdsno,kpdsnd,kpdwet,iy, -!cggg snow mods end - & lugb,im,ih,id,kpdveg,kpdstc,kprvet,irttsf,kpdsot,kpdsmc, - & kpdais,kpdzor,kpdtg3,kpdacn,kpdscv,j -!clu [+1l] add kpd() and irt() for vmn, vmx, slp, abs + integer irtsmc,irtacn,irtstc,irtvet,irtveg,irtscv,irtzor,irtsno, & + & irtalb,irttg3,irtais,iret,me,kk,kpdvet,i,irtalf,irtsot, & + & imsk,jmsk,irtwet,lsoil,len,kpdtsf,kpdsno,kpdsnd,kpdwet,iy,& + & lugb,im,ih,id,kpdveg,kpdstc,kprvet,irttsf,kpdsot,kpdsmc, & + & kpdais,kpdzor,kpdtg3,kpdacn,kpdscv,j & &, kpdvmn,kpdvmx,kpdslp,kpdabs,irtvmn,irtvmx,irtslp,irtabs real (kind=kind_io8) blto,blno,fh ! @@ -3761,21 +3750,19 @@ subroutine analy(lugb,iy,im,id,ih,fh,len,lsoil, integer lugi, lskip, lgrib, ndata !cggg snow mods end ! - character*500 fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa, - & fntg3a,fnscva,fnsmca,fnstca,fnacna,fnvega, + character*500 fntsfa,fnweta,fnsnoa,fnzora,fnalba,fnaisa, & + & fntg3a,fnscva,fnsmca,fnstca,fnacna,fnvega, & & fnveta,fnsota -!clu [+1l] add fn()a for vmn, vmx, slp, abs &, fnvmna,fnvmxa,fnslpa,fnabsa - real (kind=kind_io8) tsfanl(len), wetanl(len), snoanl(len), - & zoranl(len), albanl(len,4), aisanl(len), - & tg3anl(len), acnanl(len), - & cvanl (len), cvbanl(len), cvtanl(len), - & slianl(len), scvanl(len), veganl(len), - & vetanl(len), sotanl(len), alfanl(len,2), - & smcanl(len,lsoil), stcanl(len,lsoil), - & tsfan0(len) -!clu [+1l] add ()anl for vmn, vmx, slp, abs + real (kind=kind_io8) tsfanl(len), wetanl(len), snoanl(len), & + & zoranl(len), albanl(len,4), aisanl(len), & + & tg3anl(len), acnanl(len), & + & cvanl (len), cvbanl(len), cvtanl(len), & + & slianl(len), scvanl(len), veganl(len), & + & vetanl(len), sotanl(len), alfanl(len,2), & + & smcanl(len,lsoil), stcanl(len,lsoil), & + & tsfan0(len) & &, vmnanl(len),vmxanl(len),slpanl(len),absanl(len) ! logical gaus @@ -4378,53 +4365,45 @@ subroutine analy(lugb,iy,im,id,ih,fh,len,lsoil, end !>\ingroup mod_sfcsub - subroutine filfcs(tsffcs,wetfcs,snofcs,zorfcs,albfcs, - & tg3fcs,cvfcs ,cvbfcs,cvtfcs, - & cnpfcs,smcfcs,stcfcs,slifcs,aisfcs, - & vegfcs, vetfcs, sotfcs, alffcs, -!cwu [+1l] add ()fcs for sih, sic - & sihfcs,sicfcs, -!clu [+1l] add ()fcs for vmn, vmx, slp, abs - & vmnfcs,vmxfcs,slpfcs,absfcs, - & tsfanl,wetanl,snoanl,zoranl,albanl, - & tg3anl,cvanl ,cvbanl,cvtanl, - & cnpanl,smcanl,stcanl,slianl,aisanl, - & veganl, vetanl, sotanl, alfanl, -!cwu [+1l] add ()anl for sih, sic - & sihanl,sicanl, -!clu [+1l] add ()anl for vmn, vmx, slp, abs - & vmnanl,vmxanl,slpanl,absanl, + subroutine filfcs(tsffcs,wetfcs,snofcs,zorfcs,albfcs, & + & tg3fcs,cvfcs ,cvbfcs,cvtfcs, & + & cnpfcs,smcfcs,stcfcs,slifcs,aisfcs, & + & vegfcs, vetfcs, sotfcs, alffcs, & + & sihfcs,sicfcs, & !cwu [+1l] add ()fcs for sih, sic + & vmnfcs,vmxfcs,slpfcs,absfcs, & !clu [+1l] add ()fcs for vmn, vmx, slp, abs + & tsfanl,wetanl,snoanl,zoranl,albanl, & + & tg3anl,cvanl ,cvbanl,cvtanl, & + & cnpanl,smcanl,stcanl,slianl,aisanl, & + & veganl, vetanl, sotanl, alfanl, & + & sihanl,sicanl, & !cwu [+1l] add ()anl for sih, sic + & vmnanl,vmxanl,slpanl,absanl, & !clu [+1l] add ()anl for vmn, vmx, slp, abs & len,lsoil) ! use machine , only : kind_io8,kind_io4 implicit none integer i,j,len,lsoil - real (kind=kind_io8) tsffcs(len),wetfcs(len),snofcs(len), - & zorfcs(len),albfcs(len,4),aisfcs(len), - & tg3fcs(len), - & cvfcs (len),cvbfcs(len),cvtfcs(len), - & cnpfcs(len), - & smcfcs(len,lsoil),stcfcs(len,lsoil), - & slifcs(len),vegfcs(len), - & vetfcs(len),sotfcs(len),alffcs(len,2) -!cwu [+1l] add ()fcs for sih, sic - &, sihfcs(len),sicfcs(len) -!clu [+1l] add ()fcs for vmn, vmx, slp, abs - &, vmnfcs(len),vmxfcs(len),slpfcs(len),absfcs(len) - real (kind=kind_io8) tsfanl(len),wetanl(len),snoanl(len), - & zoranl(len),albanl(len,4),aisanl(len), - & tg3anl(len), - & cvanl (len),cvbanl(len),cvtanl(len), - & cnpanl(len), - & smcanl(len,lsoil),stcanl(len,lsoil), - & slianl(len),veganl(len), - & vetanl(len),sotanl(len),alfanl(len,2) -!cwu [+1l] add ()anl for sih, sic - &, sihanl(len),sicanl(len) -!clu [+1l] add ()anl for vmn, vmx, slp, abs + real (kind=kind_io8) tsffcs(len),wetfcs(len),snofcs(len), & + & zorfcs(len),albfcs(len,4),aisfcs(len), & + & tg3fcs(len), & + & cvfcs (len),cvbfcs(len),cvtfcs(len), & + & cnpfcs(len), & + & smcfcs(len,lsoil),stcfcs(len,lsoil), & + & slifcs(len),vegfcs(len), & + & vetfcs(len),sotfcs(len),alffcs(len,2) & + &, sihfcs(len),sicfcs(len) & + &, vmnfcs(len),vmxfcs(len),slpfcs(len),absfcs(len) + real (kind=kind_io8) tsfanl(len),wetanl(len),snoanl(len), & + & zoranl(len),albanl(len,4),aisanl(len), & + & tg3anl(len), & + & cvanl (len),cvbanl(len),cvtanl(len), & + & cnpanl(len), & + & smcanl(len,lsoil),stcanl(len,lsoil), & + & slianl(len),veganl(len), & + & vetanl(len),sotanl(len),alfanl(len,2) & + &, sihanl(len),sicanl(len) & &, vmnanl(len),vmxanl(len),slpanl(len),absanl(len) ! - write(6,*) ' this is a dead start run, tsfc over land is', + write(6,*) ' this is a dead start run, tsfc over land is', & & ' set as lowest sigma level temperture if given.' write(6,*) ' if not, set to climatological tsf over land is used' ! @@ -4477,7 +4456,7 @@ subroutine bktges(smcfcs,slianl,stcfcs,len,lsoil) use machine , only : kind_io8,kind_io4 implicit none integer i,j,len,lsoil,k - real (kind=kind_io8) smcfcs(len,lsoil), stcfcs(len,lsoil), + real (kind=kind_io8) smcfcs(len,lsoil), stcfcs(len,lsoil), & & slianl(len) ! ! note that smfcs comes in with the original unit (cm?) (not grib file) @@ -4565,7 +4544,10 @@ subroutine tsfcor(tsfc,orog,slmask,umask,len,rlapse) enddo return end - subroutine snodpth(scvanl,slianl,tsfanl,snoclm, + +!>\ingroup mod_sfcsub +!! This subroutine uses surface temperature to get snow depth estimate. + subroutine snodpth(scvanl,slianl,tsfanl,snoclm, & & glacir,snwmax,snwmin,landice,len,snoanl, me) use machine , only : kind_io8,kind_io4 implicit none @@ -4573,7 +4555,7 @@ subroutine snodpth(scvanl,slianl,tsfanl,snoclm, logical, intent(in) :: landice real (kind=kind_io8) sno,snwmax,snwmin ! - real (kind=kind_io8) scvanl(len), slianl(len), tsfanl(len), + real (kind=kind_io8) scvanl(len), slianl(len), tsfanl(len), & & snoclm(len), snoanl(len), glacir(len) ! if (me .eq. 0) write(6,*) 'snodpth' @@ -4621,80 +4603,81 @@ subroutine snodpth(scvanl,slianl,tsfanl,snoclm, end subroutine snodpth !>\ingroup mod_sfcsub - subroutine merge(len,lsoil,iy,im,id,ih,fh,deltsfc, - & sihfcs,sicfcs, - & vmnfcs,vmxfcs,slpfcs,absfcs, - & tsffcs,wetfcs,snofcs,zorfcs,albfcs,aisfcs, - & cvfcs ,cvbfcs,cvtfcs, - & cnpfcs,smcfcs,stcfcs,slifcs,vegfcs, - & vetfcs,sotfcs,alffcs, - & sihanl,sicanl, - & vmnanl,vmxanl,slpanl,absanl, - & tsfanl,tsfan2,wetanl,snoanl,zoranl,albanl,aisanl, - & cvanl ,cvbanl,cvtanl, - & cnpanl,smcanl,stcanl,slianl,veganl, - & vetanl,sotanl,alfanl, - & ctsfl,calbl,caisl,csnol,csmcl,czorl,cstcl,cvegl, - & ctsfs,calbs,caiss,csnos,csmcs,czors,cstcs,cvegs, - & ccv,ccvb,ccvt,ccnp,cvetl,cvets,csotl,csots, - & calfl,calfs, - & csihl,csihs,csicl,csics, - & cvmnl,cvmns,cvmxl,cvmxs,cslpl,cslps,cabsl,cabss, - & irttsf,irtwet,irtsno,irtzor,irtalb,irtais, - & irttg3,irtscv,irtacn,irtsmc,irtstc,irtveg, - & irtvmn,irtvmx,irtslp,irtabs, +!! This subroutine merges analysis and forecast. + subroutine merge(len,lsoil,iy,im,id,ih,fh,deltsfc, & + & sihfcs,sicfcs, & + & vmnfcs,vmxfcs,slpfcs,absfcs, & + & tsffcs,wetfcs,snofcs,zorfcs,albfcs,aisfcs, & + & cvfcs ,cvbfcs,cvtfcs, & + & cnpfcs,smcfcs,stcfcs,slifcs,vegfcs, & + & vetfcs,sotfcs,alffcs, & + & sihanl,sicanl, & + & vmnanl,vmxanl,slpanl,absanl, & + & tsfanl,tsfan2,wetanl,snoanl,zoranl,albanl,aisanl,& + & cvanl ,cvbanl,cvtanl, & + & cnpanl,smcanl,stcanl,slianl,veganl, & + & vetanl,sotanl,alfanl, & + & ctsfl,calbl,caisl,csnol,csmcl,czorl,cstcl,cvegl, & + & ctsfs,calbs,caiss,csnos,csmcs,czors,cstcs,cvegs, & + & ccv,ccvb,ccvt,ccnp,cvetl,cvets,csotl,csots, & + & calfl,calfs, & + & csihl,csihs,csicl,csics, & + & cvmnl,cvmns,cvmxl,cvmxs,cslpl,cslps,cabsl,cabss, & + & irttsf,irtwet,irtsno,irtzor,irtalb,irtais, & + & irttg3,irtscv,irtacn,irtsmc,irtstc,irtveg, & + & irtvmn,irtvmx,irtslp,irtabs, & & irtvet,irtsot,irtalf, landice, me) use machine , only : kind_io8,kind_io4 use sfccyc_module, only : veg_type_landice, soil_type_landice implicit none - integer k,i,im,id,iy,len,lsoil,ih,irtacn,irtsmc,irtscv,irtais, - & irttg3,irtstc,irtalf,me,irtsot,irtveg,irtvet, irtzor, - & irtalb,irtsno,irttsf,irtwet,j + integer k,i,im,id,iy,len,lsoil,ih,irtacn,irtsmc,irtscv,irtais, & + & irttg3,irtstc,irtalf,me,irtsot,irtveg,irtvet, irtzor, & + & irtalb,irtsno,irttsf,irtwet,j & &, irtvmn,irtvmx,irtslp,irtabs logical, intent(in) :: landice - real (kind=kind_io8) rvegs,rvets,rzors,raiss,rsnos,rsots,rcnp, - & rcvt,rcv,rcvb,rsnol,rzorl,raisl,ralbl, - & ralfl,rvegl,ralbs,ralfs,rtsfs,rvetl,rsotl, - & qzors,qvegs,qsnos,qalfs,qaiss,qvets,qcvt, - & qcnp,qcvb,qsots,qcv,qaisl,qsnol,qalfl, - & qtsfl,qalbl,qzorl,qtsfs,qalbs,qsotl,qvegl, - & qvetl,rtsfl,calbs,caiss,ctsfs,czorl,cvegl, - & csnos,ccvb,ccvt,ccv,czors,cvegs,caisl,csnol, - & calbl,fh,ctsfl,ccnp,csots,calfl,csotl,cvetl, - & cvets,calfs,deltsfc, - & csihl,csihs,csicl,csics, - & rsihl,rsihs,rsicl,rsics, - & qsihl,qsihs,qsicl,qsics - &, cvmnl,cvmns,cvmxl,cvmxs,cslpl,cslps - &, cabsl,cabss,rvmnl,rvmns,rvmxl,rvmxs - &, rslpl,rslps,rabsl,rabss,qvmnl,qvmns + real (kind=kind_io8) rvegs,rvets,rzors,raiss,rsnos,rsots,rcnp, & + & rcvt,rcv,rcvb,rsnol,rzorl,raisl,ralbl, & + & ralfl,rvegl,ralbs,ralfs,rtsfs,rvetl,rsotl, & + & qzors,qvegs,qsnos,qalfs,qaiss,qvets,qcvt, & + & qcnp,qcvb,qsots,qcv,qaisl,qsnol,qalfl, & + & qtsfl,qalbl,qzorl,qtsfs,qalbs,qsotl,qvegl, & + & qvetl,rtsfl,calbs,caiss,ctsfs,czorl,cvegl, & + & csnos,ccvb,ccvt,ccv,czors,cvegs,caisl,csnol, & + & calbl,fh,ctsfl,ccnp,csots,calfl,csotl,cvetl, & + & cvets,calfs,deltsfc, & + & csihl,csihs,csicl,csics, & + & rsihl,rsihs,rsicl,rsics, & + & qsihl,qsihs,qsicl,qsics & + &, cvmnl,cvmns,cvmxl,cvmxs,cslpl,cslps & + &, cabsl,cabss,rvmnl,rvmns,rvmxl,rvmxs & + &, rslpl,rslps,rabsl,rabss,qvmnl,qvmns & &, qvmxl,qvmxs,qslpl,qslps,qabsl,qabss ! - real (kind=kind_io8) tsffcs(len), wetfcs(len), snofcs(len), - & zorfcs(len), albfcs(len,4), aisfcs(len), - & cvfcs (len), cvbfcs(len), cvtfcs(len), - & cnpfcs(len), - & smcfcs(len,lsoil),stcfcs(len,lsoil), - & slifcs(len), vegfcs(len), - & vetfcs(len), sotfcs(len), alffcs(len,2) - &, sihfcs(len), sicfcs(len) + real (kind=kind_io8) tsffcs(len), wetfcs(len), snofcs(len), & + & zorfcs(len), albfcs(len,4), aisfcs(len), & + & cvfcs (len), cvbfcs(len), cvtfcs(len), & + & cnpfcs(len), & + & smcfcs(len,lsoil),stcfcs(len,lsoil), & + & slifcs(len), vegfcs(len), & + & vetfcs(len), sotfcs(len), alffcs(len,2) & + &, sihfcs(len), sicfcs(len) & &, vmnfcs(len),vmxfcs(len),slpfcs(len),absfcs(len) - real (kind=kind_io8) tsfanl(len),tsfan2(len), - & wetanl(len),snoanl(len), - & zoranl(len), albanl(len,4), aisanl(len), - & cvanl (len), cvbanl(len), cvtanl(len), - & cnpanl(len), - & smcanl(len,lsoil),stcanl(len,lsoil), - & slianl(len), veganl(len), - & vetanl(len), sotanl(len), alfanl(len,2) - &, sihanl(len),sicanl(len) + real (kind=kind_io8) tsfanl(len),tsfan2(len), & + & wetanl(len),snoanl(len), & + & zoranl(len), albanl(len,4), aisanl(len), & + & cvanl (len), cvbanl(len), cvtanl(len), & + & cnpanl(len), & + & smcanl(len,lsoil),stcanl(len,lsoil), & + & slianl(len), veganl(len), & + & vetanl(len), sotanl(len), alfanl(len,2) & + &, sihanl(len),sicanl(len) & &, vmnanl(len),vmxanl(len),slpanl(len),absanl(len) ! - real (kind=kind_io8) csmcl(lsoil), csmcs(lsoil), + real (kind=kind_io8) csmcl(lsoil), csmcs(lsoil), & & cstcl(lsoil), cstcs(lsoil) - real (kind=kind_io8) rsmcl(lsoil), rsmcs(lsoil), + real (kind=kind_io8) rsmcl(lsoil), rsmcs(lsoil), & & rstcl(lsoil), rstcs(lsoil) - real (kind=kind_io8) qsmcl(lsoil), qsmcs(lsoil), + real (kind=kind_io8) qsmcl(lsoil), qsmcs(lsoil), & & qstcl(lsoil), qstcs(lsoil) logical first integer num_threads @@ -5074,18 +5057,17 @@ subroutine merge(len,lsoil,iy,im,id,ih,fh,deltsfc, end subroutine merge !>\ingroup mod_sfcsub - subroutine newice(slianl,slifcs,tsfanl,tsffcs,len,lsoil, -!cwu [+1l] add sihnew,sicnew,sihanl,sicanl - & sihnew,sicnew,sihanl,sicanl, - & albanl,snoanl,zoranl,smcanl,stcanl, - & albsea,snosea,zorsea,smcsea,smcice, - & tsfmin,tsfice,albice,zorice,tgice, + subroutine newice(slianl,slifcs,tsfanl,tsffcs,len,lsoil, & + & sihnew,sicnew,sihanl,sicanl, & !cwu [+1l] add sihnew,sicnew,sihanl,sicanl + & albanl,snoanl,zoranl,smcanl,stcanl, & + & albsea,snosea,zorsea,smcsea,smcice, & + & tsfmin,tsfice,albice,zorice,tgice, & & rla,rlo,me) ! use machine , only : kind_io8,kind_io4 implicit none real (kind=kind_io8), parameter :: one=1.0 - real (kind=kind_io8) tgice,albice,zorice,tsfice,albsea,snosea, + real (kind=kind_io8) tgice,albice,zorice,tsfice,albsea,snosea, & & smcice,tsfmin,zorsea,smcsea !cwu [+1l] add sicnew,sihnew &, sicnew,sihnew @@ -5172,7 +5154,7 @@ subroutine newice(slianl,slifcs,tsfanl,tsffcs,len,lsoil, end !>\ingroup mod_sfcsub - subroutine qcsnow(snoanl,slmask,aisanl,glacir,len,snoval, + subroutine qcsnow(snoanl,slmask,aisanl,glacir,len,snoval, & & landice,me) use machine , only : kind_io8,kind_io4 implicit none @@ -5220,14 +5202,14 @@ subroutine qcsnow(snoanl,slmask,aisanl,glacir,len,snoval, end subroutine qcsnow !>\ingroup mod_sfcsub - subroutine qcsice(ais,glacir,amxice,aicice,aicsea,sllnd,slmask, + subroutine qcsice(ais,glacir,amxice,aicice,aicsea,sllnd,slmask, & & rla,rlo,len,me) use machine , only : kind_io8,kind_io4 implicit none integer kount1,kount,i,me,len real (kind=kind_io8) per,aicsea,aicice,sllnd ! - real (kind=kind_io8) ais(len), glacir(len), + real (kind=kind_io8) ais(len), glacir(len), & & amxice(len), slmask(len) real (kind=kind_io8) rla(len), rlo(len) ! @@ -5353,23 +5335,23 @@ subroutine scale(fld,len,scl) end !>\ingroup mod_sfcsub - subroutine qcmxmn(ttl,fld,slimsk,sno,iceflg, - & fldlmx,fldlmn,fldomx,fldomn,fldimx,fldimn, - & fldjmx,fldjmn,fldsmx,fldsmn,epsfld, + subroutine qcmxmn(ttl,fld,slimsk,sno,iceflg, & + & fldlmx,fldlmn,fldomx,fldomn,fldimx,fldimn, & + & fldjmx,fldjmn,fldsmx,fldsmn,epsfld, & & rla,rlo,len,mode,percrit,lgchek,me) ! use machine , only : kind_io8,kind_io4 implicit none - real (kind=kind_io8) permax,per,fldimx,fldimn,fldjmx,fldomn, - & fldlmx,fldlmn,fldomx,fldjmn,percrit, + real (kind=kind_io8) permax,per,fldimx,fldimn,fldjmx,fldomn, & + & fldlmx,fldlmn,fldomx,fldjmn,percrit, & & fldsmx,fldsmn,epsfld - integer kmaxi,kmini,kmaxj,kmino,kmaxl,kminl,kmaxo,mmprt,kminj, + integer kmaxi,kmini,kmaxj,kmino,kmaxl,kminl,kmaxo,mmprt,kminj, & & ij,nprt,kmaxs,kmins,i,me,len,mode parameter(mmprt=2) ! character*8 ttl logical iceflg(len) - real (kind=kind_io8) fld(len),slimsk(len),sno(len), + real (kind=kind_io8) fld(len),slimsk(len),sno(len), & & rla(len), rlo(len) integer iwk(len) logical lgchek @@ -5856,7 +5838,7 @@ subroutine getsmc(wetfld,len,lsoil,smcfld,me) end !>\ingroup mod_sfcsub - subroutine usesgt(sig1t,slianl,tg3anl,len,lsoil,tsfanl,stcanl, + subroutine usesgt(sig1t,slianl,tg3anl,len,lsoil,tsfanl,stcanl, & & tsfimx) ! use machine , only : kind_io8,kind_io4 @@ -6012,9 +5994,9 @@ subroutine qcsli(slianl,slifcs,len,me) ! end !>\ingroup mod_sfcsub - subroutine qcbyfc(tsffcs,snofcs,qctsfs,qcsnos,qctsfi, - & len,lsoil,snoanl,aisanl,slianl,tsfanl,albanl, - & zoranl,smcanl, + subroutine qcbyfc(tsffcs,snofcs,qctsfs,qcsnos,qctsfi, & + & len,lsoil,snoanl,aisanl,slianl,tsfanl,albanl, & + & zoranl,smcanl, & & smcclm,tsfsmx,albomx,zoromx, me) ! use machine , only : kind_io8,kind_io4 @@ -6110,8 +6092,8 @@ subroutine qcbyfc(tsffcs,snofcs,qctsfs,qcsnos,qctsfi, end !>\ingroup mod_sfcsub - subroutine setrmsk(kpds5,slmask,igaul,jgaul,wlon,rnlat, - & data,imax,jmax,rlnout,rltout,lmask,rslmsk + subroutine setrmsk(kpds5,slmask,igaul,jgaul,wlon,rnlat, & + & data,imax,jmax,rlnout,rltout,lmask,rslmsk & &, gaus,blno, blto, kgds1, kpds4, lbms) use machine , only : kind_io8,kind_io4 use sfccyc_module @@ -6586,25 +6568,26 @@ subroutine setrmsk(kpds5,slmask,igaul,jgaul,wlon,rnlat, end !>\ingroup mod_sfcsub - subroutine ga2la(gauin,imxin,jmxin,regout,imxout,jmxout, +!! This subroutine interpolates from lat/lon grid to other lat/lon grid. + subroutine ga2la(gauin,imxin,jmxin,regout,imxout,jmxout, & & wlon,rnlat,rlnout,rltout,gaus,blno, blto) use machine , only : kind_io8,kind_io4 implicit none - integer i1,i2,j2,ishft,i,jj,j1,jtem,jmxout,imxin,jmxin,imxout, + integer i1,i2,j2,ishft,i,jj,j1,jtem,jmxout,imxin,jmxin,imxout, & & j,iret - real (kind=kind_io8) alamd,dxin,aphi,x,sum1,sum2,y,dlati,wlon, - & rnlat,dxout,dphi,dlat,facns,tem,blno, + real (kind=kind_io8) alamd,dxin,aphi,x,sum1,sum2,y,dlati,wlon, & + & rnlat,dxout,dphi,dlat,facns,tem,blno, & & blto ! ! interpolation from lat/lon grid to other lat/lon grid ! - real (kind=kind_io8) gauin (imxin,jmxin), regout(imxout,jmxout) + real (kind=kind_io8) gauin (imxin,jmxin), regout(imxout,jmxout) & &, rlnout(imxout), rltout(jmxout) logical gaus ! real, allocatable :: gaul(:) real (kind=kind_io8) ddx(imxout),ddy(jmxout) - integer iindx1(imxout), iindx2(imxout), + integer iindx1(imxout), iindx2(imxout), & & jindx1(jmxout), jindx2(jmxout) integer jmxsav,n,kspla data jmxsav/0/ @@ -6838,8 +6821,8 @@ subroutine landtyp(vegtype,soiltype,slptype,slmask,len) use machine , only : kind_io8,kind_io4 implicit none integer i,len - real (kind=kind_io8) vegtype(len),soiltype(len),slmask(len) - +, slptype(len) + real (kind=kind_io8) vegtype(len),soiltype(len),slmask(len) & + &, slptype(len) ! ! make sure that the soil type and veg type are non-zero over land ! @@ -6852,8 +6835,9 @@ subroutine landtyp(vegtype,soiltype,slptype,slmask,len) enddo return -!>\ingroup mod_sfcsub end subroutine landtyp + +!>\ingroup mod_sfcsub subroutine gaulat(gaul,k) ! use machine , only : kind_io8,kind_io4 @@ -6886,7 +6870,7 @@ subroutine anomint(tsfan0,tsfclm,tsfcl0,tsfanl,len) use machine , only : kind_io8,kind_io4 implicit none integer i,len - real (kind=kind_io8) tsfanl(len), tsfan0(len), + real (kind=kind_io8) tsfanl(len), tsfan0(len), & & tsfclm(len), tsfcl0(len) ! ! time interpolation of anomalies @@ -6900,53 +6884,53 @@ subroutine anomint(tsfan0,tsfclm,tsfcl0,tsfanl,len) end !>\ingroup mod_sfcsub - subroutine clima(lugb,iy,im,id,ih,fh,len,lsoil, - & slmask,fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc, - & fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc,fnvegc, - & fnvetc,fnsotc, - & fnvmnc,fnvmxc,fnslpc,fnabsc, - & tsfclm,tsfcl2,wetclm,snoclm,zorclm,albclm,aisclm, - & tg3clm,cvclm ,cvbclm,cvtclm, - & cnpclm,smcclm,stcclm,sliclm,scvclm,acnclm,vegclm, - & vetclm,sotclm,alfclm, - & vmnclm,vmxclm,slpclm,absclm, - & kpdtsf,kpdwet,kpdsno,kpdzor,kpdalb,kpdais, - & kpdtg3,kpdscv,kpdacn,kpdsmc,kpdstc,kpdveg, - & kpdvet,kpdsot,kpdalf,tsfcl0, - & kpdvmn,kpdvmx,kpdslp,kpdabs, - & deltsfc, lanom - &, imsk, jmsk, slmskh, outlat, outlon - &, gaus, blno, blto, me,lprnt,iprnt, fnalbc2, ialb + subroutine clima(lugb,iy,im,id,ih,fh,len,lsoil, & + & slmask,fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc,& + & fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc,fnvegc, & + & fnvetc,fnsotc, & + & fnvmnc,fnvmxc,fnslpc,fnabsc, & + & tsfclm,tsfcl2,wetclm,snoclm,zorclm,albclm,aisclm,& + & tg3clm,cvclm ,cvbclm,cvtclm, & + & cnpclm,smcclm,stcclm,sliclm,scvclm,acnclm,vegclm,& + & vetclm,sotclm,alfclm, & + & vmnclm,vmxclm,slpclm,absclm, & + & kpdtsf,kpdwet,kpdsno,kpdzor,kpdalb,kpdais, & + & kpdtg3,kpdscv,kpdacn,kpdsmc,kpdstc,kpdveg, & + & kpdvet,kpdsot,kpdalf,tsfcl0, & + & kpdvmn,kpdvmx,kpdslp,kpdabs, & + & deltsfc, lanom & + &, imsk, jmsk, slmskh, outlat, outlon & + &, gaus, blno, blto, me,lprnt,iprnt, fnalbc2, ialb & &, tile_num_ch, i_index, j_index) ! use machine , only : kind_io8,kind_io4 implicit none character(len=*), intent(in) :: tile_num_ch integer, intent(in) :: i_index(len), j_index(len) - real (kind=kind_io8) rjday,wei1x,wei2x,rjdayh,wei2m,wei1m,wei1s, + real (kind=kind_io8) rjday,wei1x,wei2x,rjdayh,wei2m,wei1m,wei1s, & & wei2s,fh,stcmon1s,blto,blno,deltsfc,rjdayh2 real (kind=kind_io8) wei1y,wei2y - integer jdoy,jday,jh,jdow,mmm,mmp,mm,iret,monend,i,k,jm,jd,iy4, - & jy,mon1,is2,isx,kpd9,is1,l,nn,mon2,mon,is,kpdsno, - & kpdzor,kpdtsf,kpdwet,kpdscv,kpdacn,kpdais,kpdtg3,im,id, - & lugb,iy,len,lsoil,ih,kpdsmc,iprnt,me,m1,m2,k1,k2, - & kpdvet,kpdsot,kpdstc,kpdveg,jmsk,imsk,j,ialb + integer jdoy,jday,jh,jdow,mmm,mmp,mm,iret,monend,i,k,jm,jd,iy4, & + & jy,mon1,is2,isx,kpd9,is1,l,nn,mon2,mon,is,kpdsno, & + & kpdzor,kpdtsf,kpdwet,kpdscv,kpdacn,kpdais,kpdtg3,im,id, & + & lugb,iy,len,lsoil,ih,kpdsmc,iprnt,me,m1,m2,k1,k2, & + & kpdvet,kpdsot,kpdstc,kpdveg,jmsk,imsk,j,ialb & &, kpdvmn,kpdvmx,kpdslp,kpdabs,landice_cat integer kpdalb(4), kpdalf(2) ! - character*500 fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc, - & fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc,fnvegc, - & fnvetc,fnsotc,fnalbc2 + character*500 fntsfc,fnwetc,fnsnoc,fnzorc,fnalbc,fnaisc, & + & fntg3c,fnscvc,fnsmcc,fnstcc,fnacnc,fnvegc, & + & fnvetc,fnsotc,fnalbc2 & &, fnvmnc,fnvmxc,fnslpc,fnabsc - real (kind=kind_io8) tsfclm(len),tsfcl2(len), - & wetclm(len),snoclm(len), - & zorclm(len),albclm(len,4),aisclm(len), - & tg3clm(len),acnclm(len), - & cvclm (len),cvbclm(len),cvtclm(len), - & cnpclm(len), - & smcclm(len,lsoil),stcclm(len,lsoil), - & sliclm(len),scvclm(len),vegclm(len), - & vetclm(len),sotclm(len),alfclm(len,2) + real (kind=kind_io8) tsfclm(len),tsfcl2(len), & + & wetclm(len),snoclm(len), & + & zorclm(len),albclm(len,4),aisclm(len), & + & tg3clm(len),acnclm(len), & + & cvclm (len),cvbclm(len),cvtclm(len), & + & cnpclm(len), & + & smcclm(len,lsoil),stcclm(len,lsoil), & + & sliclm(len),scvclm(len),vegclm(len), & + & vetclm(len),sotclm(len),alfclm(len,2) & &, vmnclm(len),vmxclm(len),slpclm(len),absclm(len) real (kind=kind_io8) slmskh(imsk,jmsk) real (kind=kind_io8) outlat(len), outlon(len) @@ -8068,8 +8052,8 @@ subroutine clima(lugb,iy,im,id,ih,fh,len,lsoil, end subroutine clima !>\ingroup mod_sfcsub - subroutine fixrdc_tile(filename_raw, tile_num_ch, - & i_index, j_index, kpds, + subroutine fixrdc_tile(filename_raw, tile_num_ch, & + & i_index, j_index, kpds, & & var, mon, npts, me) use netcdf use machine , only : kind_io8 @@ -8222,22 +8206,21 @@ subroutine netcdf_err(error) end subroutine netcdf_err !>\ingroup mod_sfcsub - subroutine fixrdc(lugb,fngrib,kpds5,kpds7,mon,slmask, - & gdata,len,iret - &, imsk, jmsk, slmskh, gaus,blno, blto +!! reads in grib climatology files and interpolate to the input +!! grid. grib files should allow all the necessary parameters +!! to be extracted from the description records. + subroutine fixrdc(lugb,fngrib,kpds5,kpds7,mon,slmask, & + & gdata,len,iret & + &, imsk, jmsk, slmskh, gaus,blno, blto & &, outlat, outlon, me) use machine , only : kind_io8,kind_io4 use sfccyc_module, only : mdata implicit none - integer imax,jmax,ijmax,i,j,n,jret,inttyp,iret,imsk, - & jmsk,len,lugb,kpds5,mon,lskip,lgrib,ndata,lugi,me,kmami + integer imax,jmax,ijmax,i,j,n,jret,inttyp,iret,imsk, & + & jmsk,len,lugb,kpds5,mon,lskip,lgrib,ndata,lugi,me,kmami & &, jj,w3kindreal,w3kindint real (kind=kind_io8) wlon,elon,rnlat,dlat,dlon,rslat,blno,blto ! -! read in grib climatology files and interpolate to the input -! grid. grib files should allow all the necessary parameters -! to be extracted from the description records. -! ! character*500 fngrib ! character*80 fngrib, asgnstr @@ -8400,18 +8383,18 @@ subroutine fixrdc(lugb,fngrib,kpds5,kpds7,mon,slmask, end subroutine fixrdc !>\ingroup mod_sfcsub - subroutine fixrda(lugb,fngrib,kpds5,slmask, - & iy,im,id,ih,fh,gdata,len,iret - &, imsk, jmsk, slmskh, gaus,blno, blto + subroutine fixrda(lugb,fngrib,kpds5,slmask, & + & iy,im,id,ih,fh,gdata,len,iret & + &, imsk, jmsk, slmskh, gaus,blno, blto & &, outlat, outlon, me) use machine , only : kind_io8,kind_io4 use sfccyc_module, only : mdata implicit none - integer nrepmx,nvalid,imo,iyr,idy,jret,ihr,nrept,lskip,lugi, - & lgrib,j,ndata,i,inttyp,jmax,imax,ijmax,ij,jday,len,iret, - & jmsk,imsk,ih,kpds5,lugb,iy,id,im,jh,jd,jdoy,jdow,jm,me, - & monend,jy,iy4,kmami,iret2,jj,w3kindreal,w3kindint - real (kind=kind_io8) rnlat,rslat,wlon,elon,dlon,dlat,fh,blno, + integer nrepmx,nvalid,imo,iyr,idy,jret,ihr,nrept,lskip,lugi, & + & lgrib,j,ndata,i,inttyp,jmax,imax,ijmax,ij,jday,len,iret, & + & jmsk,imsk,ih,kpds5,lugb,iy,id,im,jh,jd,jdoy,jdow,jm,me, & + & monend,jy,iy4,kmami,iret2,jj,w3kindreal,w3kindint + real (kind=kind_io8) rnlat,rslat,wlon,elon,dlon,dlat,fh,blno, & & rjday,blto ! ! read in grib climatology/analysis files and interpolate to the input diff --git a/physics/sflx.f b/physics/sflx.f index 102d25fcd..5c0cf08ce 100644 --- a/physics/sflx.f +++ b/physics/sflx.f @@ -57,6 +57,7 @@ !!\param[in] snoalb real, max albedo over deep snow (fraction) !!\param[in] bexpp real, perturbation of soil type "b" parameter (perturbation) !!\param[in] xlaip real, perturbation of leave area index (perturbation) +!!\param[in] lheatstrg logical, flag for canopy heat storage parameterization !!\param[in,out] tbot real, bottom soil temp (\f$K\f$) (local yearly-mean sfc air temp) !!\param[in,out] cmc real, canopy moisture content (\f$m\f$) !!\param[in,out] t1 real, ground/canopy/snowpack eff skin temp (\f$K\f$) @@ -439,7 +440,7 @@ subroutine gfssflx &! --- input ! --- ... bexp sfc-perts, mgehne !> - Calculate perturbated soil type "b" parameter. -!! Following Gehne et al. (2018) \cite gehne_et_al_2018, a perturbation of LAI +!! Following Gehne et al. (2019) \cite Gehne_2019 , a perturbation of LAI !! "leaf area index" (xlaip) and a perturbation of the empirical exponent parameter !! b in the soil hydraulic conductivity calculation (bexpp) are added to account for !! the uncertainties of LAI and b associated with different vegetation types and soil