diff --git a/physics/PBL/SATMEDMF/satmedmfvdifq.F b/physics/PBL/SATMEDMF/satmedmfvdifq.F index 168ca80d2..5ebb947ac 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdifq.F +++ b/physics/PBL/SATMEDMF/satmedmfvdifq.F @@ -35,7 +35,7 @@ module satmedmfvdifq !! !! Incorporate the TTE-EDMF; if (tte_edmf=.true.), !! TKE-EDMF scheme becomes TTE-EDMF scheme and the variable 'te' -!! is read as TTE; if (tte_edmf=.false.), the variable 'te' is +!! is read as TTE; if (tte_edmf=.false.), the variable 'te' is !! read as TKE, 5/22/2025 !! !! @@ -85,12 +85,12 @@ end subroutine satmedmfvdifq_init !! (mfpbltq.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 !! (mfscuq.f). -!! \section detail_satmedmfvidfq GFS satmedmfvdifq Detailed Algorithm +!! \section detail_satmedmfvidfq GFS satmedmfvdifq Detailed Algorithm subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & & ntiw,ntke,grav,pi,rd,cp,rv,hvap,hfus,fv,eps,epsm1, & !The following three variables are for SA-3D-TKE & def_1,def_2,def_3,sa3dtke,dku3d_h,dku3d_e, & - & dv,du,tdt,rtg,u1,v1,t1,q1,usfco,vsfco,icplocn2atm, & + & dv,du,tdt,rtg,u1,v1,t1,q1,usfco,vsfco,use_oceanuv, & & swh,hlw,xmu,garea,zvfun,sigmaf, & & psk,rbsoil,zorl,u10m,v10m,fm,fh, & & tsea,heat,evap,stress,spd1,kpbl, & @@ -98,12 +98,12 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & & dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl,dkt,dku,tkeh, & & kinver,xkzm_m,xkzm_h,xkzm_s,dspfac,bl_upfr,bl_dnfr, & & rlmx,elmx,sfc_rlm,tc_pbl,use_lpt, & -!IVAI: canopy inputs from AQM +!IVAI: canopy inputs from AQM & do_canopy, cplaqm, claie, cfch, cfrt, cclu, cpopu, & !IVAI & ntqv,dtend,dtidx,index_of_temperature,index_of_x_wind, & & index_of_y_wind,index_of_process_pbl,gen_tend,ldiag3d, & - & errmsg,errflg) + & errmsg,errflg) !IVAI: aux arrays ! & naux2d,naux3d,aux2d,aux3d) @@ -158,7 +158,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & & dtend integer, intent(in) :: dtidx(:,:), index_of_temperature, & & index_of_x_wind, index_of_y_wind, index_of_process_pbl - integer, intent(in) :: icplocn2atm + logical, intent(in) :: use_oceanuv real(kind=kind_phys), intent(out) :: & & dusfc(:), dvsfc(:), & & dtsfc(:), dqsfc(:), & @@ -192,7 +192,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & integer lcld(im),kcld(im),krad(im),mrad(im) integer kx1(im), kb1(im), kpblx(im) ! - real(kind=kind_phys) te(im,km), tei(im,km-1), tke(im,km), + real(kind=kind_phys) te(im,km), tei(im,km-1), tke(im,km), & tteh(im,km), tesq(im,km-1),e2(im,0:km) ! real(kind=kind_phys) theta(im,km),thvx(im,km), thlvx(im,km), @@ -227,7 +227,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! real(kind=kind_phys) elm(im,km), ele(im,km), & ckz(im,km), chz(im,km), - & diss(im,km-1),prod(im,km-1), + & diss(im,km-1),prod(im,km-1), & bf(im,km-1), shr2(im,km-1), wush(im,km), & xlamue(im,km-1), xlamde(im,km-1), & gotvx(im,km), rlam(im,km-1) @@ -317,7 +317,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & real(kind=kind_phys) h1 real(kind=kind_phys) bfac, mffac - + real(kind=kind_phys) qice(im,km),qliq(im,km) !PCC_CANOPY------------------------------------ @@ -438,7 +438,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & km1 = km - 1 kmpbl = km / 2 kmscu = km / 2 -!> - Compute physical height of the layer centers and interfaces from +!> - Compute physical height of the layer centers and interfaces from !! the geopotential height (\p zi and \p zl) do k=1,km do i=1,im @@ -466,7 +466,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & do i=1,im gdx(i) = sqrt(garea(i)) enddo -!> - Initialize tke value at vertical layer centers and interfaces +!> - Initialize tke value at vertical layer centers and interfaces !! from tracer (\p tke and \p tkeh) do k=1,km do i=1,im @@ -583,11 +583,11 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & kcld(i) = km1 endif enddo -! +! !> - Compute a function for green vegetation fraction and surface roughness. !! Entrainment rate in updraft is a function of vegetation fraction and surface !! roughness length -! +! do i = 1,im tem = (sigmaf(i) - vegflo) / (vegfup - vegflo) tem = min(max(tem, 0.), 1.) @@ -598,7 +598,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo ! !> - Compute \f$\theta\f$(theta), and \f$q_l\f$(qlx), \f$\theta_e\f$(thetae), -!! \f$\theta_v\f$(thvx),\f$\theta_{l,v}\f$ (thlvx) including ice water +!! \f$\theta_v\f$(thvx),\f$\theta_{l,v}\f$ (thlvx) including ice water do k=1,km do i=1,im pix(i,k) = psk(i) / prslk(i,k) @@ -637,7 +637,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo enddo ! -!> - Compute an empirical cloud fraction based on +!> - Compute an empirical cloud fraction based on !! Xu and Randall (1996) \cite xu_and_randall_1996 do k = 1, km do i = 1, im @@ -688,7 +688,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! -!> - Initialize diffusion coefficients to 0 and calculate the total +!> - Initialize diffusion coefficients to 0 and calculate the total !! radiative heating rate (dku, dkt, radx) do k=1,km do i=1,im @@ -705,7 +705,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo !> - Compute stable/unstable PBL flag (pblflg) based on the total !! surface energy flux (\e false if the total surface energy flux -!! is into the surface) +!! is into the surface) do i = 1,im sflux(i) = heat(i) + evap(i)*fv*theta(i,1) if(.not.sfcflg(i) .or. sflux(i) <= 0.) pblflg(i)=.false. @@ -716,12 +716,12 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & !! - 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 +!! with the surface Rossby number, \f$R_{0}\f$, as given by !! Vickers and Mahrt (2004) \cite Vickers_2004 !! \f[ !! Rb_{cr}=0.16(10^{-7}R_{0})^{-0.18} !! \f] -!! \f[ +!! \f[ !! R_{0}=\frac{U_{10}}{f_{0}z_{0}} !! \f] !! where \f$U_{10}\f$ is the wind speed at 10m above the ground surface, @@ -753,7 +753,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ustar(i) = sqrt(stress(i)) enddo ! -!> - Compute buoyancy \f$\frac{\partial \theta_v}{\partial z}\f$ (bf) +!> - Compute buoyancy \f$\frac{\partial \theta_v}{\partial z}\f$ (bf) !! and the wind shear squared (shr2) ! do k = 1, km1 @@ -980,7 +980,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! !> - The \f$z/L\f$ (zol) is used as the stability criterion for the PBL.Currently, !! strong unstable (convective) PBL for \f$z/L < -0.02\f$ and weakly and moderately -!! unstable PBL for \f$0>z/L>-0.02\f$ +!! unstable PBL for \f$0>z/L>-0.02\f$ !> - Compute the velocity scale \f$w_s\f$ (wscale) (eqn 22 of Han et al. 2019). It !! is represented by the value scaled at the top of the surface layer: !! \f[ @@ -1172,11 +1172,11 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & do i = 1, im if(scuflg(i) .and. kcld(i)==km1) scuflg(i)=.false. enddo -!> - Starting at the PBL top and going downward, if the level is less +!> - Starting at the PBL top and going downward, if the level is less !! than the cloud top, find the level of the minimum radiative heating !! rate wihin the cloud. If the level of the minimum is the lowest model !! level or the minimum radiative heating rate is positive, then set -!! scuflg to F. +!! scuflg to F. do i = 1, im flg(i)=scuflg(i) enddo @@ -1202,7 +1202,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !> ## Compute components for mass flux mixing by large thermals !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!> - If the PBL is convective, the updraft properties are initialized +!> - If the PBL is convective, the updraft properties are initialized !! to be the same as the state variables. do k = 1, km do i = 1, im @@ -1236,7 +1236,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & & pcnvflg,zl,zm,q1,t1,u1,v1,plyr,pix,thlx,thvx, & gdx,hpbl,kpbl,vpert,buou,wush,tkemean,vez0fun,xmf, & tcko,qcko,ucko,vcko,xlamue,bl_upfr) -!> - Call mfscuq(), which is a new mass-flux parameterization for +!> - Call mfscuq(), which is a new mass-flux parameterization for !! stratocumulus-top-induced turbulence mixing. For details of the mfscuq subroutine, step into its documentation ::mfscuq call mfscuq(im,im,km,kmscu,ntcw,ntrac1,dt2, & scuflg,zl,zm,q1,t1,u1,v1,plyr,pix, @@ -1389,7 +1389,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & !! l_2=min(l_{up},l_{down}) !!\f] !! and dissipation length scale \f$l_d\f$ is given by: -!!\f[ +!!\f[ !! l_d=(l_{up}l_{down})^{1/2} !!\f] !! where \f$l_{up}\f$ and \f$l_{down}\f$ are the distances that a parcel @@ -1413,7 +1413,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! enddo enddo -!> - Compute the surface layer length scale (\f$l_1\f$) following +!> - Compute the surface layer length scale (\f$l_1\f$) following !! Nakanishi (2001) \cite Nakanish_2001 (eqn 9 of Han et al.(2019) \cite Han_2019) do k = 1, km1 do i = 1, im @@ -1581,7 +1581,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo enddo ! -! eddy diffusivities at model interface (zm level) in LES scale +! eddy diffusivities at model interface (zm level) in LES scale ! do k = 1, km1 do i = 1, im @@ -1614,7 +1614,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & do k = 2, kmpbl do i = 1, im if(tke(i,k) > tkemax(i)) then - tkemax(i) = tke(i,k) + tkemax(i) = tke(i,k) ktkemax(i) = k endif enddo @@ -1673,7 +1673,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo enddo ! -! eddy diffusivities at model layer (zl level) in LES scale +! eddy diffusivities at model layer (zl level) in LES scale ! do k = 1, km1 do i = 1, im @@ -1717,7 +1717,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & !PCC_CANOPY------------------------------------ kount=0 !IVAI - if (do_canopy .and. cplaqm) then + if (do_canopy .and. cplaqm) then !IVAI ! print*, 'SATMEDMFVDIFQ_RUN: CLAIE = ', claie(:) @@ -1774,7 +1774,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! & .OR. MAX(0.0, 1.0 - XCANOPYFRT) .GT. 0.5 ! & .OR. POPU .GT. 10000.0 ! & .OR. EXP(-0.5*XCANOPYLAI*XCANOPYCLU).GT. 0.45 -! & .AND. FCH .LT. 18.0 ) THEN +! & .AND. FCH .LT. 18.0 ) THEN dkt(i,k)= dkt(i,k) dkq(i,k)= dkq(i,k) @@ -1811,9 +1811,9 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & IF ( ZCAN/FCH .GT. 1.25 ) THEN !SIGMACAN = Eulerian vertical velocity variance SIGMACAN = 1.25*ustar(i) END IF - IF ( ZCAN/FCH .GE. 0.175 + IF ( ZCAN/FCH .GE. 0.175 & .AND. ZCAN/FCH .LE. 1.25 ) THEN - SIGMACAN = ustar(i) * ( 0.75 + + SIGMACAN = ustar(i) * ( 0.75 + & (0.5 * COS((PI/1.06818) * & (1.25 - (ZCAN/FCH)))) ) END IF @@ -1825,9 +1825,9 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & IF ( ZCAN/FCH .GT. 1.25 ) THEN SIGMACAN = 1.0*ustar(i) END IF - IF ( ZCAN/FCH .GE. 0.175 + IF ( ZCAN/FCH .GE. 0.175 & .AND. ZCAN/FCH .LE. 1.25 ) THEN - SIGMACAN = ustar(i) * ( 0.625 + + SIGMACAN = ustar(i) * ( 0.625 + & (0.375* COS((PI/1.06818) * & (1.25 - (ZCAN/FCH)))) ) END IF @@ -1839,12 +1839,12 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & IF ( ZCAN/FCH .GT. 1.25 ) THEN SIGMACAN = 0.25*(4.375 - (3.75*HOL))*ustar(i) END IF - IF ( ZCAN/FCH .GE. 0.175 + IF ( ZCAN/FCH .GE. 0.175 & .AND. ZCAN/FCH .LE. 1.25 ) THEN RRCAN=4.375-(3.75*HOL) AACAN=(0.125*RRCAN) + 0.125 BBCAN=(0.125*RRCAN) - 0.125 - SIGMACAN = ustar(i) * ( AACAN + + SIGMACAN = ustar(i) * ( AACAN + & (BBCAN * COS((PI/1.06818) * & (1.25 - (ZCAN/FCH)))) ) END IF @@ -2051,7 +2051,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & enddo ! !---------------------------------------------------------------------- -!> - First predict te due to te production & dissipation(diss) +!> - First predict te due to te production & dissipation(diss) ! if(sa3dtke) then !The following is for SA-3D-TKE @@ -3051,16 +3051,18 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & ! dvsfc(i) = dvsfc(i)+conw*del(i,k)*vtend enddo enddo - do i = 1,im - if(icplocn2atm == 0) then - dusfc(i) = -1.*rho_a(i)*stress(i)*u1(i,1)/spd1(i) - dvsfc(i) = -1.*rho_a(i)*stress(i)*v1(i,1)/spd1(i) - else if (icplocn2atm ==1) then + if (use_oceanuv) then + do i = 1,im spd1_m=sqrt( (u1(i,1)-usfco(i))**2+(v1(i,1)-vsfco(i))**2 ) dusfc(i) = -1.*rho_a(i)*stress(i)*(u1(i,1)-usfco(i))/spd1_m dvsfc(i) = -1.*rho_a(i)*stress(i)*(v1(i,1)-vsfco(i))/spd1_m - endif - enddo + enddo + else + do i = 1,im + dusfc(i) = -1.*rho_a(i)*stress(i)*u1(i,1)/spd1(i) + dvsfc(i) = -1.*rho_a(i)*stress(i)*v1(i,1)/spd1(i) + enddo + endif ! if(ldiag3d .and. .not. gen_tend) then idtend = dtidx(index_of_x_wind,index_of_process_pbl) diff --git a/physics/PBL/SATMEDMF/satmedmfvdifq.meta b/physics/PBL/SATMEDMF/satmedmfvdifq.meta index 533682c3e..002389307 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdifq.meta +++ b/physics/PBL/SATMEDMF/satmedmfvdifq.meta @@ -241,12 +241,12 @@ type = real kind = kind_phys intent = in -[icplocn2atm] - standard_name = control_for_air_sea_flux_computation_over_water +[use_oceanuv] + standard_name = do_air_sea_flux_computation_over_water long_name = air-sea flux option - units = 1 + units = flag dimensions = () - type = integer + type = logical intent = in [t1] standard_name = air_temperature diff --git a/physics/SFC_Layer/UFS/sfc_diag.f b/physics/SFC_Layer/UFS/sfc_diag.f index 66ec95c50..4c019f433 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.f +++ b/physics/SFC_Layer/UFS/sfc_diag.f @@ -14,7 +14,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & & lsm,lsm_ruc,grav,cp,eps,epsm1,con_rocp, & & con_karman, & & shflx,cdq,wind, & - & usfco,vsfco,icplocn2atm, & + & usfco,vsfco,use_oceanuv, & & zf,ps,u1,v1,t1,q1,prslki,evap,fm,fh,fm10,fh2, & & ust,tskin,qsurf,thsfc_loc,diag_flux,diag_log, & & use_lake_model,iopt_lake,iopt_lake_clm, & @@ -29,7 +29,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & ! integer, intent(in) :: im, lsm, lsm_ruc, iopt_lake, iopt_lake_clm logical, intent(in) :: use_lake2m - integer, intent(in) :: icplocn2atm + logical, intent(in) :: use_oceanuv logical, intent(in) :: thsfc_loc ! Flag for reference pot. temp. logical, intent(in) :: diag_flux ! Flag for flux method in 2-m diagnostics logical, intent(in) :: diag_log ! Flag for 2-m log diagnostics under stable conditions @@ -73,7 +73,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & errflg = 0 !-- - testptlat = 35.3_kind_phys + testptlat = 35.3_kind_phys testptlon = 273.0_kind_phys !-- debug_print = .false. @@ -89,13 +89,14 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & do i = 1, im f10m(i) = fm10(i) / fm(i) - if (icplocn2atm ==0) then - u10m(i) = f10m(i) * u1(i) - v10m(i) = f10m(i) * v1(i) - else if (icplocn2atm ==1) then + if (use_oceanuv) then u10m(i) = usfco(i)+f10m(i) * (u1(i)-usfco(i)) v10m(i) = vsfco(i)+f10m(i) * (v1(i)-vsfco(i)) + else + u10m(i) = f10m(i) * u1(i) + v10m(i) = f10m(i) * v1(i) endif + have_2m = use_lake_model(i)>0 .and. use_lake2m .and. & & iopt_lake==iopt_lake_clm if(have_2m) then @@ -181,9 +182,9 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & !no alternatives (yet) for unstable conditions Q2_alt = q2m(i) ENDIF - !-- Note: use of alternative diagnostics will make + !-- Note: use of alternative diagnostics will make ! it cooler and drier with stable stratification - t2m(i) = T2_alt + t2m(i) = T2_alt q2m(i) = Q2_alt endif ! log method for stable regime @@ -216,7 +217,7 @@ subroutine sfc_diag_run (im,xlat_d,xlon_d, & dpt2m(i) = 243.5_kind_dbl_prec/( ( 17.67_kind_dbl_prec / & & log(tem/611.2_kind_dbl_prec) ) - one) + con_t0c dpt2m(i) = min(dpt2m(i),t2m(i)) - + if (debug_print) then !-- diagnostics for a test point with known lat/lon diff --git a/physics/SFC_Layer/UFS/sfc_diag.meta b/physics/SFC_Layer/UFS/sfc_diag.meta index 9ec3213d3..200473b99 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.meta +++ b/physics/SFC_Layer/UFS/sfc_diag.meta @@ -140,12 +140,12 @@ type = real kind = kind_phys intent = in -[icplocn2atm] - standard_name = control_for_air_sea_flux_computation_over_water +[use_oceanuv] + standard_name = do_air_sea_flux_computation_over_water long_name = air-sea flux option - units = 1 + units = flag dimensions = () - type = integer + type = logical intent = in [t1] standard_name = air_temperature_at_surface_adjacent_layer diff --git a/physics/SFC_Layer/UFS/sfc_diff.f b/physics/SFC_Layer/UFS/sfc_diff.f index 3e09651d1..1087fa942 100644 --- a/physics/SFC_Layer/UFS/sfc_diff.f +++ b/physics/SFC_Layer/UFS/sfc_diff.f @@ -62,7 +62,7 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) & flag_iter,redrag, & !intent(in) & flag_lakefreeze,lakefrac,fice, & !intent(in) & u10m,v10m,sfc_z0_type, & !hafs,z0 type !intent(in) - & u1,v1,usfco,vsfco,icplocn2atm, & + & u1,v1,usfco,vsfco,use_oceanuv, & & wet,dry,icy, & !intent(in) & thsfc_loc, & !intent(in) & tskin_wat, tskin_lnd, tskin_ice, & !intent(in) @@ -87,13 +87,13 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) integer, parameter :: kp = kind_phys integer, intent(in) :: im, ivegsrc integer, intent(in) :: sfc_z0_type ! option for calculating surface roughness length over ocean - integer, intent(in) :: icplocn2atm ! option for including ocean current in the computation of flux + logical, intent(in) :: use_oceanuv ! option for including ocean current in the computation of flux integer, dimension(:), intent(in) :: vegtype logical, intent(in) :: redrag ! reduced drag coeff. flag for high wind over sea (j.han) logical, dimension(:), intent(in) :: flag_iter, dry, icy - logical, dimension(:), intent(in) :: flag_lakefreeze + logical, dimension(:), intent(in) :: flag_lakefreeze logical, dimension(:), intent(inout) :: wet logical, intent(in) :: thsfc_loc ! Flag for reference pressure in theta calculation @@ -298,7 +298,7 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) tvs = half * (tsurf_ice(i)+tskin_ice(i)) * virtfac else ! Use potential temperature referenced to 1000 hPa tvs = half * (tsurf_ice(i)+tskin_ice(i))/prsik1(i) - & * virtfac + & * virtfac endif z0max = max(zmin, min(0.01_kp * z0rl_ice(i), z1(i))) @@ -348,7 +348,7 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) ! the stuff now put into "stability" if (wet(i)) then ! Some open ocean - + zvfun(i) = zero if(thsfc_loc) then ! Use local potential temperature @@ -358,12 +358,12 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in) & * virtfac endif - if (icplocn2atm == 0) then + if (use_oceanuv) then + wind10m=sqrt((u10m(i)-usfco(i))**2+(v10m(i)-vsfco(i))**2) + windrel=sqrt((u1(i)-usfco(i))**2+(v1(i)-vsfco(i))**2) + else wind10m=sqrt(u10m(i)*u10m(i)+v10m(i)*v10m(i)) windrel=wind(i) - else if (icplocn2atm ==1) then - wind10m=sqrt((u10m(i)-usfco(i))**2+(v10m(i)-vsfco(i))**2) - windrel=sqrt((u1(i)-usfco(i))**2+(v1(i)-vsfco(i))**2) endif z0 = 0.01_kp * z0rl_wat(i) @@ -499,8 +499,8 @@ subroutine stability & z1i = one / z1 ! -! set background diffusivities with one for gdx >= xkgdx and -! as a function of horizontal grid size for gdx < xkgdx +! set background diffusivities with one for gdx >= xkgdx and +! as a function of horizontal grid size for gdx < xkgdx ! (i.e., gdx/xkgdx for gdx < xkgdx) ! if(gdx >= xkgdx) then @@ -645,7 +645,7 @@ SUBROUTINE znot_m_v6(uref, znotm) ! For high winds, try to fit available observational data ! ! Bin Liu, NOAA/NCEP/EMC 2017 -! +! ! uref(m/s) : wind speed at 10-m height ! znotm(meter): areodynamical roughness scale over water ! @@ -665,10 +665,10 @@ SUBROUTINE znot_m_v6(uref, znotm) & p31 = 1.255457892775006e+00, p30 = -1.663993561652530e+01, & p40 = 4.579369142033410e-04 - + if (uref >= 0.0 .and. uref <= 6.5 ) then - znotm = exp(p10 + uref * (p11 + uref * (p12 + uref*p13))) + znotm = exp(p10 + uref * (p11 + uref * (p12 + uref*p13))) elseif (uref > 6.5 .and. uref <= 15.7) then znotm = p20 + uref * (p21 + uref * (p22 + uref * (p23 & + uref * (p24 + uref * p25)))) @@ -729,16 +729,16 @@ SUBROUTINE znot_t_v6(uref, znott) znott = p10 + uref * (p11 + uref * (p12 + uref * (p13 & + uref * (p14 + uref * p15)))) elseif (uref > 15.4 .and. uref <= 21.6) then - znott = p20 + uref * (p21 + uref * (p22 + uref * (p23 + znott = p20 + uref * (p21 + uref * (p22 + uref * (p23 & + uref * (p24 + uref * p25)))) elseif (uref > 21.6 .and. uref <= 42.2) then - znott = p30 + uref * (p31 + uref * (p32 + uref * (p33 + znott = p30 + uref * (p31 + uref * (p32 + uref * (p33 & + uref * (p34 + uref * p35)))) elseif ( uref > 42.2 .and. uref <= 53.3) then - znott = p40 + uref * (p41 + uref * (p42 + uref * (p43 + znott = p40 + uref * (p41 + uref * (p42 + uref * (p43 & + uref * (p44 + uref * p45)))) elseif ( uref > 53.3 .and. uref <= 80.0) then - znott = p50 + uref * (p51 + uref * (p52 + uref * (p53 + znott = p50 + uref * (p51 + uref * (p52 + uref * (p53 & + uref * (p54 + uref * (p55 + uref * p56))))) elseif ( uref > 80.0) then znott = p60 diff --git a/physics/SFC_Layer/UFS/sfc_diff.meta b/physics/SFC_Layer/UFS/sfc_diff.meta index a44321b92..1dad98049 100644 --- a/physics/SFC_Layer/UFS/sfc_diff.meta +++ b/physics/SFC_Layer/UFS/sfc_diff.meta @@ -273,12 +273,12 @@ dimensions = () type = integer intent = in -[icplocn2atm] - standard_name = control_for_air_sea_flux_computation_over_water +[use_oceanuv] + standard_name = do_air_sea_flux_computation_over_water long_name = air-sea flux option - units = 1 + units = flag dimensions = () - type = integer + type = logical intent = in [wet] standard_name = flag_nonzero_wet_surface_fraction diff --git a/physics/SFC_Layer/UFS/sfc_nst.f90 b/physics/SFC_Layer/UFS/sfc_nst.f90 index 76d3411a8..eb84aa352 100644 --- a/physics/SFC_Layer/UFS/sfc_nst.f90 +++ b/physics/SFC_Layer/UFS/sfc_nst.f90 @@ -26,7 +26,7 @@ module sfc_nst !> \section NSST_general_algorithm GFS Near-Surface Sea Temperature Scheme General Algorithm subroutine sfc_nst_run & ( im, hvap, cp, hfus, jcal, eps, epsm1, rvrdm1, rd, rhw0, & ! --- inputs: - pi, tgice, sbc, ps, u1, v1, usfco, vsfco, icplocn2atm, t1, & + pi, tgice, sbc, ps, u1, v1, usfco, vsfco, use_oceanuv, t1, & q1, tref, cm, ch, lseaspray, fm, fm10, & prsl1, prslki, prsik1, prslk1, wet, use_lake_model, xlon, & sinlat, stress, & @@ -85,8 +85,8 @@ subroutine sfc_nst_run & ! ps - real, surface pressure (pa) im ! ! u1, v1 - real, u/v component of surface layer wind (m/s) im ! ! usfco, vsfco - real, u/v component of surface current (m/s) im ! - ! icplocn2atm - integer, option to include ocean surface 1 ! - ! current in the computation of flux ! + ! use_oceanuv - logical, option to include ocean surface 1 ! + ! current in the computation of flux ! ! t1 - real, surface layer mean temperature ( k ) im ! ! q1 - real, surface layer mean specific humidity im ! ! tref - real, reference/foundation temperature ( k ) im ! @@ -170,8 +170,8 @@ subroutine sfc_nst_run & ! --- inputs: integer, intent(in) :: im, kdt, ipr, nstf_name1, nstf_name4, nstf_name5 - integer, intent(in) :: icplocn2atm - + logical, intent(in) :: use_oceanuv + real (kind=kind_phys), intent(in) :: hvap, cp, hfus, jcal, eps, & epsm1, rvrdm1, rd, rhw0, sbc, pi, tgice real (kind=kind_phys), dimension(:), intent(in) :: ps, u1, v1, & @@ -320,15 +320,15 @@ subroutine sfc_nst_run & ! --- ... rcp = rho cp ch v - if (icplocn2atm ==0) then - rch(i) = rho_a(i) * cp * ch(i) * wind(i) - cmm(i) = cm (i) * wind(i) - chh(i) = rho_a(i) * ch(i) * wind(i) - else if (icplocn2atm ==1) then + if (use_oceanuv) then windrel= sqrt( (u1(i)-usfco(i))**2 + (v1(i)-vsfco(i))**2 ) rch(i) = rho_a(i) * cp * ch(i) * windrel cmm(i) = cm (i) * windrel chh(i) = rho_a(i) * ch(i) * windrel + else + rch(i) = rho_a(i) * cp * ch(i) * wind(i) + cmm(i) = cm (i) * wind(i) + chh(i) = rho_a(i) * ch(i) * wind(i) endif !> - Calculate latent and sensible heat flux over open water with tskin. diff --git a/physics/SFC_Layer/UFS/sfc_nst.meta b/physics/SFC_Layer/UFS/sfc_nst.meta index 80f468803..04c26399f 100644 --- a/physics/SFC_Layer/UFS/sfc_nst.meta +++ b/physics/SFC_Layer/UFS/sfc_nst.meta @@ -150,12 +150,12 @@ type = real kind = kind_phys intent = in -[icplocn2atm] - standard_name = control_for_air_sea_flux_computation_over_water +[use_oceanuv] + standard_name = do_air_sea_flux_computation_over_water long_name = air-sea flux option - units = 1 + units = flag dimensions = () - type = integer + type = logical intent = in [t1] standard_name = air_temperature_at_surface_adjacent_layer diff --git a/physics/SFC_Models/Ocean/UFS/sfc_ocean.F b/physics/SFC_Models/Ocean/UFS/sfc_ocean.F index a0410a51c..1721f248e 100644 --- a/physics/SFC_Models/Ocean/UFS/sfc_ocean.F +++ b/physics/SFC_Models/Ocean/UFS/sfc_ocean.F @@ -25,7 +25,7 @@ subroutine sfc_ocean_run & ! --- inputs: & ( im, hvap, cp, rd, eps, epsm1, rvrdm1, ps, u1, v1, t1, q1, & & tskin, cm, ch, lseaspray, fm, fm10, & - & usfco, vsfco, icplocn2atm, & + & usfco, vsfco, use_oceanuv, & & prsl1, prslki, wet, use_lake_model, wind, &, ! --- inputs & flag_iter, use_med_flux, dqsfc_med, dtsfc_med, & & qsurf, cmm, chh, gflux, evap, hflx, ep, & ! --- outputs @@ -40,7 +40,7 @@ subroutine sfc_ocean_run & ! call sfc_ocean ! ! inputs: ! ! ( im, ps, u1, v1, t1, q1, tskin, cm, ch, lseaspray, fm, fm10, ! -! usfco, vsfco, icplocn2atm, ! +! usfco, vsfco, use_oceanuv, ! ! prsl1, prslki, wet, use_lake_model, wind, flag_iter, ! ! use_med_flux, ! ! outputs: ! @@ -70,7 +70,7 @@ subroutine sfc_ocean_run & ! u1, v1 - real, u/v component of surface layer wind (m/s) im ! ! usfco - real, u component of surface ocean current (m/s) im ! ! vsfco - real, v component of surface ocean current (m/s) im ! -! icplocn2atm - integer, =1 if usfco and vsfco are used in the 1 ! +! use_oceanuv - logical, .t. if usfco and vsfco are used in the 1 ! ! computation of air-sea fluxes ! ! t1 - real, surface layer mean temperature ( k ) im ! ! q1 - real, surface layer mean specific humidity im ! @@ -123,7 +123,7 @@ subroutine sfc_ocean_run & ! logical, dimension(:), intent(in) :: flag_iter, wet integer, dimension(:), intent(in) :: use_lake_model - integer, intent(in) :: icplocn2atm + logical, intent(in) :: use_oceanuv ! logical, intent(in) :: use_med_flux @@ -182,15 +182,16 @@ subroutine sfc_ocean_run & if (use_med_flux) then q0(i) = max( q1(i), qmin ) rho(i) = prsl1(i) / (rd*t1(i)*(one + rvrdm1*q0(i))) - - if (icplocn2atm == 0) then - tem = ch(i) * wind(i) - cmm(i) = cm(i) * wind(i) - else if (icplocn2atm ==1) then + + if (use_oceanuv) then windrel(i)=sqrt( (u1(i)-usfco(i))**2+(v1(i)-vsfco(i))**2 ) tem = ch(i) * windrel(i) cmm(i) = cm(i) * windrel(i) + else + tem = ch(i) * wind(i) + cmm(i) = cm(i) * wind(i) endif + chh(i) = rho(i) * tem hflx(i) = dtsfc_med(i) @@ -207,16 +208,17 @@ subroutine sfc_ocean_run & ! --- ... rcp = rho cp ch v - if (icplocn2atm == 0) then - rch = rho(i) * cp * ch(i) * wind(i) - tem = ch(i) * wind(i) - cmm(i) = cm(i) * wind(i) - else if (icplocn2atm ==1) then + if (use_oceanuv) then windrel(i)=sqrt( (u1(i)-usfco(i))**2+(v1(i)-vsfco(i))**2 ) rch = rho(i) * cp * ch(i) * windrel(i) tem = ch(i) * windrel(i) cmm(i) = cm(i) * windrel(i) + else + rch = rho(i) * cp * ch(i) * wind(i) + tem = ch(i) * wind(i) + cmm(i) = cm(i) * wind(i) endif + chh(i) = rho(i) * tem !> - Calcualte sensible and latent heat flux over open water diff --git a/physics/SFC_Models/Ocean/UFS/sfc_ocean.meta b/physics/SFC_Models/Ocean/UFS/sfc_ocean.meta index c0955d440..69268ee19 100644 --- a/physics/SFC_Models/Ocean/UFS/sfc_ocean.meta +++ b/physics/SFC_Models/Ocean/UFS/sfc_ocean.meta @@ -102,12 +102,12 @@ type = real kind = kind_phys intent = in -[icplocn2atm] - standard_name = control_for_air_sea_flux_computation_over_water +[use_oceanuv] + standard_name = do_air_sea_flux_computation_over_water long_name = air-sea flux option - units = 1 + units = flag dimensions = () - type = integer + type = logical intent = in [t1] standard_name = air_temperature_at_surface_adjacent_layer diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 462137f45..5bb08acd9 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -4,7 +4,7 @@ The UFS Atmosphere, the atmospheric component of the UFS Weather Model, access runtime configurations from file \c input.nml. This file contains various namelists records that control aspects of the I/O, dynamics, physics etc. Most physics-related options are in -records \b &gfs_physics_nml. Some schemes have their own namelist records as described below. +records \b &gfs_physics_nml. Some schemes have their own namelist records as described below. - 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. @@ -15,8 +15,8 @@ gfdl_cloud_microphys_mod.F90. - Namelist \b &cires_ugwp_nml specifies options for the use of CIRES Unified Gravity Wave Physics Version 0. Both the SDF and the input.nml contain information about how to specify the physics suite. Some -of this information is redundant, and the user must make sure they are compatible.The safest -practice is to use the SDF and namelist provided for each suite, since those are supported +of this information is redundant, and the user must make sure they are compatible.The safest +practice is to use the SDF and namelist provided for each suite, since those are supported configurations. Changes to the SDF must be accompanied by corresponding changes to the namelist. While there is not a one-to-one correspondence between the namelist and the SDF, the tables below show some variables in the namelist that must match the SDF. @@ -26,14 +26,14 @@ show some variables in the namelist that must match the SDF.
NML Description
Option CCPP scheme or interstitial Description Default Value -
\b General \b options -
fhzero gfs_phys_time_vary hour between clearing of diagnostic buckets 0.0 -
h2o_phys h2ophys flag for stratosphere h2o scheme .false. -
ldiag3d see \a GFS_typedefs.F90 flag for 3D diagnostic fields .false. +
\b General \b options +
fhzero gfs_phys_time_vary hour between clearing of diagnostic buckets 0.0 +
h2o_phys h2ophys flag for stratosphere h2o scheme .false. +
ldiag3d see \a GFS_typedefs.F90 flag for 3D diagnostic fields .false.
qdiag3d see \a GFS_typedefs.F90 flag for 3D tracer diagnostic fields .false.
lssav see \a GFS_typedefs.F90 flag for storing diagnostics .false.
oz_phys_2015 ozphys_2015 flag for new (2015) ozone physics .false. -
fhcyc gfs_phys_time_vary frequency for surface data cycling in hours 0.0 +
fhcyc gfs_phys_time_vary frequency for surface data cycling in hours 0.0
use_ufo gfs_phys_time_vary flag for using unfiltered orography surface option .false.
add_fire_heat_flux lsm_ruc flag for fire heat flux .false.
ncld see \a GFS_typedefs.F90 number of hydrometeors 1 @@ -42,10 +42,10 @@ show some variables in the namelist that must match the SDF.
do_shum gfs_stochastics flag for stochastic SHUM option .false.
do_skeb gfs_stochastics flag for stochastic SKEB option .false.
do_sfcperts gfs_rrtmg_pre flag for stochastic surface perturbations option .false. -
imp_physics choice of microphysics scheme choice of microphysics scheme: \n +
imp_physics choice of microphysics scheme choice of microphysics scheme: \n
  • 6: WSMG microphysics scheme -
  • 8: Thompson microphysics scheme +
  • 8: Thompson microphysics scheme
  • 10: Morrison-Gettelman microphysics scheme
  • 11: GFDL microphysics scheme
  • 15: Ferrier-Aligo microphysics scheme @@ -104,54 +104,54 @@ show some variables in the namelist that must match the SDF.
  • .false.: not normalize cloud condensate
.false. -
ialb gfs_rrtmg_setup SW surface albedo control flag: \n +
ialb gfs_rrtmg_setup SW surface albedo control flag: \n
    -
  • 0: use climatology albedo, based on sfc type -
  • 1: use MODIS based albedo (RUC LSM) +
  • 0: use climatology albedo, based on sfc type +
  • 1: use MODIS based albedo (RUC LSM)
  • 2: use LSM albedo (Noah MP lsm)
0 -
iems gfs_rrtmg_setup LW surface emissivity control flag (ab 2-digit integer) : \n +
iems gfs_rrtmg_setup 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) +
  • =2 future development (not yet)
-
0 -
iaer gfs_rrtmg_setup 4-digit aerosol flag (dabc for aermdl, volcanic, LW, SW): \n + 0 +
iaer gfs_rrtmg_setup 4-digit aerosol flag (dabc for aermdl, volcanic, LW, SW): \n
  • d:tropospheric aerosol model scheme flag \n - =0 or none, opac-climatology aerosol scheme \n + =0 or none, opac-climatology aerosol scheme \n =1 use NASA GOCART climatology aerosol scheme \n =2 use NASA GOCART prognostic aerosol scheme \n =5 opac-clim new spectral mapping
  • a:=0 use background stratospheric aerosol \n =1 include stratospheric volcanic aerosol -
  • b:=0 no tropospheric aerosol in LW radiation \n +
  • b:=0 no tropospheric aerosol in LW radiation \n =1 include tropospheric aerosol in LW
  • c:=0 no tropospheric aerosol in SW radiation \n =1 include tropospheric aerosol in SW
1 -
ico2 gfs_rrtmg_setup \f$CO_2\f$ data source control flag:\n +
ico2 gfs_rrtmg_setup \f$CO_2\f$ data source control flag:\n
    -
  • 0: prescribed value (380 ppmv) -
  • 1: yearly global averaged annual mean from observations +
  • 0: prescribed value (380 ppmv) +
  • 1: yearly global averaged annual mean from observations
  • 2: monthly 15 degree horizontal resolution from observations
0 -
isubc_sw rrtmg_sw subgrid cloud approximation control flag in SW radiation: \n -
    -
  • 0: no McICA approximation in SW radiation +
isubc_sw rrtmg_sw 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 rrtmg_lw subgrid cloud approximation control flag in LW radiation: \n +
isubc_lw rrtmg_lw subgrid cloud approximation control flag in LW radiation: \n
    -
  • 0: no McICA approximation in LW radiation +
  • 0: no McICA approximation in LW radiation
  • 1: use McICA with prescribed permutatition seeds (test mode)
  • 2: use McICA with randomly generated permutation seeds
@@ -163,9 +163,9 @@ show some variables in the namelist that must match the SDF.
  • 3: discrete ordinates (Liou, 1973 \cite Liou_1973)
  • 2 -
    isol gfs_rrtmg_setup solar constant scheme control flag: \n +
    isol gfs_rrtmg_setup solar constant scheme control flag: \n
      -
    • 0: fixed value = 1366.0 \f$W m^{-2}\f$ (old standard) +
    • 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 @@ -203,28 +203,28 @@ show some variables in the namelist that must match the SDF.
    doGP_sgs_cnv rrtmgp_lw_main, rrtmgp_sw_main if true, include SubGrdiScale convective cloud in RRTMGP
    doGP_smearclds GFS_rrtmgp_cloud_mp if true, include implicit SubGridScale clouds in RRTMGP
    \b Parameters \b related \b to \b cumulus \b schemes -
    imfshalcnv choice of shallow convective scheme flag for mass flux shallow convective scheme:\n +
    imfshalcnv choice of shallow convective scheme 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) +
    • 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
    • 4: new Tiedtke scheme (CAPS) -
    • 0: modified Tiedtke's eddy-diffusion shallow convective scheme -
    • -1: no shallow convection used -
    +
  • 0: modified Tiedtke's eddy-diffusion shallow convective scheme +
  • -1: no shallow convection used +
  • 1 -
    imfdeepcnv choice of deep convective scheme flag for mass-flux deep convective scheme:\n +
    imfdeepcnv choice of deep convective scheme flag for mass-flux deep convective scheme:\n
    • -1: Chikira-Sugiyama deep convection (with \b cscnv = .T.) -
    • 1: July 2010 version of SAS convective scheme (operational version as of 2016) -
    • 2: scale- & aerosol-aware mass-flux deep convective scheme (2017) +
    • 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
    do_deep see \a GFS_typedefs.F90 consistency check for deep convection .true.
    shal_cnv gfs_suite_interstitial flag for calling shallow convection .false. -
    lmfshal gfs_rrtmg_pre flag for mass-flux shallow convection scheme in the cloud fraction calculation shal_cnv .and. (imfshalcnv > 0) +
    lmfshal gfs_rrtmg_pre flag for mass-flux shallow convection scheme in the cloud fraction calculation shal_cnv .and. (imfshalcnv > 0)
    lmfdeep2 gfs_rrtmg_pre flag for mass-flux deep convection scheme in the cloud fraction calculation imfdeepcnv == 2 .or. 3 .or.4
    random_clds gfs_phys_time_vary flag for whether clouds are random .false.
    trans_trac gfs_suite_interstitial flag for convective transport of tracers .false. @@ -235,7 +235,7 @@ show some variables in the namelist that must match the SDF.
    betamcu samfshalcnv, samfdeepcnv, cu_c3_driver tuning parameter for prognostic closure midlevel clouds 1.0
    betadcu samfshalcnv, samfdeepcnv, cu_c3_driver tuning parameter for prognostic closure deep clouds 2.0
    \b Parameters \b related \b to \b PBL \b scheme \b options -
    do_mynnedmf mynnedmf_wrapper flag to activate MYNN-EDMF scheme .false. +
    do_mynnedmf mynnedmf_wrapper flag to activate MYNN-EDMF scheme .false.
    dspheat \ref satmedmfvdifq flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes .false.
    satmedmf \ref satmedmfvdifq flag for calling scale-ware TKE-based EDMF PBL scheme .false.
    isatmedmf \ref satmedmfvdifq flag for scale-aware TKE-based moist EDMF scheme \n @@ -251,66 +251,66 @@ show some variables in the namelist that must match the SDF.
    xkzm_s \ref satmedmfvdifq sigma threshold for background mom. diffusion 1.0d0
    dspfac \ref satmedmfvdifq TKE dissipative heating factor 1.0
    bl_upfr \ref satmedmfvdifq updraft fraction in boundary layer mass flux scheme 0.13 -
    bl_dnfr \ref satmedmfvdifq downdraft fraction in boundary layer mass flux scheme 0.1 +
    bl_dnfr \ref satmedmfvdifq downdraft fraction in boundary layer mass flux scheme 0.1
    rlmx \ref satmedmfvdifq maximum allowed mixing length in boundary layer mass flux scheme 300.
    elmx \ref satmedmfvdifq maximum allowed dissipation mixing length in boundary layer mass flux scheme 300.
    sfc_rlm \ref satmedmfvdifq choice of near surface mixing lenghth in boundary layer mass flux scheme 0
    tc_pbl \ref satmedmfvdifq control for TC applications in the PBL scheme 0 -
    bl_mynn_mixlength mynnedmf_wrapper flag for different version of mixing length formulation \n +
    bl_mynn_mixlength mynnedmf_wrapper 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. +
    • 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 mynnedmf_wrapper flag to activate the mass-flux scheme \n +
    bl_mynn_edmf mynnedmf_wrapper flag to activate the mass-flux scheme \n
      -
    • 0: deactivate mass-flux scheme -
    • 1: activate dynamic multiplume mass-flux scheme -
    +
  • 0: deactivate mass-flux scheme +
  • 1: activate dynamic multiplume mass-flux scheme +
  • 0 -
    bl_mynn_edmf_mom mynnedmf_wrapper flag to activate the transport of momentum \n +
    bl_mynn_edmf_mom mynnedmf_wrapper 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 +
    • 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 mynnedmf_wrapper flag to activate the transport of TKE \n +
    bl_mynn_edmf_tke mynnedmf_wrapper flag to activate the transport of TKE \n
      -
    • 0: deactivate TKE transport in mass-flux scheme +
    • 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_tkeadvect mynnedmf_wrapper activate computation of TKE advection (not yet in use for FV3) \n +
    bl_mynn_tkeadvect mynnedmf_wrapper activate computation of TKE advection (not yet in use for FV3) \n
      -
    • false: deactivate TKE advection -
    • true: activate TKE advection -
    -
    .false. +
  • false: deactivate TKE advection +
  • true: activate TKE advection + +
  • .false.
    tke_budget mynnedmf_wrapper flag to activating TKE budget 0 -
    bl_mynn_cloudpdf mynnedmf_wrapper flag to determine which cloud PDF to use \n +
    bl_mynn_cloudpdf mynnedmf_wrapper 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 +
    • 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 mynnedmf_wrapper flag to activate mixing of cloud species \n +
    bl_mynn_edmf_cloudmix mynnedmf_wrapper 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 +
    • 0: deactivate the mixing of any water species mixing ratios +
    • 1: activate the mixing of all water species mixing ratios
    1 -
    bl_mynn_mixqt mynnedmf_wrapper flag to mix total water or individual species \n +
    bl_mynn_mixqt mynnedmf_wrapper flag to mix total water or individual species \n
      -
    • 0: mix individual water species separately -
    • 1: DO NOT USE +
    • 0: mix individual water species separately +
    • 1: DO NOT USE
    0 -
    icloud_bl mynnedmf_wrapper flag to coupling SGS clouds to radiation \n +
    icloud_bl mynnedmf_wrapper flag to coupling SGS clouds to radiation \n
      -
    • 0: deactivate coupling subgrid clouds to radiation -
    • 1: activate subgrid cloud coupling to radiation (highly suggested) +
    • 0: deactivate coupling subgrid clouds to radiation +
    • 1: activate subgrid cloud coupling to radiation (highly suggested)
    1
    bl_mynn_closure mynnedmf_wrapper flag to determine closure level of MYNN \n @@ -343,7 +343,7 @@ show some variables in the namelist that must match the SDF.
    \b Parameters \b related \b to \b microphysics \b scheme \b options
    lradar gfdl_cloud_microphys flag for computing radar reflectivity in Thompson MP scheme .false.
    sedi_transport gfdl_cloud_microphys flag for turning on horizontal momentum transport during sedimentation .true. -
    do_sedi_w gfdl_cloud_microphys \a .true. to turn on vertical motion transport during sedimentation. (not supported in GFS physics) .false. +
    do_sedi_w gfdl_cloud_microphys \a .true. to turn on vertical motion transport during sedimentation. (not supported in GFS physics) .false.
    do_sedi_heat gfdl_cloud_microphys flag for turning on horizontal heat transport during sedimentation .true.
    rad_snow gfdl_cloud_microphys flag for considering snow in cloud fraction calculation .true.
    rad_graupel gfdl_cloud_microphys flag for considering graupel in cloud fraction calculation .true. @@ -406,7 +406,7 @@ show some variables in the namelist that must match the SDF.
    sat_adj0 gfdl_cloud_microphys adjust factor for condensation of water vapor to cloud water (water vapor->cloud water) and deposition of water vapor to cloud ice 0.9
    use_ppm gfdl_cloud_microphys \e true to use PPM fall scheme; \e false to use time-implicit monotonic fall scheme .false.
    use_ccn gfdl_cloud_microphys \e true to compute prescribed CCN. It should be .true. when \p prog_ccn = .false. .false. -
    mono_prof gfdl_cloud_microphys \e true to turn on terminal fall with monotonic PPM scheme. This is used together with \p use_ppm=.true. .true. +
    mono_prof gfdl_cloud_microphys \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 \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud water to rain .true.
    z_slope_ice gfdl_cloud_microphys \e true to turn on vertically subgrid linear monotonic slope for autoconversion of cloud ice to snow .false.
    de_ice gfdl_cloud_microphys \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. @@ -425,7 +425,7 @@ show some variables in the namelist that must match the SDF.
    nsfullradar_diag seconds between resetting radar reflectivity calculation .-999.0
    ttendlim mp_thompson temperature tendency limiter per time step in K/s, set to < 0 to deactivate -999.0
    ext_diag_thompson mp_thompson flag for extended diagnostic output from Thompson MP .false. -
    thompson_ext_ndiag3d mp_thompson number of 3d arrays for extended diagnostic output from Thompson MP 37 +
    thompson_ext_ndiag3d mp_thompson number of 3d arrays for extended diagnostic output from Thompson MP 37
    dt_inner mp_thompson time step for the inner loop in second -999.0
    sedi_semi mp_thompson flag for semi Lagrangian sedi of rain .false.
    decfl mp_thompson deformed CFL factor 8 @@ -433,7 +433,7 @@ show some variables in the namelist that must match the SDF.
    cnvcld see \a GFS_typedefs.F90 flag for convective cloud .false.
    xr_cnvcld GFS_rrtmg_pre flag for including suspended convective clouds in Xu-Randall cloud fraction .true.
    lgfdlmprad gfs_rrtmg_pre flag for GFDL mp scheme and radiation consistency .false. -
    nssl_cccn mp_nssl CCN concentration (m^-3) 0.6e9 +
    nssl_cccn mp_nssl CCN concentration (m^-3) 0.6e9
    nssl_alphah mp_nssl graupel PSD shape parameter 0.0
    nssl_alphahl mp_nssl hail PSD shape parameter 1.0
    nssl_alphar mp_nssl PSD shape parameter for rain 0.0 @@ -444,7 +444,7 @@ show some variables in the namelist that must match the SDF.
    ssl_ccn_on mp_nssl NSSL flag to activate the CCN category .true.
    nssl_invertccn mp_nssl NSSL flag to treat CCN as activated (.true.) or unactivated (.false.) .true.
    \b Parameters \b related \b to \b gravity \b drag \b scheme \b options -
    knob_ugwp_version cires_ugwp parameter selects a version of the UGWP implementation in FV3GFS-127L \n +
    knob_ugwp_version cires_ugwp parameter selects a version of the UGWP implementation in FV3GFS-127L \n
    • 0: default version delivered to EMC in Jan 2019 for implementation
    • 1: version of UGWP under development that plans to consider the physics-based sources of NGWs (\b knob_ugwp_wvspec [2:4]), options for stochastic and deterministic excitation of waves (\b knob_ugwp_stoch), and switches between different UGWP schemes (\b knob_ugwp_solver) @@ -488,10 +488,10 @@ show some variables in the namelist that must match the SDF. (4) \b knob_ugwp_wvspec[4] represents number of wave excited by dynamical imbalances that may mimic both convective and front-jet mechanisms of GW triggering. \n In UGWP v0, first two elements of the array, \b knob_ugwp_wvspec(1:2), control number of waves for stationary (OGW) and nonstationary waves (NGWs).
    1,32,32,32 -
    knob_ugwp_azdir cires_ugwp four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively. +
    knob_ugwp_azdir cires_ugwp four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively. 2,4,4,4
    knob_ugwp_stoch cires_ugwp four-dimensional array that control stochastic selection of GWs triggered by four types of physics-based sources. \n - Default values:0,0,0,0 - reflect determinstic selection of GW parameters without stochastic selection + Default values:0,0,0,0 - reflect determinstic selection of GW parameters without stochastic selection 0,0,0,0
    knob_ugwp_effac cires_ugwp four-dimensional array that control efficiency of GWs triggerd by four types of physics-based sources. \n Default values: 1.,1.,1.,1. - reflect that calculated GW-tendencies will be applied for the model state. @@ -499,12 +499,12 @@ show some variables in the namelist that must match the SDF.
    knob_ugwp_tauamp ugwpv1_gsldrag amplitude for GEOS-5/MERRA-2 7.75e-3
    launch_level cires_ugwp parameter has been introduced by EMC during implementation. It defines the interface model level from the surface at which NGWs are launched. \n Default value for FV3GFS-64L, launch_level=25 and for FV3GFS-128L, launch_level=52. - 55 -
    ldiag_ugwp cires_ugwp flag for CIRES UGWP diagnostics .false. + 55 +
    ldiag_ugwp cires_ugwp flag for CIRES UGWP diagnostics .false.
    do_ugwp cires_ugwp flag for CIRES UGWP revised OGW \n
    • .T.: revised gwdps_v0 -
    • .F.: GFS operational orographic gwdps +
    • .F.: GFS operational orographic gwdps
    .false.; The CIRES Unified Gravity Wave Physics (cires_ugwp) scheme is used in GFSv15p2 and GFSv16beta SDFs with do_ugwp=F in the namelist. In this setting, the cires_ugwp calls the operational GFS v15.2 orographic gravity wave drag (gwdps) scheme. When do_ugwp=.T., the cires_ugwp scheme calls an experimental orographic gravity wave (gwdps_v0)
    do_tofd cires_ugwp flag for turbulent orographic form drag .false. @@ -519,7 +519,7 @@ show some variables in the namelist that must match the SDF. 2.0,0.25,1.0,1.0
    nmtvr cires_ugwp number of topographic variables such as variance etc used in the GWD parameterization-10 more added if GSL orographic drag scheme is used 14
    cgwf cires_ugwp, unified_ugwp multiplication factor for convective GWD 0.5d0,0.05d0 -
    do_gwd see \a GFS_typedefs.F90 flag for gravity wave drag maxval(cdmbgwd) > 0.0 +
    do_gwd see \a GFS_typedefs.F90 flag for gravity wave drag maxval(cdmbgwd) > 0.0
    gwd_opt drag_suite flag for GWD scheme \n
    • 1: original GFS GWD @@ -552,19 +552,19 @@ show some variables in the namelist that must match the SDF.
    lsoil lsm_noah number of soil layers 4
    lsoil_lsm GFS_phys_time_vary.scm.F90 number of soil layers internal to land surface model; -1 use lsoil -1
    rdlai lsm_ruc flag to read leaf area index from input files .false. -
    ivegsrc lsm_noah, lsm_ruc, noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n +
    ivegsrc lsm_noah, lsm_ruc, noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n
      -
    • 0: USGS -
    • 1: IGBP(20 category): IGBP must be selected if NoahMP is used -
    • 2: UMD (13 category) +
    • 0: USGS +
    • 1: IGBP(20 category): IGBP must be selected if NoahMP is used +
    • 2: UMD (13 category)
    • 3: NLCD40 (40 category, NOAH WRFv4 only)
    • 4: USGS-RUC (28 category, NOAH WRFv4 only)
    • 5: MODIS-RUC (21 category, NOAH WRFv4 only)
    2 -
    isot lsm_noah, lsm_ruc, noahmpdrv flag for soil type dataset choice:\n -
      -
    • 0: Zobler soil type (9 category) +
    isot lsm_noah, lsm_ruc, noahmpdrv flag for soil type dataset choice:\n +
      +
    • 0: Zobler soil type (9 category)
    • 1: STATSGO soil type (19 category): STATSGO must be selected if NoahMP is used
    • 2: STAS-RUC soil type (19 category, NOAH WRFv4 only
    @@ -592,7 +592,7 @@ show some variables in the namelist that must match the SDF.
    iopt_btr noahmpdrv options for soil moisture factor for stomatal resistance \n
    • 1: Noah (soil moisture) -
    • 2: CLM (matric potential) +
    • 2: CLM (matric potential)
    • 3: SSIB (matric potential)
    1 @@ -658,12 +658,12 @@ show some variables in the namelist that must match the SDF.
  • 3: same as 1, but fsno for ts calculation (generally improve snow; v3.7)
  • 1 -
    iopt_trs noahmpdrv options for thermal roughness scheme:\n +
    iopt_trs noahmpdrv options for thermal roughness scheme:\n
      -
    • 1: z0h=z0m +
    • 1: z0h=z0m
    • 2: canopy based czil -
    • 3: ec -
    • 4: kb inversed +
    • 3: ec +
    • 4: kb inversed
    2
    iopt_diag noampdrv options for surface 2-m t/q diagnostic approach: \n @@ -673,25 +673,25 @@ show some variables in the namelist that must match the SDF.
  • 3: NoahMP2-title + internal GFS sfc_diag
  • 2 -
    mosaic_lu lsm_ruc control for use of fractional landuse in RUC land surface model +
    mosaic_lu lsm_ruc control for use of fractional landuse in RUC land surface model
    • 1: use of fractional landuse in RUC LSM
    0 -
    mosaic_soil lsm_ruc control for use of fractional soil in RUC land surface model +
    mosaic_soil lsm_ruc control for use of fractional soil in RUC land surface model
    • 1: use of fractional soil in RUC LSM
    0 -
    isncond_opt lsm_ruc control for soil thermal conductivity option in RUC land surface model +
    isncond_opt lsm_ruc control for soil thermal conductivity option in RUC land surface model
    • 1: constant
    • 2: Sturm et al.(1997) \cite sturm_1997
    1 -
    isncovr_opt lsm_ruc control for snow cover fraction option in RUC land surface model +
    isncovr_opt lsm_ruc control for snow cover fraction option in RUC land surface model
      -
    • 1: original formulation using threshold snow depth to compute snow fraction +
    • 1: original formulation using threshold snow depth to compute snow fraction
    • 2: Niu-Yang(2007) \cite Niu_2007
    • 3: updated Niu-Yang similar to Noah MP
    @@ -704,7 +704,7 @@ show some variables in the namelist that must match the SDF.
    use_lake2m clm_lake use 2m T&Q from CLM lake model .false.
    clm_debug_print enables prints in clm_lake .false.
    clm_lake_debug verbose debugging in clm_lake .false. -
    nstf_name(5) sfc_nst NSST related paramters:\n +
    nstf_name(5) sfc_nst NSST related paramters:\n
    • nstf_name(1): 0=NSST off, 1= NSST on but uncoupled, 2= NSST on and coupled
    • nstf_name(2): 1=NSST spin up on, 0=NSST spin up off @@ -716,7 +716,7 @@ show some variables in the namelist that must match the SDF.
    nst_anl gfs_phys_time_vary flag for NSST analysis in gcycle/sfcsub .false.
    frac_grid GFS_suite_interstitial_2, GFS_radiation_surface,GFS_surface_composite_pre, GFS_surface_composite_post, GFS_phys_time_vary, sfc_nst_post, lsm_ruc, clm_lake flag for fractional grid .false.
    frac_ice clm_lake, GFS_surface_composites_post flag for lake fractional ice when fractional grid is not in use .true. -
    min_lakeice fractional grid minimum lake ice value 0.15d0 +
    min_lakeice fractional grid minimum lake ice value 0.15d0
    min_seaice fractional grid minimum sea ice value 1.0d-11
    min_lake_height fractional grid minimum lake height value 250.0
    sfc_z0_type sfc_diff surface roughness options over ocean \n @@ -727,26 +727,23 @@ show some variables in the namelist that must match the SDF.
  • negative when cplwav2atm=.true. - i.e. two way wave coupling
  • 0 -
    icplocn2atm satmedmfvdifq, sfc_diff, sfc_diag, sfc_nst, sfc_ocean air-sea flux options over ocean \n -
      -
    • 0: ocean current is not used in the computation of air-sea fluxes -
    • 1: including ocean current in the computation of air-sea fluxes -
    +
    use_oceanuv satmedmfvdifq, sfc_diff, sfc_diag, sfc_nst, sfc_ocean flag for air-sea flux computation over water \n +
    0
    redrag sfc_diff flag for applying reduced drag coefficient for high wind over sea in GFS surface layer scheme .false.
    lheatstrg gfs_surface_generic_post flag for canopy heat storage parameterization .false. -
    z0fac gfs_surface_generic_post surface roughness fraction factor 0.3 +
    z0fac gfs_surface_generic_post surface roughness fraction factor 0.3
    e0fac gfs_surface_generic_post latent heat flux fraction factor relative to sensible heat flux,e.g., e0fac=0.5 indicates that canopy heat storage for latent heat flux is 50% of that for sensible heat flux 0.5 -
    isftcflx mynnsfc_wrapper flag for thermal roughness lengths over water in MYNN-SFCLAY +
    isftcflx mynnsfc_wrapper flag for thermal roughness lengths over water in MYNN-SFCLAY
      -
    • 0: z0,zt, and zq from the COARE algorithm. +
    • 0: z0,zt, and zq from the COARE algorithm.
    • 1: z0 from Davis et al.(2008), zt&zq from COARE 3.0/3.5
    • 2: z0 from Davis et al.(2008), zt&zq from Garratt (1992)
    • 3: z0 from Taylor and Yelland (2004), zt and zq from COARE 3.0/3.5
    • 4: GFS -taken from sfc_diff.f, for comparison/testing
    0 -
    iz0tlnd mynnsfc_wrapper flag for thermal roughness lengths over land in MYNN-SFCLAY +
    iz0tlnd mynnsfc_wrapper flag for thermal roughness lengths over land in MYNN-SFCLAY
    • 0: Zilitinkevich (1995) \cite Zilitinkevich_1995; Czil now set to 0.095
    • 1: Czil_new (modified according to Chen and Zhang (2009) \cite chen_and_zhang_2009) @@ -776,7 +773,7 @@ show some variables in the namelist that must match the SDF.
    kice sfc_sice number of layers in ice 2
    lrefres flag for radar reflectivity in restart file .false.
    \b Parameters \b related \b to \b SRW \b smoke \b and \b dust \b scheme \b options -
    dust_drylimit_factor rrfs_smoke_wrapper factor for drylimit parameeterization in Fengsha 1.0 +
    dust_drylimit_factor rrfs_smoke_wrapper factor for drylimit parameeterization in Fengsha 1.0
    dust_moist_correction rrfs_smoke_wrapper factor to tune volumetric soil moisture 1.0
    dust_moist_opt rrfs_smoke_wrapper dust moisture option 1:fecan 2:shao 1
    dust_alpha rrfs_smoke_wrapper alpha paramter for fengsha dust scheme 0.