From 9326cec02be32bec039557e4e1379de909a46f24 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 23 Jul 2021 07:12:49 -0600 Subject: [PATCH 01/14] Wrapper PR for: Thompson inner loop, Thompson subcycling bugfix, remove snet from noah lsm, fix time dimension in restart files (#350) - Update of submodule pointers for ccpp-physics for the changes listed below - Thompson inner loop from @RuiyuSun - Thompson subcycling bugfix from @climbfuji - Noah/NoahMP bugfix/remove snet from Noah LSM from @HelinWei-NOAA - Fix time dimension in restart files from @climbfuji Co-authored-by: Helin Wei Co-authored-by: Ruiyu Sun --- ccpp/data/GFS_typedefs.F90 | 28 +-- ccpp/data/GFS_typedefs.meta | 7 + ccpp/physics | 2 +- io/FV3GFS_io.F90 | 348 ++++++++++++++++++------------------ io/post_gfs.F90 | 61 ++++++- 5 files changed, 252 insertions(+), 194 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 3eacfba96..a00b095f8 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -811,6 +811,7 @@ module GFS_typedefs real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson integer :: thompson_ext_ndiag3d=37 !< number of 3d arrays for extended diagnostic output from Thompson + real(kind=kind_phys) :: dt_inner !< time step for the inner loop in s !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency @@ -2369,6 +2370,10 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate (Sfcprop%weasdl (IM)) ! allocate (Sfcprop%hprim (IM)) allocate (Sfcprop%hprime (IM,Model%nmtvr)) + allocate(Sfcprop%albdvis_lnd (IM)) + allocate(Sfcprop%albdnir_lnd (IM)) + allocate(Sfcprop%albivis_lnd (IM)) + allocate(Sfcprop%albinir_lnd (IM)) allocate (Sfcprop%emis_lnd (IM)) Sfcprop%slmsk = clear_val @@ -2392,6 +2397,10 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%weasdl = clear_val ! Sfcprop%hprim = clear_val Sfcprop%hprime = clear_val + Sfcprop%albdvis_lnd = clear_val + Sfcprop%albdnir_lnd = clear_val + Sfcprop%albivis_lnd = clear_val + Sfcprop%albinir_lnd = clear_val Sfcprop%emis_lnd = clear_val !--- In (radiation only) @@ -2546,20 +2555,12 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate(Sfcprop%iceprv (IM)) allocate(Sfcprop%snowprv (IM)) allocate(Sfcprop%graupelprv(IM)) - allocate(Sfcprop%albdvis_lnd (IM)) - allocate(Sfcprop%albdnir_lnd (IM)) - allocate(Sfcprop%albivis_lnd (IM)) - allocate(Sfcprop%albinir_lnd (IM)) Sfcprop%raincprv = clear_val Sfcprop%rainncprv = clear_val Sfcprop%iceprv = clear_val Sfcprop%snowprv = clear_val Sfcprop%graupelprv = clear_val - Sfcprop%albdvis_lnd = clear_val - Sfcprop%albdnir_lnd = clear_val - Sfcprop%albivis_lnd = clear_val - Sfcprop%albinir_lnd = clear_val end if ! Noah MP allocate and init when used ! @@ -3232,6 +3233,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys) :: nsradar_reset = -999.0 !< seconds between resetting radar reflectivity calculation, set to <0 for every time step real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate logical :: ext_diag_thompson = .false. !< flag for extended diagnostic output from Thompson + real(kind=kind_phys) :: dt_inner = -999.0 !< time step for the inner loop !--- GFDL microphysical parameters logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction @@ -3585,7 +3587,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, & mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, & ltaerosol, lradar, nsradar_reset, lrefres, ttendlim, & - ext_diag_thompson, lgfdlmprad, & + ext_diag_thompson, dt_inner, lgfdlmprad, & !--- max hourly avg_max_length, & !--- land/surface model control @@ -4025,7 +4027,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%nsradar_reset = nsradar_reset Model%ttendlim = ttendlim Model%ext_diag_thompson= ext_diag_thompson - + if (dt_inner>0) then + Model%dt_inner = dt_inner + else + Model%dt_inner = Model%dtp + endif !--- F-A MP parameters Model%rhgrd = rhgrd Model%spec_adv = spec_adv @@ -5093,6 +5099,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & ' ltaerosol = ',Model%ltaerosol, & ' ttendlim =',Model%ttendlim, & ' ext_diag_thompson =',Model%ext_diag_thompson, & + ' dt_inner =',Model%dt_inner, & ' effr_in =',Model%effr_in, & ' lradar =',Model%lradar, & ' nsradar_reset =',Model%nsradar_reset, & @@ -5505,6 +5512,7 @@ subroutine control_print(Model) print *, ' lrefres : ', Model%lrefres print *, ' ttendlim : ', Model%ttendlim print *, ' ext_diag_thompson : ', Model%ext_diag_thompson + print *, ' dt_inner : ', Model%dt_inner print *, ' ' endif if (Model%imp_physics == Model%imp_physics_mg) then diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 42c6fc674..f6a331196 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -3479,6 +3479,13 @@ units = count dimensions = () type = integer +[dt_inner] + standard_name = time_step_for_inner_loop + long_name = time step for inner loop + units = s + dimensions = () + type = real + kind = kind_phys [lgfdlmprad] standard_name = flag_for_GFDL_microphysics_radiation_interaction long_name = flag for GFDL microphysics-radiation interaction diff --git a/ccpp/physics b/ccpp/physics index 09faa73b9..610fbcb9c 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 09faa73b9659a682e904b35ee6c6e127a4c4c2cf +Subproject commit 610fbcb9cda926b4a734e9479784f79bdae85c15 diff --git a/io/FV3GFS_io.F90 b/io/FV3GFS_io.F90 index 5e73ee1c7..03c9ebfda 100644 --- a/io/FV3GFS_io.F90 +++ b/io/FV3GFS_io.F90 @@ -180,7 +180,7 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) nsfcprop2d = nsfcprop2d + 1 endif else - nsfcprop2d = 102 + nsfcprop2d = 107 endif allocate (temp2d(isc:iec,jsc:jec,nsfcprop2d+Model%ntot3d+Model%nctp)) @@ -305,8 +305,13 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,84) = GFS_Data(nb)%Radtend%sfcflw(ix)%dnfx0 temp2d(i,j,85) = GFS_Data(nb)%Sfcprop%tiice(ix,1) temp2d(i,j,86) = GFS_Data(nb)%Sfcprop%tiice(ix,2) + temp2d(i,j,87) = GFS_Data(nb)%Sfcprop%albdvis_lnd(ix) + temp2d(i,j,88) = GFS_Data(nb)%Sfcprop%albdnir_lnd(ix) + temp2d(i,j,89) = GFS_Data(nb)%Sfcprop%albivis_lnd(ix) + temp2d(i,j,90) = GFS_Data(nb)%Sfcprop%albinir_lnd(ix) + temp2d(i,j,91) = GFS_Data(nb)%Sfcprop%emis_lnd(ix) - idx_opt = 87 + idx_opt = 92 if (Model%lsm == Model%lsm_noahmp) then temp2d(i,j,idx_opt) = GFS_Data(nb)%Sfcprop%snowxy(ix) temp2d(i,j,idx_opt+1) = GFS_Data(nb)%Sfcprop%tvxy(ix) @@ -358,11 +363,6 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,idx_opt+46) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,2) temp2d(i,j,idx_opt+47) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,3) temp2d(i,j,idx_opt+48) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,4) - temp2d(i,j,idx_opt+49) = GFS_Data(nb)%Sfcprop%albdvis_lnd(ix) - temp2d(i,j,idx_opt+50) = GFS_Data(nb)%Sfcprop%albdnir_lnd(ix) - temp2d(i,j,idx_opt+51) = GFS_Data(nb)%Sfcprop%albivis_lnd(ix) - temp2d(i,j,idx_opt+52) = GFS_Data(nb)%Sfcprop%albinir_lnd(ix) - temp2d(i,j,idx_opt+53) = GFS_Data(nb)%Sfcprop%emis_lnd(ix) idx_opt = 141 elseif (Model%lsm == Model%lsm_ruc) then temp2d(i,j,idx_opt) = GFS_Data(nb)%Sfcprop%wetness(ix) @@ -375,19 +375,14 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,idx_opt+7) = GFS_Data(nb)%Sfcprop%snowfallac_land(ix) temp2d(i,j,idx_opt+8) = GFS_Data(nb)%Sfcprop%snowfallac_ice(ix) temp2d(i,j,idx_opt+9) = GFS_Data(nb)%Sfcprop%sncovr_ice(ix) - temp2d(i,j,idx_opt+10) = GFS_Data(nb)%Sfcprop%albdvis_lnd(ix) - temp2d(i,j,idx_opt+11) = GFS_Data(nb)%Sfcprop%albdnir_lnd(ix) - temp2d(i,j,idx_opt+12) = GFS_Data(nb)%Sfcprop%albivis_lnd(ix) - temp2d(i,j,idx_opt+13) = GFS_Data(nb)%Sfcprop%albinir_lnd(ix) - temp2d(i,j,idx_opt+14) = GFS_Data(nb)%Sfcprop%sfalb_lnd(ix) - temp2d(i,j,idx_opt+15) = GFS_Data(nb)%Sfcprop%sfalb_lnd_bck(ix) - temp2d(i,j,idx_opt+16) = GFS_Data(nb)%Sfcprop%albdvis_ice(ix) - temp2d(i,j,idx_opt+17) = GFS_Data(nb)%Sfcprop%albdnir_ice(ix) - temp2d(i,j,idx_opt+18) = GFS_Data(nb)%Sfcprop%albivis_ice(ix) - temp2d(i,j,idx_opt+19) = GFS_Data(nb)%Sfcprop%albinir_ice(ix) - temp2d(i,j,idx_opt+20) = GFS_Data(nb)%Sfcprop%sfalb_ice(ix) - temp2d(i,j,idx_opt+21) = GFS_Data(nb)%Sfcprop%emis_lnd(ix) - temp2d(i,j,idx_opt+22) = GFS_Data(nb)%Sfcprop%emis_ice(ix) + temp2d(i,j,idx_opt+10) = GFS_Data(nb)%Sfcprop%sfalb_lnd(ix) + temp2d(i,j,idx_opt+11) = GFS_Data(nb)%Sfcprop%sfalb_lnd_bck(ix) + temp2d(i,j,idx_opt+12) = GFS_Data(nb)%Sfcprop%albdvis_ice(ix) + temp2d(i,j,idx_opt+13) = GFS_Data(nb)%Sfcprop%albdnir_ice(ix) + temp2d(i,j,idx_opt+14) = GFS_Data(nb)%Sfcprop%albivis_ice(ix) + temp2d(i,j,idx_opt+15) = GFS_Data(nb)%Sfcprop%albinir_ice(ix) + temp2d(i,j,idx_opt+16) = GFS_Data(nb)%Sfcprop%sfalb_ice(ix) + temp2d(i,j,idx_opt+17) = GFS_Data(nb)%Sfcprop%emis_ice(ix) idx_opt = 110 if (Model%rdlai) then temp2d(i,j,idx_opt+23) = GFS_Data(nb)%Sfcprop%xlaixy(ix) @@ -519,9 +514,9 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta if (Model%lsm == Model%lsm_ruc .and. warm_start) then if(Model%rdlai) then - nvar_s2r = 24 + nvar_s2r = 19 else - nvar_s2r = 23 + nvar_s2r = 18 end if nvar_s3 = 5 else @@ -534,7 +529,7 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta endif if (Model%lsm == Model%lsm_noahmp) then - nvar_s2mp = 34 !mp 2D + nvar_s2mp = 29 !mp 2D nvar_s3mp = 5 !mp 3D else nvar_s2mp = 0 !mp 2D @@ -633,7 +628,7 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta enddo enddo - nvar_s2m = 39 + nvar_s2m = 44 if (Model%cplwav) then nvar_s2m = nvar_s2m + 1 endif @@ -784,15 +779,20 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(31) = 'snoalb' !--- variables below here are optional sfc_name2(32) = 'sncovr' - sfc_name2(33) = 'tsfcl' !temp on land portion of a cell - sfc_name2(34) = 'zorll' !zorl on land portion of a cell - sfc_name2(35) = 'zorli' !zorl on ice portion of a cell - sfc_name2(36) = 'snodl' !snowd on land portion of a cell - sfc_name2(37) = 'tsfc' !tsfc composite - sfc_name2(38) = 'zorl' !zorl composite - sfc_name2(39) = 'weasdl'!weasd on land portion of a cell + sfc_name2(33) = 'snodl' !snowd on land portion of a cell + sfc_name2(34) = 'weasdl'!weasd on land portion of a cell + sfc_name2(35) = 'tsfc' !tsfc composite + sfc_name2(36) = 'tsfcl' !temp on land portion of a cell + sfc_name2(37) = 'zorlw' !zorl on water portion of a cell + sfc_name2(38) = 'zorll' !zorl on land portion of a cell + sfc_name2(39) = 'zorli' !zorl on ice portion of a cell + sfc_name2(40) = 'albdvis_lnd' + sfc_name2(41) = 'albdnir_lnd' + sfc_name2(42) = 'albivis_lnd' + sfc_name2(43) = 'albinir_lnd' + sfc_name2(44) = 'emis_lnd' if(Model%cplwav) then - sfc_name2(nvar_s2m) = 'zorlwav' !zorl on land portion of a cell + sfc_name2(nvar_s2m) = 'zorlwav' !zorl from wave component endif !--- NSSTM inputs only needed when (nstf_name(1) > 0) .and. (nstf_name(2)) == 0) @@ -815,7 +815,7 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(nvar_s2m+17) = 'dt_cool' sfc_name2(nvar_s2m+18) = 'qrain' ! -! Only needed when Noah MP LSM is used - 34 2D +! Only needed when Noah MP LSM is used - 29 2D ! if (Model%lsm == Model%lsm_noahmp) then sfc_name2(nvar_s2m+19) = 'snowxy' @@ -847,11 +847,6 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(nvar_s2m+45) = 'smcwtdxy' sfc_name2(nvar_s2m+46) = 'deeprechxy' sfc_name2(nvar_s2m+47) = 'rechxy' - sfc_name2(nvar_s2m+48) = 'albdvis_lnd' - sfc_name2(nvar_s2m+49) = 'albdnir_lnd' - sfc_name2(nvar_s2m+50) = 'albivis_lnd' - sfc_name2(nvar_s2m+51) = 'albinir_lnd' - sfc_name2(nvar_s2m+52) = 'emis_lnd' else if (Model%lsm == Model%lsm_ruc .and. warm_start) then sfc_name2(nvar_s2m+19) = 'wetness' sfc_name2(nvar_s2m+20) = 'clw_surf_land' @@ -863,21 +858,16 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(nvar_s2m+26) = 'snowfall_acc_land' sfc_name2(nvar_s2m+27) = 'snowfall_acc_ice' sfc_name2(nvar_s2m+28) = 'sncovr_ice' - sfc_name2(nvar_s2m+29) = 'albdvis_lnd' - sfc_name2(nvar_s2m+30) = 'albdnir_lnd' - sfc_name2(nvar_s2m+31) = 'albivis_lnd' - sfc_name2(nvar_s2m+32) = 'albinir_lnd' - sfc_name2(nvar_s2m+33) = 'sfalb_lnd' - sfc_name2(nvar_s2m+34) = 'sfalb_lnd_bck' - sfc_name2(nvar_s2m+35) = 'albdvis_ice' - sfc_name2(nvar_s2m+36) = 'albdnir_ice' - sfc_name2(nvar_s2m+37) = 'albivis_ice' - sfc_name2(nvar_s2m+38) = 'albinir_ice' - sfc_name2(nvar_s2m+39) = 'sfalb_ice' - sfc_name2(nvar_s2m+40) = 'emis_lnd' - sfc_name2(nvar_s2m+41) = 'emis_ice' + sfc_name2(nvar_s2m+29) = 'sfalb_lnd' + sfc_name2(nvar_s2m+30) = 'sfalb_lnd_bck' + sfc_name2(nvar_s2m+31) = 'albdvis_ice' + sfc_name2(nvar_s2m+32) = 'albdnir_ice' + sfc_name2(nvar_s2m+33) = 'albivis_ice' + sfc_name2(nvar_s2m+34) = 'albinir_ice' + sfc_name2(nvar_s2m+35) = 'sfalb_ice' + sfc_name2(nvar_s2m+36) = 'emis_ice' if (Model%rdlai) then - sfc_name2(nvar_s2m+42) = 'lai' + sfc_name2(nvar_s2m+37) = 'lai' endif else if (Model%lsm == Model%lsm_ruc .and. Model%rdlai) then sfc_name2(nvar_s2m+19) = 'lai' @@ -889,7 +879,10 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta if (trim(sfc_name2(num)) == 'sncovr'.or. trim(sfc_name2(num)) == 'tsfcl' .or. trim(sfc_name2(num)) == 'zorll' & .or. trim(sfc_name2(num)) == 'zorli' .or. trim(sfc_name2(num)) == 'zorlwav' & .or. trim(sfc_name2(num)) == 'snodl' .or. trim(sfc_name2(num)) == 'weasdl' & - .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorl') then + .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorlw' & + .or. trim(sfc_name2(num)) == 'albdvis_lnd' .or. trim(sfc_name2(num)) == 'albdnir_lnd' & + .or. trim(sfc_name2(num)) == 'albivis_lnd' .or. trim(sfc_name2(num)) == 'albinir_lnd' & + .or. trim(sfc_name2(num)) == 'emis_lnd' ) then id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain, mandatory=.false.) else id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain) @@ -1006,7 +999,7 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%tsfco(ix) = sfc_var2(i,j,2) !--- tsfc (tsea in sfc file) Sfcprop(nb)%weasd(ix) = sfc_var2(i,j,3) !--- weasd (sheleg in sfc file) Sfcprop(nb)%tg3(ix) = sfc_var2(i,j,4) !--- tg3 - Sfcprop(nb)%zorlw(ix) = sfc_var2(i,j,5) !--- zorl on water + Sfcprop(nb)%zorl(ix) = sfc_var2(i,j,5) !--- zorl composite Sfcprop(nb)%alvsf(ix) = sfc_var2(i,j,6) !--- alvsf Sfcprop(nb)%alvwf(ix) = sfc_var2(i,j,7) !--- alvwf Sfcprop(nb)%alnsf(ix) = sfc_var2(i,j,8) !--- alnsf @@ -1034,17 +1027,22 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%slope(ix) = sfc_var2(i,j,30) !--- slope Sfcprop(nb)%snoalb(ix) = sfc_var2(i,j,31) !--- snoalb Sfcprop(nb)%sncovr(ix) = sfc_var2(i,j,32) !--- sncovr - Sfcprop(nb)%tsfcl(ix) = sfc_var2(i,j,33) !--- sfcl (temp on land portion of a cell) - Sfcprop(nb)%zorll(ix) = sfc_var2(i,j,34) !--- zorll (zorl on land portion of a cell) - Sfcprop(nb)%zorli(ix) = sfc_var2(i,j,35) !--- zorli (zorl on ice portion of a cell) - Sfcprop(nb)%snodl(ix) = sfc_var2(i,j,36) !--- snodl (snowd on land portion of a cell) - Sfcprop(nb)%tsfc(ix) = sfc_var2(i,j,37) !--- tsfc composite - Sfcprop(nb)%zorl(ix) = sfc_var2(i,j,38) !--- zorl composite - Sfcprop(nb)%weasdl(ix) = sfc_var2(i,j,39) !--- weasdl (weasd on land portion of a cell) + Sfcprop(nb)%snodl(ix) = sfc_var2(i,j,33) !--- snodl (snowd on land portion of a cell) + Sfcprop(nb)%weasdl(ix) = sfc_var2(i,j,34) !--- weasdl (weasd on land portion of a cell) + Sfcprop(nb)%tsfc(ix) = sfc_var2(i,j,35) !--- tsfc composite + Sfcprop(nb)%tsfcl(ix) = sfc_var2(i,j,36) !--- tsfcl (temp on land portion of a cell) + Sfcprop(nb)%zorlw(ix) = sfc_var2(i,j,37) !--- zorlw (zorl on water portion of a cell) + Sfcprop(nb)%zorll(ix) = sfc_var2(i,j,38) !--- zorll (zorl on land portion of a cell) + Sfcprop(nb)%zorli(ix) = sfc_var2(i,j,39) !--- zorli (zorl on ice portion of a cell) + Sfcprop(nb)%albdvis_lnd(ix)= sfc_var2(i,j,40) + Sfcprop(nb)%albdnir_lnd(ix)= sfc_var2(i,j,41) + Sfcprop(nb)%albivis_lnd(ix)= sfc_var2(i,j,42) + Sfcprop(nb)%albinir_lnd(ix)= sfc_var2(i,j,43) + Sfcprop(nb)%emis_lnd(ix) = sfc_var2(i,j,44) if(Model%cplwav) then - Sfcprop(nb)%zorlwav(ix) = sfc_var2(i,j,nvar_s2m) !--- (zorw from wave model) + Sfcprop(nb)%zorlwav(ix) = sfc_var2(i,j,nvar_s2m) !--- (zorl from wave model) else - Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorlw(ix) + Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorl(ix) endif if (Model%frac_grid) then @@ -1193,21 +1191,16 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%snowfallac_land(ix) = sfc_var2(i,j,nvar_s2m+26) Sfcprop(nb)%snowfallac_ice(ix) = sfc_var2(i,j,nvar_s2m+27) Sfcprop(nb)%sncovr_ice(ix) = sfc_var2(i,j,nvar_s2m+28) - Sfcprop(nb)%albdvis_lnd(ix) = sfc_var2(i,j,nvar_s2m+29) - Sfcprop(nb)%albdnir_lnd(ix) = sfc_var2(i,j,nvar_s2m+30) - Sfcprop(nb)%albivis_lnd(ix) = sfc_var2(i,j,nvar_s2m+31) - Sfcprop(nb)%albinir_lnd(ix) = sfc_var2(i,j,nvar_s2m+32) - Sfcprop(nb)%sfalb_lnd(ix) = sfc_var2(i,j,nvar_s2m+33) - Sfcprop(nb)%sfalb_lnd_bck(ix) = sfc_var2(i,j,nvar_s2m+34) - Sfcprop(nb)%albdvis_ice(ix) = sfc_var2(i,j,nvar_s2m+35) - Sfcprop(nb)%albdnir_ice(ix) = sfc_var2(i,j,nvar_s2m+36) - Sfcprop(nb)%albivis_ice(ix) = sfc_var2(i,j,nvar_s2m+37) - Sfcprop(nb)%albinir_ice(ix) = sfc_var2(i,j,nvar_s2m+38) - Sfcprop(nb)%sfalb_ice(ix) = sfc_var2(i,j,nvar_s2m+39) - Sfcprop(nb)%emis_lnd(ix) = sfc_var2(i,j,nvar_s2m+40) - Sfcprop(nb)%emis_ice(ix) = sfc_var2(i,j,nvar_s2m+41) + Sfcprop(nb)%sfalb_lnd(ix) = sfc_var2(i,j,nvar_s2m+29) + Sfcprop(nb)%sfalb_lnd_bck(ix) = sfc_var2(i,j,nvar_s2m+30) + Sfcprop(nb)%albdvis_ice(ix) = sfc_var2(i,j,nvar_s2m+31) + Sfcprop(nb)%albdnir_ice(ix) = sfc_var2(i,j,nvar_s2m+32) + Sfcprop(nb)%albivis_ice(ix) = sfc_var2(i,j,nvar_s2m+33) + Sfcprop(nb)%albinir_ice(ix) = sfc_var2(i,j,nvar_s2m+34) + Sfcprop(nb)%sfalb_ice(ix) = sfc_var2(i,j,nvar_s2m+35) + Sfcprop(nb)%emis_ice(ix) = sfc_var2(i,j,nvar_s2m+36) if (Model%rdlai) then - Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+42) + Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+37) endif else if (Model%lsm == Model%lsm_ruc) then ! Initialize RUC snow cover on ice from snow cover @@ -1246,11 +1239,6 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%smcwtdxy(ix) = sfc_var2(i,j,nvar_s2m+45) Sfcprop(nb)%deeprechxy(ix) = sfc_var2(i,j,nvar_s2m+46) Sfcprop(nb)%rechxy(ix) = sfc_var2(i,j,nvar_s2m+47) - Sfcprop(nb)%albdvis_lnd(ix)= sfc_var2(i,j,nvar_s2m+48) - Sfcprop(nb)%albdnir_lnd(ix)= sfc_var2(i,j,nvar_s2m+49) - Sfcprop(nb)%albivis_lnd(ix)= sfc_var2(i,j,nvar_s2m+50) - Sfcprop(nb)%albinir_lnd(ix)= sfc_var2(i,j,nvar_s2m+51) - Sfcprop(nb)%emis_lnd(ix) = sfc_var2(i,j,nvar_s2m+52) endif if (Model%lsm == Model%lsm_noah .or. Model%lsm == Model%lsm_noahmp .or. Model%lsm == Model%lsm_noah_wrfv4 .or. (.not.warm_start)) then @@ -1310,9 +1298,37 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta i = Atm_block%index(1)%ii(1) - isc + 1 j = Atm_block%index(1)%jj(1) - jsc + 1 + if (sfc_var2(i,j,33) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing snodl') +!$omp parallel do default(shared) private(nb, ix, tem) + do nb = 1, Atm_block%nblks + do ix = 1, Atm_block%blksz(nb) + if (Sfcprop(nb)%landfrac(ix) > zero) then + tem = one / Sfcprop(nb)%landfrac(ix) + Sfcprop(nb)%snodl(ix) = Sfcprop(nb)%snowd(ix) * tem + else + Sfcprop(nb)%snodl(ix) = zero + endif + enddo + enddo + endif + if (sfc_var2(i,j,34) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing weasdl') +!$omp parallel do default(shared) private(nb, ix, tem) + do nb = 1, Atm_block%nblks + do ix = 1, Atm_block%blksz(nb) + if (Sfcprop(nb)%landfrac(ix) > zero) then + tem = one / Sfcprop(nb)%landfrac(ix) + Sfcprop(nb)%weasdl(ix) = Sfcprop(nb)%weasd(ix) * tem + else + Sfcprop(nb)%weasdl(ix) = zero + endif + enddo + enddo + endif - if (sfc_var2(i,j,33) < -9990.0_r8) then + if (sfc_var2(i,j,36) < -9990.0_r8) then if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing tsfcl') !$omp parallel do default(shared) private(nb, ix) do nb = 1, Atm_block%nblks @@ -1322,57 +1338,46 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta enddo endif - if (sfc_var2(i,j,34) < -9990.0_r8) then - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorll') + if (sfc_var2(i,j,37) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorlw') !$omp parallel do default(shared) private(nb, ix) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - Sfcprop(nb)%zorll(ix) = Sfcprop(nb)%zorlw(ix) !--- compute zorll from existing variables + Sfcprop(nb)%zorlw(ix) = Sfcprop(nb)%zorl(ix) !--- compute zorlw from existing variables enddo enddo endif - if (sfc_var2(i,j,35) < -9990.0_r8) then - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorli') + if (sfc_var2(i,j,38) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorll') !$omp parallel do default(shared) private(nb, ix) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - Sfcprop(nb)%zorli(ix) = Sfcprop(nb)%zorlw(ix) !--- compute zorli from existing variables + Sfcprop(nb)%zorll(ix) = Sfcprop(nb)%zorl(ix) !--- compute zorll from existing variables enddo enddo endif - if (sfc_var2(i,j,36) < -9990.0_r8) then - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - using snowd') -!$omp parallel do default(shared) private(nb, ix, tem) + if (sfc_var2(i,j,39) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorli') +!$omp parallel do default(shared) private(nb, ix) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - if (Sfcprop(nb)%landfrac(ix) > zero) then - tem = one / Sfcprop(nb)%landfrac(ix) - Sfcprop(nb)%snodl(ix) = Sfcprop(nb)%snowd(ix) * tem - Sfcprop(nb)%weasdl(ix) = Sfcprop(nb)%weasd(ix) * tem - else - Sfcprop(nb)%snodl(ix) = zero - Sfcprop(nb)%weasdl(ix) = zero - endif + Sfcprop(nb)%zorli(ix) = Sfcprop(nb)%zorl(ix) !--- compute zorli from existing variables enddo enddo endif - ! Fill in composite tsfc and zorl for coldstart runs - compute_tsfc_zorl_for_colstart: if (.not. warm_start) then + ! Fill in composite tsfc for coldstart runs - must happen after tsfcl is computed + compute_tsfc_for_colstart: if (sfc_var2(i,j,35) < -9990.0_r8) then + if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing composite tsfc') if(Model%frac_grid) then ! 3-way composite - if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing composite tsfc and zorl') !$omp parallel do default(shared) private(nb, ix, tem, tem1) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - Sfcprop(nb)%tsfco(ix) = max(con_tice, Sfcprop(nb)%tsfco(ix)) ! this may break restart reproducibility + Sfcprop(nb)%tsfco(ix) = max(con_tice, Sfcprop(nb)%tsfco(ix)) ! this may break restart reproducibility tem1 = one - Sfcprop(nb)%landfrac(ix) tem = tem1 * Sfcprop(nb)%fice(ix) ! tem = ice fraction wrt whole cell - Sfcprop(nb)%zorl(ix) = Sfcprop(nb)%zorll(ix) * Sfcprop(nb)%landfrac(ix) & - + Sfcprop(nb)%zorli(ix) * tem & - + Sfcprop(nb)%zorlw(ix) * (tem1-tem) - Sfcprop(nb)%tsfc(ix) = Sfcprop(nb)%tsfcl(ix) * Sfcprop(nb)%landfrac(ix) & + Sfcprop(nb)%tisfc(ix) * tem & + Sfcprop(nb)%tsfco(ix) * (tem1-tem) @@ -1382,28 +1387,24 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta !$omp parallel do default(shared) private(nb, ix, tem) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - !--- specify tsfcl/zorll/zorli from existing variable tsfco/zorlw if (Sfcprop(nb)%slmsk(ix) == 1) then - Sfcprop(nb)%zorl(ix) = Sfcprop(nb)%zorll(ix) Sfcprop(nb)%tsfc(ix) = Sfcprop(nb)%tsfcl(ix) else tem = one - Sfcprop(nb)%fice(ix) - Sfcprop(nb)%zorl(ix) = Sfcprop(nb)%zorli(ix) * Sfcprop(nb)%fice(ix) & - + Sfcprop(nb)%zorlw(ix) * tem Sfcprop(nb)%tsfc(ix) = Sfcprop(nb)%tisfc(ix) * Sfcprop(nb)%fice(ix) & + Sfcprop(nb)%tsfco(ix) * tem endif enddo enddo endif - endif compute_tsfc_zorl_for_colstart + endif compute_tsfc_for_colstart if (sfc_var2(i,j,nvar_s2m) < -9990.0_r8) then if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing zorlwav') !$omp parallel do default(shared) private(nb, ix) do nb = 1, Atm_block%nblks do ix = 1, Atm_block%blksz(nb) - Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorlw(ix) !--- compute zorlwav from existing variables + Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorl(ix) !--- compute zorlwav from existing variables enddo enddo endif @@ -1452,18 +1453,14 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta real(kind=kind_phys), pointer, dimension(:,:,:) :: var3_p2 => NULL() real(kind=kind_phys), pointer, dimension(:,:,:) :: var3_p3 => NULL() -! if (Model%frac_grid) then ! needs more variables - nvar2m = 39 -! else -! nvar2m = 32 -! endif + nvar2m = 44 if (Model%cplwav) nvar2m = nvar2m + 1 nvar2o = 18 if (Model%lsm == Model%lsm_ruc) then if (Model%rdlai) then - nvar2r = 24 + nvar2r = 19 else - nvar2r = 23 + nvar2r = 18 endif nvar3 = 5 else @@ -1556,21 +1553,24 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_name2(29) = 'shdmax' sfc_name2(30) = 'slope' sfc_name2(31) = 'snoalb' - !--- variables below here are optional + !--- variables below here are optional sfc_name2(32) = 'sncovr' -! if (Model%frac_grid) then - sfc_name2(33) = 'tsfcl' !temp on land portion of a cell - sfc_name2(34) = 'zorll' !zorl on land portion of a cell - sfc_name2(35) = 'zorli' !zorl on ice portion of a cell - sfc_name2(36) = 'snodl' !snowd on land portion of a cell - sfc_name2(37) = 'tsfc' !tsfc composite - sfc_name2(38) = 'zorl' !zorl composite - sfc_name2(39) = 'weasd' !weasd on land portion of a cell -! endif + sfc_name2(33) = 'snodl' !snowd on land portion of a cell + sfc_name2(34) = 'weasdl'!weasd on land portion of a cell + sfc_name2(35) = 'tsfc' !tsfc composite + sfc_name2(36) = 'tsfcl' !temp on land portion of a cell + sfc_name2(37) = 'zorlw' !zorl on water portion of a cell + sfc_name2(38) = 'zorll' !zorl on land portion of a cell + sfc_name2(39) = 'zorli' !zorl on ice portion of a cell + sfc_name2(40) = 'albdvis_lnd' + sfc_name2(41) = 'albdnir_lnd' + sfc_name2(42) = 'albivis_lnd' + sfc_name2(43) = 'albinir_lnd' + sfc_name2(44) = 'emis_lnd' if (Model%cplwav) then - sfc_name2(nvar2m) = 'zorlwav' !zorl on land portion of a cell + sfc_name2(nvar2m) = 'zorlwav' !zorl from wave component endif - !--- NSSTM inputs only needed when (nstf_name(1) > 0) .and. (nstf_name(2)) == 0) + !--- NSSTM inputs only needed when (nstf_name(1) > 0) .and. (nstf_name(2)) == 0) sfc_name2(nvar2m+1) = 'tref' sfc_name2(nvar2m+2) = 'z_c' sfc_name2(nvar2m+3) = 'c_0' @@ -1600,21 +1600,16 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_name2(nvar2m+26) = 'snowfall_acc_land' sfc_name2(nvar2m+27) = 'snowfall_acc_ice' sfc_name2(nvar2m+28) = 'sncovr_ice' - sfc_name2(nvar2m+29) = 'albdvis_lnd' - sfc_name2(nvar2m+30) = 'albdnir_lnd' - sfc_name2(nvar2m+31) = 'albivis_lnd' - sfc_name2(nvar2m+32) = 'albinir_lnd' - sfc_name2(nvar2m+33) = 'sfalb_lnd' - sfc_name2(nvar2m+34) = 'sfalb_lnd_bck' - sfc_name2(nvar2m+35) = 'albdvis_ice' - sfc_name2(nvar2m+36) = 'albdnir_ice' - sfc_name2(nvar2m+37) = 'albivis_ice' - sfc_name2(nvar2m+38) = 'albinir_ice' - sfc_name2(nvar2m+39) = 'sfalb_ice' - sfc_name2(nvar2m+40) = 'emis_lnd' - sfc_name2(nvar2m+41) = 'emis_ice' + sfc_name2(nvar2m+29) = 'sfalb_lnd' + sfc_name2(nvar2m+30) = 'sfalb_lnd_bck' + sfc_name2(nvar2m+31) = 'albdvis_ice' + sfc_name2(nvar2m+32) = 'albdnir_ice' + sfc_name2(nvar2m+33) = 'albivis_ice' + sfc_name2(nvar2m+34) = 'albinir_ice' + sfc_name2(nvar2m+35) = 'sfalb_ice' + sfc_name2(nvar2m+36) = 'emis_ice' if (Model%rdlai) then - sfc_name2(nvar2m+42) = 'lai' + sfc_name2(nvar2m+37) = 'lai' endif else if(Model%lsm == Model%lsm_noahmp) then ! Only needed when Noah MP LSM is used - 29 2D @@ -1655,7 +1650,10 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta if (trim(sfc_name2(num)) == 'sncovr' .or. trim(sfc_name2(num)) == 'tsfcl' .or.trim(sfc_name2(num)) == 'zorll' & .or. trim(sfc_name2(num)) == 'zorli' .or.trim(sfc_name2(num)) == 'zorlwav' & .or. trim(sfc_name2(num)) == 'snodl' .or. trim(sfc_name2(num)) == 'weasdl' & - .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorl') then + .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorlw' & + .or. trim(sfc_name2(num)) == 'albdvis_lnd' .or. trim(sfc_name2(num)) == 'albdnir_lnd' & + .or. trim(sfc_name2(num)) == 'albivis_lnd' .or. trim(sfc_name2(num)) == 'albinir_lnd' & + .or. trim(sfc_name2(num)) == 'emis_lnd' ) then id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain, mandatory=.false.) else id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain) @@ -1745,16 +1743,10 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta i = Atm_block%index(nb)%ii(ix) - isc + 1 j = Atm_block%index(nb)%jj(ix) - jsc + 1 sfc_var2(i,j,1) = Sfcprop(nb)%slmsk(ix) !--- slmsk -! if (Model%frac_grid) then - sfc_var2(i,j,2) = Sfcprop(nb)%tsfco(ix) !--- tsfc (tsea in sfc file) - sfc_var2(i,j,5) = Sfcprop(nb)%zorlw(ix) !--- zorlw -! else -! sfc_var2(i,j,2) = Sfcprop(nb)%tsfc(ix) !--- tsfc (tsea in sfc file) -! sfc_var2(i,j,5) = Sfcprop(nb)%zorl(ix) !--- zorl -! endif + sfc_var2(i,j,2) = Sfcprop(nb)%tsfco(ix) !--- tsfc (tsea in sfc file) sfc_var2(i,j,3) = Sfcprop(nb)%weasd(ix) !--- weasd (sheleg in sfc file) sfc_var2(i,j,4) = Sfcprop(nb)%tg3(ix) !--- tg3 -! sfc_var2(i,j,5) = Sfcprop(nb)%zorl(ix) !--- zorl + sfc_var2(i,j,5) = Sfcprop(nb)%zorl(ix) !--- zorl sfc_var2(i,j,6) = Sfcprop(nb)%alvsf(ix) !--- alvsf sfc_var2(i,j,7) = Sfcprop(nb)%alvwf(ix) !--- alvwf sfc_var2(i,j,8) = Sfcprop(nb)%alnsf(ix) !--- alnsf @@ -1781,14 +1773,19 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_var2(i,j,29) = Sfcprop(nb)%shdmax(ix)!--- shdmax sfc_var2(i,j,30) = Sfcprop(nb)%slope(ix) !--- slope sfc_var2(i,j,31) = Sfcprop(nb)%snoalb(ix)!--- snoalb - sfc_var2(i,j,32) = Sfcprop(nb)%sncovr(ix)!--- sncovr - sfc_var2(i,j,33) = Sfcprop(nb)%tsfcl(ix) !--- tsfcl (temp on land) - sfc_var2(i,j,34) = Sfcprop(nb)%zorll(ix) !--- zorll (zorl on land) - sfc_var2(i,j,35) = Sfcprop(nb)%zorli(ix) !--- zorli (zorl on ice) - sfc_var2(i,j,36) = Sfcprop(nb)%snodl(ix) !--- snodl (snowd on land) - sfc_var2(i,j,37) = Sfcprop(nb)%tsfc(ix) !--- tsfc composite - sfc_var2(i,j,38) = Sfcprop(nb)%zorl(ix) !--- zorl composite - sfc_var2(i,j,39) = Sfcprop(nb)%weasdl(ix) !--- weasdl (weasd on land) + sfc_var2(i,j,32) = Sfcprop(nb)%sncovr(ix) !--- sncovr + sfc_var2(i,j,33) = Sfcprop(nb)%snodl(ix) !--- snodl (snowd on land) + sfc_var2(i,j,34) = Sfcprop(nb)%weasdl(ix) !--- weasdl (weasd on land) + sfc_var2(i,j,35) = Sfcprop(nb)%tsfc(ix) !--- tsfc composite + sfc_var2(i,j,36) = Sfcprop(nb)%tsfcl(ix) !--- tsfcl (temp on land) + sfc_var2(i,j,37) = Sfcprop(nb)%zorlw(ix) !--- zorl (zorl on water) + sfc_var2(i,j,38) = Sfcprop(nb)%zorll(ix) !--- zorll (zorl on land) + sfc_var2(i,j,39) = Sfcprop(nb)%zorli(ix) !--- zorli (zorl on ice) + sfc_var2(i,j,40) = Sfcprop(nb)%albdvis_lnd(ix) + sfc_var2(i,j,41) = Sfcprop(nb)%albdnir_lnd(ix) + sfc_var2(i,j,42) = Sfcprop(nb)%albivis_lnd(ix) + sfc_var2(i,j,43) = Sfcprop(nb)%albinir_lnd(ix) + sfc_var2(i,j,44) = Sfcprop(nb)%emis_lnd(ix) if (Model%cplwav) then sfc_var2(i,j,nvar2m) = Sfcprop(nb)%zorlwav(ix) !--- zorlwav (zorl from wav) endif @@ -1826,21 +1823,16 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_var2(i,j,nvar2m+26) = Sfcprop(nb)%snowfallac_land(ix) sfc_var2(i,j,nvar2m+27) = Sfcprop(nb)%snowfallac_ice(ix) sfc_var2(i,j,nvar2m+28) = Sfcprop(nb)%sncovr_ice(ix) - sfc_var2(i,j,nvar2m+29) = Sfcprop(nb)%albdvis_lnd(ix) - sfc_var2(i,j,nvar2m+30) = Sfcprop(nb)%albdnir_lnd(ix) - sfc_var2(i,j,nvar2m+31) = Sfcprop(nb)%albivis_lnd(ix) - sfc_var2(i,j,nvar2m+32) = Sfcprop(nb)%albinir_lnd(ix) - sfc_var2(i,j,nvar2m+33) = Sfcprop(nb)%sfalb_lnd(ix) - sfc_var2(i,j,nvar2m+34) = Sfcprop(nb)%sfalb_lnd_bck(ix) - sfc_var2(i,j,nvar2m+35) = Sfcprop(nb)%albdvis_ice(ix) - sfc_var2(i,j,nvar2m+36) = Sfcprop(nb)%albdnir_ice(ix) - sfc_var2(i,j,nvar2m+37) = Sfcprop(nb)%albivis_ice(ix) - sfc_var2(i,j,nvar2m+38) = Sfcprop(nb)%albinir_ice(ix) - sfc_var2(i,j,nvar2m+39) = Sfcprop(nb)%sfalb_ice(ix) - sfc_var2(i,j,nvar2m+40) = Sfcprop(nb)%emis_lnd(ix) - sfc_var2(i,j,nvar2m+41) = Sfcprop(nb)%emis_ice(ix) + sfc_var2(i,j,nvar2m+29) = Sfcprop(nb)%sfalb_lnd(ix) + sfc_var2(i,j,nvar2m+30) = Sfcprop(nb)%sfalb_lnd_bck(ix) + sfc_var2(i,j,nvar2m+31) = Sfcprop(nb)%albdvis_ice(ix) + sfc_var2(i,j,nvar2m+32) = Sfcprop(nb)%albdnir_ice(ix) + sfc_var2(i,j,nvar2m+33) = Sfcprop(nb)%albivis_ice(ix) + sfc_var2(i,j,nvar2m+34) = Sfcprop(nb)%albinir_ice(ix) + sfc_var2(i,j,nvar2m+35) = Sfcprop(nb)%sfalb_ice(ix) + sfc_var2(i,j,nvar2m+36) = Sfcprop(nb)%emis_ice(ix) if (Model%rdlai) then - sfc_var2(i,j,nvar2m+42) = Sfcprop(nb)%xlaixy(ix) + sfc_var2(i,j,nvar2m+37) = Sfcprop(nb)%xlaixy(ix) endif else if (Model%lsm == Model%lsm_noahmp) then !--- Extra Noah MP variables diff --git a/io/post_gfs.F90 b/io/post_gfs.F90 index 0907d7d76..105172a86 100644 --- a/io/post_gfs.F90 +++ b/io/post_gfs.F90 @@ -22,6 +22,7 @@ subroutine post_run_gfs(wrt_int_state,mypei,mpicomp,lead_write, & ! ! revision history: ! Jul 2019 J. Wang create interface to run inline post for FV3 +! Apr 2021 R. Sun Added variables for Thomspon MP ! !----------------------------------------------------------------------- !*** run post on write grid comp @@ -342,7 +343,7 @@ subroutine set_postvars_gfs(wrt_int_state,mpicomp,setvar_atmfile, & use vrbls3d, only: t, q, uh, vh, wh, alpint, dpres, zint, zmid, o3, & qqr, qqs, cwm, qqi, qqw, qqg, omga, cfr, pmid, & q2, rlwtt, rswtt, tcucn, tcucns, train, el_pbl, & - pint, exch_h, ref_10cm + pint, exch_h, ref_10cm, qqni,qqnr,qqnwfa,qqnifa use vrbls2d, only: f, pd, sigt4, fis, pblh, ustar, z0, ths, qs, twbs,& qwbs, avgcprate, cprate, avgprec, prec, lspa, sno,& cldefi, th10, q10, tshltr, pshltr, tshltr, albase,& @@ -2182,8 +2183,8 @@ subroutine set_postvars_gfs(wrt_int_state,mpicomp,setvar_atmfile, & enddo endif -! for GFDL MP - if (imp_physics == 11) then +! for GFDL MP or Thompson MP + if (imp_physics == 11 .or. imp_physics == 8) then ! model level cloud water mixing ratio if(trim(fieldname)=='clwmr') then !$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,qqw,arrayr43d) @@ -2243,6 +2244,56 @@ subroutine set_postvars_gfs(wrt_int_state,mpicomp,setvar_atmfile, & enddo enddo endif + + if(imp_physics == 8) then + ! model level rain number + if(trim(fieldname)=='ncrain') then + !$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,qqnr,arrayr43d) + do l=1,lm + do j=jsta,jend + do i=ista, iend + qqnr(i,j,l)=arrayr43d(i,j,l) + enddo + enddo + enddo + endif + + ! model level rain number + if(trim(fieldname)=='ncice') then + !$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,qqni,arrayr43d) + do l=1,lm + do j=jsta,jend + do i=ista, iend + qqni(i,j,l)=arrayr43d(i,j,l) + enddo + enddo + enddo + endif + + ! model level rain number + if(trim(fieldname)=='nwfa') then + !$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,qqnwfa,arrayr43d) + do l=1,lm + do j=jsta,jend + do i=ista, iend + qqnwfa(i,j,l)=arrayr43d(i,j,l) + enddo + enddo + enddo + endif + + ! model level rain number + if(trim(fieldname)=='nifa') then + !$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,qqnifa,arrayr43d) + do l=1,lm + do j=jsta,jend + do i=ista, iend + qqnifa(i,j,l)=arrayr43d(i,j,l) + enddo + enddo + enddo + endif + endif !if(imp_physics == 8) then !gfdlmp endif @@ -2400,8 +2451,8 @@ subroutine set_postvars_gfs(wrt_int_state,mpicomp,setvar_atmfile, & enddo enddo -! compute cwm for gfdlmp - if( imp_physics == 11 ) then +! compute cwm for gfdlmp or Thompson + if( imp_physics == 11 .or. imp_physics == 8) then do l=1,lm !$omp parallel do default(none) private(i,j) shared(l,jsta,jend,ista,iend,cwm,qqg,qqs,qqr,qqi,qqw) do j=jsta,jend From 9af6d59b4a04d4db19446056afbefddc77857c35 Mon Sep 17 00:00:00 2001 From: Dusan Jovic <48258889+DusanJovic-NOAA@users.noreply.github.com> Date: Mon, 26 Jul 2021 08:07:28 -0400 Subject: [PATCH 02/14] Remove nemsio dependency (#339) Remove nemsio from the write component. --- CMakeLists.txt | 6 +- ccpp/CMakeLists.txt | 2 +- io/ffsync.F90 | 46 -- io/module_fv3_io_def.F90 | 2 - io/module_write_internal_state.F90 | 1 - io/module_write_nemsio.F90 | 795 ----------------------------- io/module_wrt_grid_comp.F90 | 83 +-- 7 files changed, 16 insertions(+), 919 deletions(-) delete mode 100644 io/ffsync.F90 delete mode 100644 io/module_write_nemsio.F90 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b0b80745..ea4109cd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,9 +125,7 @@ add_library(fv3atm cpl/module_block_data.F90 cpl/module_cplfields.F90 cpl/module_cap_cpl.F90 - io/ffsync.F90 io/FV3GFS_io.F90 - io/module_write_nemsio.F90 io/module_write_netcdf.F90 io/module_write_netcdf_parallel.F90 io/module_fv3_io_def.F90 @@ -154,9 +152,7 @@ target_link_libraries(fv3atm PUBLIC fv3dycore stochastic_physics fms) -target_link_libraries(fv3atm PUBLIC nemsio::nemsio - w3emc::w3emc_d - w3nco::w3nco_d +target_link_libraries(fv3atm PUBLIC w3nco::w3nco_d sp::sp_d bacio::bacio_4 esmf) diff --git a/ccpp/CMakeLists.txt b/ccpp/CMakeLists.txt index 9c116d4e6..b41298b45 100644 --- a/ccpp/CMakeLists.txt +++ b/ccpp/CMakeLists.txt @@ -97,7 +97,7 @@ add_subdirectory(framework) add_subdirectory(physics) add_dependencies(ccppphys ccpp) -target_link_libraries(ccppphys PUBLIC NetCDF::NetCDF_Fortran) +target_link_libraries(ccppphys PUBLIC w3nco::w3nco_d NetCDF::NetCDF_Fortran) # This should not be necessary once framework and physics targets define BUILD_INTERFACE target_include_directories(ccppphys PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/framework/src) diff --git a/io/ffsync.F90 b/io/ffsync.F90 deleted file mode 100644 index 304109528..000000000 --- a/io/ffsync.F90 +++ /dev/null @@ -1,46 +0,0 @@ - INTEGER FUNCTION FFSYNC(fn) - - ! USAGE: rc=ffsync(fn) where fn is an input - ! FORTRAN file unit and rc is the return - ! code given back to calling program - ! This function should be called just before closing - ! a file to make sure everything flushed to disk. - - IMPLICIT NONE - - ! Declare the interface for POSIX fsync function - interface - function fsync (fd) bind(c,name="fsync") - use iso_c_binding, only: c_int - integer(c_int), value :: fd - integer(c_int) :: fsync - end function fsync - end interface - - ! Variable declaration - ! rc, return code to send back to caller from fsync - integer :: rc - ! fn, fortran file handle passed in to flush and sync - integer :: fn - ! cfd :: C file descriptor returned from getfd - integer :: cfd - ! getfd :: Fortran function to get C file descriptor - integer :: getfd - -#ifdef IBMP6 - !Get file descriptor for interlanguage call to C fsync - cfd=getfd(fn) - - ! Flush and sync - flush(fn) - - !Call fsync - rc=fsync(cfd) -#else - rc = 0 -#endif - ! pass back return code - ffsync=rc - RETURN - - END FUNCTION FFSYNC diff --git a/io/module_fv3_io_def.F90 b/io/module_fv3_io_def.F90 index da12ebb6a..253d922fe 100644 --- a/io/module_fv3_io_def.F90 +++ b/io/module_fv3_io_def.F90 @@ -13,8 +13,6 @@ module module_fv3_io_def integer :: num_pes_fcst integer :: wrttasks_per_group, write_groups integer :: n_group - logical :: write_nemsioflip - logical :: write_fsyncflag integer :: num_files character(len=esmf_maxstr) :: app_domain character(len=esmf_maxstr) :: output_grid diff --git a/io/module_write_internal_state.F90 b/io/module_write_internal_state.F90 index ab66859cc..e396063c9 100644 --- a/io/module_write_internal_state.F90 +++ b/io/module_write_internal_state.F90 @@ -89,7 +89,6 @@ module write_internal_state !----------------------------------------- ! logical :: output_history - logical :: write_nemsioflag logical :: write_netcdfflag ! !----------------------------------------- diff --git a/io/module_write_nemsio.F90 b/io/module_write_nemsio.F90 deleted file mode 100644 index e51f64a52..000000000 --- a/io/module_write_nemsio.F90 +++ /dev/null @@ -1,795 +0,0 @@ -module module_write_nemsio - - use esmf - use nemsio_module - use module_fv3_io_def, only : write_nemsioflip, write_fsyncflag - - implicit none - - include 'mpif.h' - - private - logical :: first_nemsio_call - integer :: im,jm,lm, idate(7),nmeta, nsoil,ncld, idrt, ntrac - integer :: mype, ntasks, mpi_comm, nbdl - logical :: hydrostatic - real(kind=ESMF_KIND_R4) :: varr4 - integer,dimension(200,100) :: nfldlev - character(16),dimension(3000,5) :: recname,reclevtyp - integer,dimension(3000,5) :: reclev - - integer, dimension(:), allocatable :: nrec - integer, dimension(:), allocatable :: idsl, idvc,idvm - integer, dimension(:), allocatable :: fieldcount - integer, dimension(:), allocatable :: idisp, irecv -! - integer,dimension(:), allocatable :: nmetavari,nmetavarc, nmetavarr4,nmetavarr8 - integer,dimension(:), allocatable :: nmetaaryi,nmetaaryc, nmetaaryr4,nmetaaryr8 - character(16),dimension(:,:),allocatable :: variname, varcname, varr4name, varr8name - character(16),dimension(:,:),allocatable :: aryiname - integer, dimension(:,:), allocatable :: varival, aryilen - integer, dimension(:,:,:), allocatable :: aryival - real(4), dimension(:,:), allocatable :: varr4val - real(8), dimension(:,:), allocatable :: varr8val - character(16), dimension(:,:), allocatable :: varcval - logical, dimension(:), allocatable :: extrameta -! - real(4), dimension(:,:,:), allocatable :: vcoord - real(4), dimension(:), allocatable :: lon1d, lat1d - - logical :: first_set - - public nemsio_first_call, write_nemsio - - contains - - subroutine nemsio_first_call(fieldbundle, imo, jmo, & - wrt_mype, wrt_ntasks, wrt_mpi_comm, wrt_nbdl, mybdl, & - inidate, lat, lon, rc) - type(ESMF_FieldBundle), intent(in) :: fieldbundle - integer, intent(in) :: imo, jmo - integer, intent(in) :: wrt_mype, wrt_ntasks, wrt_mpi_comm - integer, intent(in) :: wrt_nbdl, mybdl - integer, intent(in) :: inidate(7) - real(8), intent(in) :: lat(:), lon(:) - integer, optional,intent(out) :: rc - -!** local vars - integer i,j, nfld, nidx, nlen - integer fieldDimCount,gridDimCount - character(100) :: fieldname - type(ESMF_GRID) :: wrtgrid - type(ESMF_TypeKind_Flag) :: typekind - - integer, dimension(:), allocatable :: ungriddedLBound, ungriddedUBound - type(ESMF_Field), allocatable :: fcstField(:) - real(ESMF_KIND_R8), dimension(:,:), pointer :: lonPtr, latPtr - -!------------------------------------------------------------------- -! - im = imo - jm = jmo - nmeta = 8 - idrt = 4 - idate(1:7) = inidate(1:7) - mype = wrt_mype - ntasks= wrt_ntasks - nbdl = wrt_nbdl - mpi_comm = wrt_mpi_comm - if(.not.allocated(idisp)) allocate(idisp(ntasks),irecv(ntasks)) - if(.not.allocated(fieldCount)) allocate(fieldCount(nbdl)) - if(.not.allocated(nrec)) allocate(nrec(nbdl)) - if(.not.allocated(idsl)) then - allocate(idsl(nbdl),idvc(nbdl),idvm(nbdl)) - idsl=-9999; idvc=-9999; idvm=-9999; first_set=.true. - nsoil = 4 - ntrac = 3 - ncld = 1 - endif -! -!** get attibute info from fieldbundle - call get_global_attr(fieldbundle, mybdl, rc=rc) - -!** get meta info from fieldbundle - call ESMF_FieldBundleGet(fieldbundle, fieldCount=fieldCount(mybdl), & - grid=wrtGrid, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out -! - call ESMF_GridGet(wrtgrid, dimCount=gridDimCount, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out -! -!** get lat lon: - if(.not.allocated(lon1d)) allocate(lon1d(imo*jmo)) - if(.not.allocated(lat1d)) allocate(lat1d(imo*jmo)) - do j=1,jmo - do i=1,imo - lon1d((j-1)*imo+i) = lon(i) - lat1d((j-1)*imo+i) = lat(j) - enddo - enddo -! - allocate(fcstField(fieldCount(mybdl))) - call ESMF_FieldBundleGet(fieldbundle, fieldList=fcstField, & - itemorderflag=ESMF_ITEMORDER_ADDORDER, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - - nrec(mybdl)=0 - do i=1,fieldcount(mybdl) - - call ESMF_FieldGet(fcstField(i), typekind=typekind, & - dimCount=fieldDimCount, grid=wrtGrid, name=fieldname, rc=rc) - if( index(trim(fieldname),"vector") >0) cycle - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - if (fieldDimCount > gridDimCount) then - allocate(ungriddedLBound(fieldDimCount-gridDimCount)) - allocate(ungriddedUBound(fieldDimCount-gridDimCount)) - call ESMF_FieldGet(fcstField(i), ungriddedLBound=ungriddedLBound, & - ungriddedUBound=ungriddedUBound, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - nfldlev(i,mybdl) = ungriddedUBound(fieldDimCount-gridDimCount) - & - ungriddedLBound(fieldDimCount-gridDimCount) + 1 - nrec(mybdl) = nrec(mybdl) + nfldlev(i,mybdl) - deallocate(ungriddedLBound) - deallocate(ungriddedUBound) - else if(fieldDimCount == 2) then - nfldlev(i,mybdl) = 1 - nrec(mybdl) = nrec(mybdl) + 1 - endif - - enddo -! - nfld = 1 - do i=1,fieldcount(mybdl) - call ESMF_FieldGet(fcstField(i),name=fieldName,rc=rc) - if( nfldlev(i,mybdl) == 1) then - reclevtyp(nfld,mybdl) = "sfc" - reclev(nfld,mybdl) = 1 - recname(nfld,mybdl) = trim(fieldName) - - nlen = len(trim(fieldName)) - if( nlen > 3) then - if( fieldName(nlen-2:nlen) == 'sfc') recname(nfld,mybdl) = fieldName(1:nlen-3) - if( fieldName(nlen-2:nlen) == 'nst') recname(nfld,mybdl) = fieldName(1:nlen-3) - if (fieldName(nlen-2:nlen)== '10m') then - reclevtyp(nfld,mybdl) = "10 m above gnd" - if( fieldName(nlen-2:nlen) == "10m") then - recname(nfld,mybdl) = fieldName(1:nlen-3) - if (trim(fieldName) == "f10m") recname(nfld,mybdl) = trim(fieldName) - endif - else if (fieldName(nlen-1:nlen)== '2m') then - reclevtyp(nfld,mybdl) = "2 m above gnd" - if( fieldName(nlen-1:nlen) == '2m') then - recname(nfld,mybdl) = fieldName(1:nlen-2) - endif - else if( index(trim(fieldName),'soil')>0 ) then - if( index(trim(fieldName),'soilt')>0) then - recname(nfld,mybdl) = 'tmp' - else if( index(trim(fieldName),'soilm')>0 .and. & - trim(reclevtyp(nfld,mybdl))=='sfc') then - recname(nfld,mybdl) = 'soilm' - reclevtyp(nfld,mybdl) = '0-200 cm down' - else - recname(nfld,mybdl) = fieldName(1:nlen-1) - endif - if(fieldName(nlen:nlen)=='1') then - reclevtyp(nfld,mybdl) = '0-10 cm down' - else if (fieldName(nlen:nlen)=='2') then - reclevtyp(nfld,mybdl) = '10-40 cm down' - else if (fieldName(nlen:nlen)=='3') then - reclevtyp(nfld,mybdl) = '40-100 cm down' - else if (fieldName(nlen:nlen)=='4') then - reclevtyp(nfld,mybdl) = '100-200 cm down' - endif - else if( fieldName(nlen-2:nlen) =='clm' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'atmos col' - else if( fieldName(nlen-2:nlen) =='toa' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'nom. top' - else if( fieldName(nlen-2:nlen) =='lcl' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'low cld lay' - else if( fieldName(nlen-2:nlen) =='mcl' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'mid cld lay' - else if( fieldName(nlen-2:nlen) =='hcl' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'high cld lay' - else if( fieldName(nlen-2:nlen) =='lct' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'low cld top' - else if( fieldName(nlen-2:nlen) =='mct' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'mid cld top' - else if( fieldName(nlen-2:nlen) =='hct' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'high cld top' - else if( fieldName(nlen-2:nlen) =='lcb' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'low cld bot' - else if( fieldName(nlen-2:nlen) =='mcb' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'mid cld bot' - else if( fieldName(nlen-2:nlen) =='hcb' ) then - recname(nfld,mybdl) = fieldName(1:nlen-3) - reclevtyp(nfld,mybdl) = 'high cld bot' - endif - endif - if( nlen > 5) then - if( fieldName(nlen-4:nlen) =='cnvcl' ) then - recname(nfld,mybdl) = fieldName(1:nlen-5) - reclevtyp(nfld,mybdl) = 'convect-cld laye' - else if( fieldName(nlen-5:nlen) =='cnvclt' ) then - recname(nfld,mybdl) = fieldName(1:nlen-6) - reclevtyp(nfld,mybdl) = 'convect-cld top' - else if( fieldName(nlen-5:nlen) =='cnvclb' ) then - recname(nfld,mybdl) = fieldName(1:nlen-6) - reclevtyp(nfld,mybdl) = 'convect-cld bot' - else if( fieldName(nlen-4:nlen) =='bndcl' ) then - recname(nfld,mybdl) = fieldName(1:nlen-5) - reclevtyp(nfld,mybdl) = 'bndary-layer cld' - - endif - endif - nfld = nfld + 1 - else - lm = nfldlev(i,mybdl) - if(first_set) then - idsl(mybdl) = 1 - idvc(mybdl) = 2 - idvm(mybdl) = 1 - first_set = .false. - endif - do j = 1,nfldlev(i,mybdl) - recname(nfld,mybdl) = trim(fieldName) - if(trim(fieldName) == "preshy" .or. trim(fieldName) == "presnh") then - recname(nfld,mybdl) = "pres" - endif - reclevtyp(nfld,mybdl) = "mid layer" - reclev(nfld,mybdl) = j - nfld = nfld + 1 - enddo - endif - enddo -! - end subroutine nemsio_first_call - -!---------------------------------------------------------------------------------------- - subroutine write_nemsio(fieldbundle, filename, nf_hours, & - nf_minutes, nf_seconds, nfsecond_num, nfsecond_den, mybdl, rc) -! - type(ESMF_FieldBundle), intent(in) :: fieldbundle - character(*), intent(in) :: filename - integer, intent(in) :: nf_hours, nf_minutes, nf_seconds - integer, intent(in) :: nfsecond_num, nfsecond_den - integer, intent(in) :: mybdl - integer, optional,intent(out) :: rc -! -!** local vars - integer i,ii,j,m,n,k, k1,k2,k3,jrec, nfseconds, nofsync, FFSYNC - integer istart, iend, jstart, jend, kstart, kend, nlen - real fhour - logical OPENED - real(4),dimension(:),allocatable :: tmp - real(4),dimension(:,:),allocatable :: arrayr4 - real(4),dimension(:,:),pointer :: arrayr42d - real(8),dimension(:,:),pointer :: arrayr82d - real(4),dimension(:,:,:),pointer :: arrayr43d - real(8),dimension(:,:,:),pointer :: arrayr83d - type(ESMF_Field), allocatable :: fcstField(:) - type(ESMF_TypeKind_Flag) :: typekind - type(nemsio_gfile) :: nemsiofile - character(128) :: fieldname -! - -!** init nemsio - call nemsio_init(iret=rc) -! -!** OPEN NEMSIO FILE -! - if (mype == 0) then - - nfseconds = nf_seconds*nfsecond_den + nfsecond_num - - print *,'in write_nemsio,bf nemsio_open, filename=',trim(filename), & - 'idate=',idate,'nfour=',NF_HOURS,NF_MINUTES,NF_SECONDS, 'mybdl=',mybdl, & - 'dim=',im,jm,lm,'nmeta=',nmeta,'idrt=',idrt,'nsoil=',nsoil, & - 'ntrac=',ntrac,'nrec=',nrec(mybdl),'extrameta=',extrameta(mybdl), & - 'vcoord=',vcoord(1:5,1,1),'nfhours=',nf_hours,nf_minutes,nfseconds,nfsecond_den, & - 'idsl=',idsl(mybdl),'idvc=',idvc(mybdl),idvm(mybdl) -! 'nmetavari=',nmetavari(mybdl),'nmetavarc=',nmetavarc(mybdl) -! if(nmetavari(mybdl)>0) print *,'in write_nemsio,bf nemsio_open,nmetavari=', & -! nmetavari(mybdl),'varival=',trim(variname(1,mybdl)),varival(1,mybdl) -! if(nmetavarc(mybdl)>0) print *,'in write_nemsio,bf nemsio_open,nmetavarc=', & -! nmetavarc(mybdl),'varcval=',trim(varcname(1,mybdl)),varcval(1,mybdl) -! if(nmetaaryi(mybdl)>0) print *,'in write_nemsio,bf nemsio_open,nmetaaryi=', & -! nmetaaryi(mybdl),'aryival=',trim(aryiname(1,mybdl)),aryilen(1,mybdl),aryival(1:3,1,mybdl) - - call nemsio_open(nemsiofile,trim(FILENAME),'write',rc, & - modelname="FV3GFS", gdatatype="bin4", & - idate=idate,nfhour=nf_hours, nfminute=nf_minutes, & - nfsecondn=nfseconds, nfsecondd=nfsecond_den, & - dimx=im,dimy=jm,dimz=lm, nmeta=nmeta,idrt=idrt, & - nsoil=nsoil,ntrac=ntrac,nrec=nrec(mybdl), ncldt=ncld, & - idsl=idsl(mybdl),idvc=idvc(mybdl), idvm=idvm(mybdl), & - vcoord=vcoord, lon=lon1d,lat=lat1d, & - extrameta=extrameta(mybdl),recname=RECNAME(1:nrec(mybdl),mybdl), & - reclevtyp=RECLEVTYP(1:nrec(mybdl),mybdl), & - reclev=RECLEV(1:nrec(mybdl),mybdl), & - nmetavari=nmetavari(mybdl), nmetavarr=nmetavarr4(mybdl), & - nmetavarc=nmetavarc(mybdl), nmetaaryi=nmetaaryi(mybdl), & - variname=variname(1:nmetavari(mybdl),mybdl), & - varival=varival(1:nmetavari(mybdl),mybdl), & - varrname=varr4name(1:nmetavarr4(mybdl),mybdl), & - varrval=varr4val(1:nmetavarr4(mybdl),mybdl), & - varcname=varcname(1:nmetavarc(mybdl),mybdl), & - varcval=varcval(1:nmetavarc(mybdl),mybdl), & - aryiname=aryiname(1:nmetaaryi(mybdl),mybdl), & - aryilen=aryilen(1:nmetaaryi(mybdl),mybdl), & - aryival=aryival(1:maxval(aryilen(1:nmetaaryi(mybdl),mybdl)), & - 1:nmetaaryi(mybdl),mybdl) ) - if(rc/=0) print *,'nemsio_open, file=',trim(filename),' iret=',rc - - endif -! -!** collect data to first pe and write out data -! - allocate(arrayr4(im,jm),tmp(im*jm)) - allocate(fcstField(fieldCount(mybdl))) - call ESMF_FieldBundleGet(fieldbundle, fieldList=fcstField, & - itemorderflag=ESMF_ITEMORDER_ADDORDER, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - - jrec = 1 - do i=1, fieldcount(mybdl) -! - call ESMF_FieldGet(fcstField(i),typekind=typekind, name=fieldname, rc=rc) - - if( nfldlev(i,mybdl) == 1) then - if( typekind == ESMF_TYPEKIND_R4) then - call ESMF_FieldGet(fcstField(i), localDe=0, farrayPtr=arrayr42d, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - istart = lbound(arrayr42d,1) - iend = ubound(arrayr42d,1) - jstart = lbound(arrayr42d,2) - jend = ubound(arrayr42d,2) - nlen = (iend-istart+1) * (jend-jstart+1) - elseif( typekind == ESMF_TYPEKIND_R8) then - call ESMF_FieldGet(fcstField(i), localDe=0, farrayPtr=arrayr82d, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - istart = lbound(arrayr82d,1) - iend = ubound(arrayr82d,1) - jstart = lbound(arrayr82d,2) - jend = ubound(arrayr82d,2) - nlen = (iend-istart+1) * (jend-jstart+1) - allocate( arrayr42d(istart:iend,jstart:jend)) -!$omp parallel do default(none) shared(arrayr42d,arrayr82d,jstart,jend,istart,iend) private(m,n) - do n=jstart,jend - do m=istart,iend - arrayr42d(m,n) = arrayr82d(m,n) - enddo - enddo - endif -! send data to task 0 - call mpi_gather(nlen, 1, MPI_INTEGER, irecv(:), 1, MPI_INTEGER, 0, mpi_comm, rc) - if(mype == 0) then - idisp(1) = 0 - do n=1,ntasks-1 - idisp(n+1) = idisp(n) + irecv(n) - enddo -! if(mype==0) print *,' collect data, idisp=',idisp(:) -! if(mype==0) print *,' collect data, irecv=',irecv(:) - endif -! if( trim(recname(jrec,mybdl))=="HGTsfc" .and. trim(recname(jrec,mybdl))=="sfc") then -! print *,'in write nemsio,fb=',i,' write jrec=',jrec,' val=',maxval(arrayr42d(istart:iend,jstart:jend)), & -! minval(arrayr42d(istart:iend,jstart:jend)),maxloc(arrayr42d(istart:iend,jstart:jend)), & -! minloc(arrayr42d(istart:iend,jstart:jend)) -! endif - call mpi_gatherv(arrayr42d,nlen,MPI_REAL, arrayr4,irecv,idisp(:), MPI_REAL, & - 0, mpi_comm, rc) - if(mype==0) then -! print *,'in write nemsio, value=',maxval(arrayr4(1:im,1:jm)), & -! minval(arrayr4(1:im,1:jm)),maxloc(arrayr4(1:im,1:jm)),minloc(arrayr4(1:im,1:jm)) - tmp = reshape(arrayr4, (/im*jm/)) - call nemsio_writerec(nemsiofile, jrec, tmp, iret=rc) -! print *,'in write nemsio,fb=',i,' write jrec=',jrec,'fld is', & -! trim(recname(jrec,mybdl)), 'rc=', & -! rc, 'value=',maxval(tmp),minval(tmp),maxloc(tmp),minloc(tmp) - endif - jrec = jrec + 1 - - elseif (nfldlev(i,mybdl) > 1) then - - if( typekind == ESMF_TYPEKIND_R4) then - call ESMF_FieldGet(fcstField(i), localDe=0, farrayPtr=arrayr43d, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - - istart = lbound(arrayr43d,1) - iend = ubound(arrayr43d,1) - jstart = lbound(arrayr43d,2) - jend = ubound(arrayr43d,2) - kstart = lbound(arrayr43d,3) - kend = ubound(arrayr43d,3) - nlen = (iend-istart+1) * (jend-jstart+1) - elseif( typekind == ESMF_TYPEKIND_R8) then - call ESMF_FieldGet(fcstField(i), localDe=0, farrayPtr=arrayr83d, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, file=__FILE__)) return ! bail out - istart = lbound(arrayr83d,1) - iend = ubound(arrayr83d,1) - jstart = lbound(arrayr83d,2) - jend = ubound(arrayr83d,2) - kstart = lbound(arrayr83d,3) - kend = ubound(arrayr83d,3) - nlen = (iend-istart+1) * (jend-jstart+1) - endif - - ! send data to task 0 - call mpi_gather(nlen, 1, MPI_INTEGER, irecv, 1, MPI_INTEGER, 0, mpi_comm, rc) - if(mype == 0) then - idisp(1) = 0 - do n=1,ntasks-1 - idisp(n+1) = idisp(n) + irecv(n) - enddo - endif -! write out all levels - allocate(arrayr42d(istart:iend,jstart:jend)) -! do k=kstart,kend - if ( write_nemsioflip ) then - k1=kend ; k2=kstart ; k3=-1 - else - k1=kstart ; k2=kend ; k3=1 - endif - do k=k1,k2,k3 - if (typekind == ESMF_TYPEKIND_R4) then -!$omp parallel do default(none) shared(arrayr42d,arrayr43d,jstart,jend,istart,iend,k) private(m,n) - do n=jstart,jend - do m=istart,iend - arrayr42d(m,n) = arrayr43d(m,n,k) - enddo - enddo - elseif (typekind == ESMF_TYPEKIND_R8) then -!$omp parallel do default(none) shared(arrayr42d,arrayr83d,jstart,jend,istart,iend,k) private(m,n) - do n=jstart,jend - do m=istart,iend - arrayr42d(m,n) = arrayr83d(m,n,k) - enddo - enddo - endif -! - call mpi_gatherv(arrayr42d, nlen, MPI_REAL, arrayr4, irecv,idisp, MPI_REAL, & - 0, mpi_comm, rc) - if(mype == 0) then - tmp = reshape(arrayr4, (/im*jm/)) - call nemsio_writerec(nemsiofile, jrec, tmp, iret=rc) - jrec = jrec + 1 - endif - enddo - deallocate(arrayr42d) -! - endif - enddo -! - deallocate(tmp) - deallocate(arrayr4) - deallocate(fcstField) -! -!** close nemsio file - call nemsio_close(nemsiofile, iret=rc) -! - call nemsio_finalize() -! -!** ffsync - if( write_fsyncflag ) then - do n=751,900 - inquire(n,opened=opened) - if(.not.opened)then - nofsync=n - exit - endif - enddo -! - open(unit=nofsync, file=trim(FILENAME) ) - rc=FFSYNC(nofsync) - if (rc.ne.0) then - print *,"Error returned from ffsync, file=", trim(FILENAME),"rc=",RC - ENDIF - close(nofsync) -! - endif -! - end subroutine write_nemsio - -!---------------------------------------------------------------------------------------- - - subroutine write_nemaio_final() - -!** - if(allocated(lon1d)) deallocate(lon1d) - if(allocated(lat1d)) deallocate(lat1d) - if(allocated(vcoord)) deallocate(vcoord) - if(allocated(idsl)) deallocate(idsl, idvc,idvm) - deallocate(irecv) - deallocate(idisp) - deallocate(fieldcount) - - end subroutine write_nemaio_final -! -!---------------------------------------------------------------------------------------- - - subroutine get_global_attr(fldbundle, mybdl, rc) - type(ESMF_FieldBundle), intent(in) :: fldbundle - integer, intent(in) :: mybdl - integer, intent(out) :: rc - -! local variable - integer i,j,k,n,kz, attcount - integer ni,naryi,nr4,nr8, nc - integer aklen - character(80) attName, hydrostatics, fldname - type(ESMF_TypeKind_Flag) :: typekind - real(4), dimension(:), allocatable :: ak4,bk4 - real(8), dimension(:), allocatable :: ak8,bk8 -! -! look at the field bundle attributes - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - attnestflag=ESMF_ATTNEST_OFF, Count=attcount, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - -! first loop over all the attributes to find the count for integer attr, real -! attr, etc - j=1 - k=1 - if (.not. allocated(nmetavari)) then - allocate(nmetavari(nbdl),nmetavarr4(nbdl),nmetavarr8(nbdl),nmetavarc(nbdl)) - allocate(nmetaaryi(nbdl),nmetaaryr4(nbdl),nmetaaryr8(nbdl),nmetaaryc(nbdl)) - allocate(extrameta(nbdl)) - endif - nmetavari(mybdl)=0; nmetavarr4(mybdl)=0; nmetavarr8(mybdl)=0; nmetavarc(mybdl)=0 - nmetaaryi(mybdl)=0; nmetaaryr4(mybdl)=0; nmetaaryr8(mybdl)=0; nmetaaryc(mybdl)=0 - aklen=0. - do i=1, attCount - - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - attnestflag=ESMF_ATTNEST_OFF, attributeIndex=i,name=attName, typekind=typekind, & - itemCount=n, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - -! add this attribute to the list of transfers - if (typekind==ESMF_TYPEKIND_CHARACTER) then - if( n == 1) then - nmetavarc(mybdl) = nmetavarc(mybdl) + 1 - else if (n > 1) then - nmetaaryc(mybdl) = nmetaaryc(mybdl) + 1 - endif - else if (typekind==ESMF_TYPEKIND_I4) then - if( n == 1) then - nmetavari(mybdl) = nmetavari(mybdl) + 1 - else if (n > 1) then - nmetaaryi(mybdl) = nmetaaryi(mybdl) + 1 - endif - else if (typekind==ESMF_TYPEKIND_R4) then - if( n == 1) then - nmetavarr4(mybdl) = nmetavarr4(mybdl) + 1 - else if (n > 1) then - if( trim(attName) == "ak" .or. trim(attName) == "bk") then - aklen = n - else - nmetaaryr4(mybdl) = nmetaaryr4(mybdl) + 1 - endif - endif - else if (typekind==ESMF_TYPEKIND_R8) then - if( n == 1) then - nmetavarr8(mybdl) = nmetavarr8(mybdl) + 1 - else if (n > 1) then - if( trim(attName) == "ak" .or. trim(attName) == "bk") then - aklen = n - else - nmetaaryr8(mybdl) = nmetaaryr8(mybdl) + 1 - endif - endif - endif - enddo - if(mybdl==2) nmetaaryi(mybdl) = nmetaaryi(mybdl) + 1 -! print *,'in get _global_attr, nmetavarc=',nmetavarc(mybdl),'nmetaaryc=',nmetaaryc(mybdl), & -! 'nmetavari=',nmetavari(mybdl),'nmetaaryi=',nmetaaryi(mybdl),'nmetavarr4=',nmetavarr4(mybdl), & -! 'nmetavarr8=',nmetavarr8(mybdl) , 'aklen=',aklen -! -! get value: - if (nmetavari(mybdl) > 0) then - if(.not.allocated(variname)) allocate(variname(100,nbdl),varival(100,nbdl)) - endif - if (nmetavarr4(mybdl) > 0) then - if(.not.allocated(varr4name)) allocate(varr4name(100,nbdl),varr4val(100,nbdl)) - endif - if (nmetavarr8(mybdl) > 0) then - if(.not.allocated(varr8name)) allocate(varr8name(100,nbdl),varr8val(100,nbdl)) - endif - nmetavarc(mybdl) = nmetavarc(mybdl) + 2 - if (nmetavarc(mybdl) > 0) then - if(.not.allocated(varcname)) allocate(varcname(100,nbdl),varcval(100,nbdl)) - endif - if (nmetaaryi(mybdl) > 0) then - if(.not.allocated(aryiname)) then - allocate(aryiname(20,nbdl),aryilen(20,nbdl)) - allocate(aryival(2000,20,nbdl)) - endif - endif - if (aklen > 0) then - if(.not.allocated(vcoord)) allocate(vcoord(aklen,3,2)) - vcoord = 0. - endif -! - ni=0; nr4=0; nr8=0; nc=0; naryi=0 - do i=1, attCount - - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - attnestflag=ESMF_ATTNEST_OFF, attributeIndex=i, name=attName, & - typekind=typekind, itemCount=n, rc=rc) - print *,'in write nemsio fist get att, att=',trim(attName),'n=',n - - if (typekind==ESMF_TYPEKIND_I4 ) then - if(n==1) then - ni = ni + 1 - variname(ni,mybdl) = trim(attName) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(variname(ni,mybdl)), value=varival(ni,mybdl), rc=rc) - if (trim(variname(ni,mybdl)) == 'ncnsto') ntrac=varival(ni,mybdl) - if (trim(variname(ni,mybdl)) == 'ncld') ncld=varival(ni,mybdl) - if (trim(variname(ni,mybdl)) == 'nsoil') nsoil=varival(ni,mybdl) - else - naryi = naryi + 1 - aryiname(naryi,mybdl) = trim(attName) - aryilen(naryi,mybdl) = n - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(attName), valueList=aryival(1:n,naryi,mybdl),rc=rc) - endif - else if (typekind==ESMF_TYPEKIND_R4) then - if(n==1) then - nr4 = nr4 + 1 - varr4name(nr4,mybdl) = trim(attName) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(varr4name(nr4,mybdl)), value=varr4val(nr4,mybdl), rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__)) & - return ! bail out - else - if(trim(attName) =="ak") then - allocate(ak4(n)) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(attName), valueList=ak4, rc=rc) - if( write_nemsioflip ) then - kz=size(ak4) - do k=1,kz - vcoord(k,1,1) = ak4(kz-k+1) - enddo - else - vcoord(:,1,1) = ak4(:) - endif - deallocate(ak4) - else if(trim(attName) =="bk") then - allocate(bk4(n)) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(attName), valueList=bk4, rc=rc) - if( write_nemsioflip ) then - kz=size(bk4) - do k=1,kz - vcoord(k,2,1) = bk4(kz-k+1) - enddo - else - vcoord(:,2,1) = bk4(:) - endif - deallocate(bk4) - endif - endif - else if (typekind==ESMF_TYPEKIND_R8) then - if(n==1) then - nr8 = nr8 + 1 - varr8name(nr8,mybdl) = trim(attName) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(varr8name(nr8,mybdl)), value=varr8val(nr8,mybdl), rc=rc) - else - if(trim(attName) =="ak") then - allocate(ak8(n)) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(attName), valueList=ak8, rc=rc) - if( write_nemsioflip ) then - kz=size(ak8) - do k=1,kz - vcoord(k,1,1) = ak8(kz-k+1) - enddo - else - vcoord(:,1,1) = ak8(:) - endif - deallocate(ak8) - else if(trim(attName) =="bk") then - allocate(bk8(n)) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(attName), valueList=bk8, rc=rc) - if( write_nemsioflip ) then - kz=size(bk8) - do k=1,kz - vcoord(k,2,1) = bk8(kz-k+1) - enddo - else - vcoord(:,2,1) = bk8(:) - endif - deallocate(bk8) - endif - endif - else if (typekind==ESMF_TYPEKIND_CHARACTER) then - if(n==1) then - nc = nc + 1 - varcname(nc,mybdl) = trim(attName) - call ESMF_AttributeGet(fldbundle, convention="NetCDF", purpose="FV3", & - name=trim(varcname(nc,mybdl)), value=varcval(nc,mybdl), rc=rc) - endif - endif - -! if(nmetavari(mybdl)>0) print *,'variname=',variname(1,mybdl),'varival=',varival(1,mybdl) -! if(nmetavarc(mybdl)>0) print *,'varcname=',varcname(1,mybdl),'varcval=',varcval(1,mybdl) -! - enddo -! - if(write_nemsioflip) then - nc = nc + 1 - varcname(nc,mybdl) = 'y-direction' - varcval(nc,mybdl) = 'north2south' - nc = nc + 1 - varcname(nc,mybdl) = 'z-direction' - varcval(nc,mybdl) = 'bottom2top' - else - nc = nc + 1 - varcname(nc,mybdl) = 'y-direction' - varcval(nc,mybdl) = 'south2north' - nc = nc + 1 - varcname(nc,mybdl) = 'z-direction' - varcval(nc,mybdl) = 'top2bottom' - endif -! -!output lpl - if( mybdl == 2 ) then - naryi = naryi + 1 - aryiname(naryi,mybdl) = 'lpl' - aryilen(naryi,mybdl) = jm - aryival(1:jm,naryi,mybdl) = im - endif - - if( nmetavari(mybdl)>0 .or. nmetavarc(mybdl)>0 .or. nmetavarr4(mybdl) >0 .or. nmetavarr8(mybdl)>0 & - .or. nmetaaryi(mybdl)>0) then - extrameta(mybdl) = .true. - else - extrameta(mybdl) = .false. - endif -! - end subroutine get_global_attr -! -!---------------------------------------------------------------------------------------- - -end module module_write_nemsio diff --git a/io/module_wrt_grid_comp.F90 b/io/module_wrt_grid_comp.F90 index cd397a2f9..3a8a30426 100644 --- a/io/module_wrt_grid_comp.F90 +++ b/io/module_wrt_grid_comp.F90 @@ -21,7 +21,6 @@ module module_wrt_grid_comp !*** Revision history !*** ! Jul 2017: J. Wang/G. Theurich - initial code for fv3 write grid component -! Aug 2017: J. Wang - add nemsio binary output for Gaussian grid ! Mar 2018: S Moorthi - changing cfhour to accommodate up to 99999 hours ! Aug 2019: J. Wang - add inline post ! @@ -34,14 +33,13 @@ module module_wrt_grid_comp use module_fv3_io_def, only : num_pes_fcst, & n_group, num_files, app_domain, & filename_base, output_grid, output_file, & - imo,jmo,ichunk2d,jchunk2d,write_nemsioflip,& + imo,jmo,ichunk2d,jchunk2d, & ichunk3d,jchunk3d,kchunk3d,nbits, & nsout => nsout_io, & cen_lon, cen_lat, & lon1, lat1, lon2, lat2, dlon, dlat, & stdlat1, stdlat2, dx, dy, iau_offset, & - write_fsyncflag, ideflate - use module_write_nemsio, only : nemsio_first_call, write_nemsio + ideflate use module_write_netcdf, only : write_netcdf use physcons, only : pi => con_pi use inline_post, only : inline_post_run, inline_post_getattr @@ -287,17 +285,12 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) if (lprnt) then print *,'output_grid=',trim(output_grid) end if - write_nemsioflip =.false. - write_fsyncflag =.false. if(trim(output_grid) == 'gaussian_grid' .or. trim(output_grid) == 'global_latlon') then call ESMF_ConfigGetAttribute(config=CF, value=imo, label ='imo:',rc=rc) call ESMF_ConfigGetAttribute(config=CF, value=jmo, label ='jmo:',rc=rc) - call ESMF_ConfigGetAttribute(config=CF, value=write_nemsioflip, label ='write_nemsioflip:', default=.true., rc=rc) - call ESMF_ConfigGetAttribute(config=CF, value=write_fsyncflag, label ='write_fsyncflag:', default=.true., rc=rc) if (lprnt) then print *,'imo=',imo,'jmo=',jmo - print *,'write_nemsioflip=',write_nemsioflip,'write_fsyncflag=',write_fsyncflag end if else if(trim(output_grid) == 'regional_latlon') then call ESMF_ConfigGetAttribute(config=CF, value=lon1, label ='lon1:',rc=rc) @@ -439,15 +432,9 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) ! allocate(slat(jmo), lat(jmo), lon(imo)) call splat(4, jmo, slat) - if(write_nemsioflip) then - do j=1,jmo - lat(j) = asin(slat(j)) * radi - enddo - else - do j=1,jmo - lat(jmo-j+1) = asin(slat(j)) * radi - enddo - endif + do j=1,jmo + lat(jmo-j+1) = asin(slat(j)) * radi + enddo wrt_int_state%latstart = lat(1) wrt_int_state%latlast = lat(jmo) do j=1,imo @@ -514,27 +501,15 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) if (mod(jmo,2) == 0) then ! if jmo even, lats do not include poles and equator delat = 180.d0/real(jmo,8) - if(write_nemsioflip) then - do j=1,jmo - lat(j) = 90.d0 - 0.5*delat - real(j-1,8)*delat - enddo - else - do j=1,jmo - lat(j) = -90.d0 + 0.5*delat + real(j-1,8)*delat - enddo - endif + do j=1,jmo + lat(j) = -90.d0 + 0.5*delat + real(j-1,8)*delat + enddo else ! if jmo odd, lats include poles and equator delat = 180.d0/real(jmo-1,8) - if(write_nemsioflip) then - do j=1,jmo - lat(j) = 90.d0 - real(j-1,8)*delat - enddo - else - do j=1,jmo - lat(j) = -90.d0 + real(j-1,8)*delat - enddo - endif + do j=1,jmo + lat(j) = -90.d0 + real(j-1,8)*delat + enddo endif wrt_int_state%latstart = lat(1) wrt_int_state%latlast = lat(jmo) @@ -1257,21 +1232,6 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) endif ! !----------------------------------------------------------------------- -!*** Initialize for nemsio file -!----------------------------------------------------------------------- -! - call ESMF_LogWrite("before initialize for nemsio file", ESMF_LOGMSG_INFO, rc=rc) - do i= 1, wrt_int_state%FBcount - if (trim(output_grid) == 'gaussian_grid' .and. trim(output_file(i)) == 'nemsio') then -! if (lprnt) write(0,*) 'in wrt initial, befnemsio_first_call wrt_int_state%FBcount=',wrt_int_state%FBcount - call nemsio_first_call(wrt_int_state%wrtFB(i), imo, jmo, & - wrt_int_state%mype, ntasks, wrt_mpi_comm, & - wrt_int_state%FBcount, i, idate, lat, lon, rc) - endif - enddo - call ESMF_LogWrite("after initialize for nemsio file", ESMF_LOGMSG_INFO, rc=rc) -! -!----------------------------------------------------------------------- ! IF(RC /= ESMF_SUCCESS) THEN WRITE(0,*)"FAIL: Write_Initialize." @@ -1548,12 +1508,8 @@ subroutine wrt_run(wrt_comp, imp_state_write, exp_state_write,clock,rc) endif endif - if ( trim(output_file(nbdl)) == 'nemsio' ) then - filename = trim(wrt_int_state%wrtFB_names(nbdl))//'f'//trim(cfhour)//'.nemsio' - else - filename = trim(wrt_int_state%wrtFB_names(nbdl))//'f'//trim(cfhour)//'.nc' - endif -! if(mype == lead_write_task) print *,'in wrt run,filename=',trim(filename) + filename = trim(wrt_int_state%wrtFB_names(nbdl))//'f'//trim(cfhour)//'.nc' +! if(mype == lead_write_task) print *,'in wrt run,filename=',trim(filename) ! ! set the time Attribute on the grid to carry it into the lower levels @@ -1598,18 +1554,7 @@ subroutine wrt_run(wrt_comp, imp_state_write, exp_state_write,clock,rc) else if (trim(output_grid) == 'gaussian_grid') then - if (trim(output_file(nbdl)) == 'nemsio') then - - wbeg = MPI_Wtime() - call write_nemsio(file_bundle,trim(filename),nf_hours, nf_minutes, & - nseconds, nseconds_num, nseconds_den,nbdl, rc) - wend = MPI_Wtime() - if (lprnt) then - write(*,'(A,F10.5,A,I4.2,A,I2.2)')' nemsio Write Time is ',wend-wbeg & - ,' at Fcst ',NF_HOURS,':',NF_MINUTES - endif - - else if (trim(output_file(nbdl)) == 'netcdf') then + if (trim(output_file(nbdl)) == 'netcdf') then wbeg = MPI_Wtime() call write_netcdf(file_bundle,wrt_int_state%wrtFB(nbdl),trim(filename), & From f8732ff34331a1ec36ac30a7178cfc79a6b4c6e8 Mon Sep 17 00:00:00 2001 From: Jun Wang <37633869+junwang-noaa@users.noreply.github.com> Date: Tue, 27 Jul 2021 09:10:23 -0500 Subject: [PATCH 03/14] Flexible output hour for history files (#345) * add flexibile output time * add fcst_mpi_comm to GFS_init_type Init_parm in atmos_model_init, remove commglobal communicator * update output_fh for fms history output, fix output_startfh initialization --- atmos_model.F90 | 45 ++----- ccpp/data/GFS_typedefs.F90 | 2 + ccpp/driver/GFS_init.F90 | 8 +- fv3_cap.F90 | 250 ++++++++++++++++++++----------------- module_fcst_grid_comp.F90 | 80 +++++++----- module_fv3_config.F90 | 2 + 6 files changed, 203 insertions(+), 184 deletions(-) diff --git a/atmos_model.F90 b/atmos_model.F90 index e6adc5ebc..bd2c1c887 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -99,8 +99,11 @@ module atmos_model_mod DIAG_SIZE use fv_iau_mod, only: iau_external_data_type,getiauforcing,iau_initialize use module_fv3_config, only: output_1st_tstep_rst, first_kdt, nsout, & - restart_endfcst -use module_block_data + restart_endfcst, output_fh, fcst_mpi_comm, & + fcst_ntasks +use module_block_data, only: block_atmos_copy, block_data_copy, & + block_data_copy_or_fill, & + block_data_combine_fractions !----------------------------------------------------------------------- @@ -156,10 +159,8 @@ module atmos_model_mod logical :: debug = .false. !logical :: debug = .true. logical :: sync = .false. -integer, parameter :: maxhr = 4096 -real, dimension(maxhr) :: fdiag = 0. -real :: fhmax=384.0, fhmaxhf=120.0, fhout=3.0, fhouthf=1.0,avg_max_length=3600. -namelist /atmos_model_nml/ blocksize, chksum_debug, dycore_only, debug, sync, fdiag, fhmax, fhmaxhf, fhout, fhouthf, ccpp_suite, avg_max_length +real :: avg_max_length=3600. +namelist /atmos_model_nml/ blocksize, chksum_debug, dycore_only, debug, sync, ccpp_suite, avg_max_length type (time_type) :: diag_time, diag_time_fhzero @@ -491,8 +492,6 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) #ifdef _OPENMP use omp_lib #endif - use fv_mp_mod, only: commglobal - use mpp_mod, only: mpp_npes use update_ca, only: read_ca_restart type (atmos_data_type), intent(inout) :: Atmos @@ -621,6 +620,8 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) !--- setup Init_parm Init_parm%me = mpp_pe() Init_parm%master = mpp_root_pe() + Init_parm%fcst_mpi_comm = fcst_mpi_comm + Init_parm%fcst_ntasks = fcst_ntasks Init_parm%tile_num = tile_num Init_parm%isc = isc Init_parm%jsc = jsc @@ -664,7 +665,7 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) call GFS_initialize (GFS_control, GFS_data%Statein, GFS_data%Stateout, GFS_data%Sfcprop, & GFS_data%Coupling, GFS_data%Grid, GFS_data%Tbd, GFS_data%Cldprop, GFS_data%Radtend, & - GFS_data%Intdiag, GFS_interstitial, commglobal, mpp_npes(), Init_parm) + GFS_data%Intdiag, GFS_interstitial, Init_parm) !--- populate/associate the Diag container elements call GFS_externaldiag_populate (GFS_Diag, GFS_Control, GFS_Data%Statein, GFS_Data%Stateout, & @@ -755,29 +756,7 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) call close_file (unit) endif - !--- get fdiag -#ifdef GFS_PHYS -!--- check fdiag to see if it is an interval or a list - if (nint(fdiag(2)) == 0) then - if (fhmaxhf > 0) then - maxhf = fhmaxhf / fhouthf - maxh = maxhf + (fhmax-fhmaxhf) / fhout - fdiag(1) = fhouthf - do i=2,maxhf - fdiag(i) = fdiag(i-1) + fhouthf - enddo - do i=maxhf+1,maxh - fdiag(i) = fdiag(i-1) + fhout - enddo - else - maxh = fhmax / fhout - do i = 2, maxh - fdiag(i) = fdiag(i-1) + fhout - enddo - endif - endif - if (mpp_pe() == mpp_root_pe()) write(6,*) "---fdiag",fdiag(1:40) -#endif + !--- set up clock time setupClock = mpp_clock_id( 'GFS Step Setup ', flags=clock_flag_default, grain=CLOCK_COMPONENT ) radClock = mpp_clock_id( 'GFS Radiation ', flags=clock_flag_default, grain=CLOCK_COMPONENT ) @@ -925,7 +904,7 @@ subroutine update_atmos_model_state (Atmos, rc) call get_time (Atmos%Time - diag_time, isec) call get_time (Atmos%Time - Atmos%Time_init, seconds) call atmosphere_nggps_diag(Atmos%Time,ltavg=.true.,avg_max_length=avg_max_length) - if (ANY(nint(fdiag(:)*3600.0) == seconds) .or. (GFS_control%kdt == first_kdt) .or. nsout > 0) then + if (ANY(nint(output_fh(:)*3600.0) == seconds) .or. (GFS_control%kdt == first_kdt) .or. nsout > 0) then if (mpp_pe() == mpp_root_pe()) write(6,*) "---isec,seconds",isec,seconds time_int = real(isec) if(Atmos%iau_offset > zero) then diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index a00b095f8..110864fbf 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -108,6 +108,8 @@ module GFS_typedefs type GFS_init_type integer :: me !< my MPI-rank integer :: master !< master MPI-rank + integer :: fcst_mpi_comm !< forecast tasks mpi communicator + integer :: fcst_ntasks !< total number of forecast tasks integer :: tile_num !< tile number for this MPI rank integer :: isc !< starting i-index for this MPI-domain integer :: jsc !< starting j-index for this MPI-domain diff --git a/ccpp/driver/GFS_init.F90 b/ccpp/driver/GFS_init.F90 index 6ea83e6e3..70f0f8494 100644 --- a/ccpp/driver/GFS_init.F90 +++ b/ccpp/driver/GFS_init.F90 @@ -27,8 +27,7 @@ module GFS_init !-------------- subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, & Coupling, Grid, Tbd, Cldprop, Radtend, & - Diag, Interstitial, communicator, & - ntasks, Init_parm) + Diag, Interstitial, Init_parm) #ifdef _OPENMP use omp_lib @@ -46,8 +45,6 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, & type(GFS_radtend_type), intent(inout) :: Radtend(:) type(GFS_diag_type), intent(inout) :: Diag(:) type(GFS_interstitial_type), intent(inout) :: Interstitial(:) - integer, intent(in) :: communicator - integer, intent(in) :: ntasks type(GFS_init_type), intent(in) :: Init_parm !--- local variables @@ -81,7 +78,8 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, & Init_parm%input_nml_file, Init_parm%tile_num, & Init_parm%blksz, Init_parm%ak, Init_parm%bk, & Init_parm%restart, Init_parm%hydrostatic, & - communicator, ntasks, nthrds) + Init_parm%fcst_mpi_comm, & + Init_parm%fcst_ntasks, nthrds) do nb = 1,nblks ix = Init_parm%blksz(nb) diff --git a/fv3_cap.F90 b/fv3_cap.F90 index 25b66b189..1477f3bbc 100644 --- a/fv3_cap.F90 +++ b/fv3_cap.F90 @@ -25,11 +25,10 @@ module fv3gfs_cap_mod label_Finalize, & NUOPC_ModelGet ! - use module_fv3_config, only: quilting, & + use module_fv3_config, only: quilting, output_fh, & nfhout, nfhout_hf, nsout, dt_atmos, & nfhmax, nfhmax_hf,output_hfmax, & output_interval,output_interval_hf, & - alarm_output_hf, alarm_output, & calendar, calendar_type, & force_date_from_configure, & cplprint_flag,output_1st_tstep_rst, & @@ -40,8 +39,7 @@ module fv3gfs_cap_mod wrttasks_per_group, n_group, & lead_wrttask, last_wrttask, & output_grid, output_file, & - nsout_io, & - iau_offset + nsout_io, iau_offset ! use module_fcst_grid_comp, only: fcstSS => SetServices, & fcstGrid, numLevels, numSoilLayers, & @@ -176,8 +174,6 @@ subroutine InitializeAdvertise(gcomp, rc) logical :: isPresent, isSet type(ESMF_VM) :: vm, fcstVM type(ESMF_Time) :: currTime, startTime, stopTime - type(ESMF_Time) :: alarm_output_hf_ring, alarm_output_ring - type(ESMF_Time) :: alarm_output_hf_stop, alarm_output_stop type(ESMF_TimeInterval) :: RunDuration, timeStep, rsthour, IAU_offsetTI type(ESMF_Config) :: cf type(ESMF_RegridMethod_Flag) :: regridmethod @@ -186,9 +182,11 @@ subroutine InitializeAdvertise(gcomp, rc) integer,dimension(6) :: date, date_init integer :: i, j, k, io_unit, urc, ierr + integer :: noutput_fh, nfh, nfh2 integer :: petcount integer :: num_output_file - logical :: opened + real :: output_startfh, outputfh, outputfh2(2) + logical :: opened, loutput_fh, lfreq character(ESMF_MAXSTR) :: name integer,dimension(:), allocatable :: petList, fcstPetList, originPetList, targetPetList character(len=esmf_maxstr),allocatable :: fcstItemNameList(:) @@ -197,7 +195,6 @@ subroutine InitializeAdvertise(gcomp, rc) integer :: isrcTermProcessing character(len=*),parameter :: subname='(fv3_cap:InitializeAdvertise)' - integer :: nfmout, nfsout , nfmout_hf, nfsout_hf real(kind=8) :: MPI_Wtime, timewri, timeis, timerhs ! !------------------------------------------------------------------------ @@ -266,7 +263,10 @@ subroutine InitializeAdvertise(gcomp, rc) call ESMF_ConfigGetAttribute(config=CF,value=iau_offset,default=0,label ='iau_offset:',rc=rc) if (iau_offset < 0) iau_offset=0 - if(mype == 0) print *,'af nems config,quilting=',quilting,'calendar=', trim(calendar),' iau_offset=',iau_offset + noutput_fh = ESMF_ConfigGetLen(config=CF, label ='output_fh:',rc=rc) + + if(mype == 0) print *,'af nems config,quilting=',quilting,'calendar=', trim(calendar),' iau_offset=',iau_offset, & + 'noutput_fh=',noutput_fh ! nfhout = 0 ; nfhmax_hf = 0 ; nfhout_hf = 0 ; nsout = 0 if ( quilting ) then @@ -324,13 +324,14 @@ subroutine InitializeAdvertise(gcomp, rc) enddo endif ! -! variables for alarms - call ESMF_ConfigGetAttribute(config=CF, value=nfhout, label ='nfhout:', rc=rc) - call ESMF_ConfigGetAttribute(config=CF, value=nfhmax_hf,label ='nfhmax_hf:',rc=rc) - call ESMF_ConfigGetAttribute(config=CF, value=nfhout_hf,label ='nfhout_hf:',rc=rc) - call ESMF_ConfigGetAttribute(config=CF, value=nsout, label ='nsout:',rc=rc) +! variables for output + call ESMF_ConfigGetAttribute(config=CF, value=nfhout, label ='nfhout:', default=-1,rc=rc) + call ESMF_ConfigGetAttribute(config=CF, value=nfhmax_hf,label ='nfhmax_hf:',default=-1,rc=rc) + call ESMF_ConfigGetAttribute(config=CF, value=nfhout_hf,label ='nfhout_hf:',default=-1,rc=rc) + call ESMF_ConfigGetAttribute(config=CF, value=nsout, label ='nsout:', default=-1,rc=rc) nsout_io = nsout - if(mype==0) print *,'af nems config,nfhout,nsout=',nfhout,nfhmax_hf,nfhout_hf, nsout +! + if(mype==0) print *,'af nems config,nfhout,nsout=',nfhout,nfhmax_hf,nfhout_hf, nsout,noutput_fh endif ! quilting ! @@ -462,6 +463,9 @@ subroutine InitializeAdvertise(gcomp, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return if(mype == 0) print *,'af fcstCom FBCount= ',FBcount ! +! set start time for output + output_startfh = 0. +! !----------------------------------------------------------------------- !*** create and initialize Write component(s). !----------------------------------------------------------------------- @@ -639,71 +643,70 @@ subroutine InitializeAdvertise(gcomp, rc) deallocate(targetPetList) ! !--------------------------------------------------------------------------------- -!--- SET UP ALARM +!--- set up output forecast time array ! -!--- for every time step output, overwrite nfhout - - if(nsout > 0) then - nfhout = int(nsout*dt_atmos/3600.) - nfmout = int((nsout*dt_atmos-nfhout*3600.)/60.) - nfsout = int(nsout*dt_atmos-nfhout*3600.-nfmout*60) - else - nfmout = 0 - nfsout = 0 +!--- get current forecast length + if(iau_offset > 0) then + output_startfh = iau_offset endif - call ESMF_TimeIntervalSet(output_interval, h=nfhout, m=nfmout, s=nfsout, rc=rc) - if(mype==0) print *,'af set up output_interval,rc=',rc,'nfhout=',nfhout,nfmout,nfsout - - if (nfhmax_hf > 0 .and. nsout <= 0) then - - nfmout_hf = 0; nfsout_hf = 0 - call ESMF_TimeIntervalSet(output_interval_hf, h=nfhout_hf, m=nfmout_hf, & - s=nfsout_hf, rc=rc) - call ESMF_TimeIntervalSet(output_hfmax, h=nfhmax_hf, m=0, s=0, rc=rc) - alarm_output_hf_stop = starttime + output_hfmax + output_interval_hf - if (currtime <= starttime+output_hfmax) then - nhf = (currtime-starttime)/output_interval_hf - alarm_output_hf_ring = startTime + (nhf+1_ESMF_KIND_I4)*output_interval_hf - if(iau_offset > 0) then - alarm_output_hf_ring = startTime + IAU_offsetTI - if( currtime > alarm_output_hf_ring ) then - alarm_output_hf_ring = startTime + (nhf+1_ESMF_KIND_I4)*output_interval_hf - endif + if(mype==0) print *,'in fv3 cap init, output_startfh=',output_startfh,'nsout=',nsout, & + 'iau_offset=',iau_offset,'nfhmax_hf=',nfhmax_hf,'nfhout_hf=',nfhout_hf, & + 'nfhout=',nfhout +! +!--- set up output_fh with output forecast hours +! if the run does not have iau, it will have output after first step integration as fh00 +! if the run has iau, it will start output at fh=00 at the cycle time (usually StartTime+IAU_offsetTI) + if(nsout > 0) then +!--- use nsout for output frequency nsout*dt_atmos + nfh = 0 + if( nfhmax > output_startfh ) nfh = nint((nfhmax-output_startfh)/(nsout*dt_atmos/3600.))+1 + if(nfh >0) then + allocate(output_fh(nfh)) + if( output_startfh == 0) then + output_fh(1) = dt_atmos/3600. + else + output_fh(1) = output_startfh endif - alarm_output_hf = ESMF_AlarmCreate(clock_fv3,name='ALARM_OUTPUT_HF', & - ringTime =alarm_output_hf_ring, & - ringInterval =output_interval_hf, & !<-- Time interval between - stoptime =alarm_output_hf_stop, & !<-- Time interval between - ringTimeStepCount=1, & !<-- The Alarm rings for this many timesteps - sticky =.false., & !<-- Alarm does not ring until turned off - rc =rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - - alarm_output_ring = startTime + output_hfmax + output_interval - else - nrg = (currtime-starttime-output_hfmax)/output_interval - alarm_output_ring = startTime + output_hfmax + (nrg+1_ESMF_KIND_I4) * output_interval + do i=2,nfh + output_fh(i) = (i-1)*nsout*dt_atmos/3600. + output_startfh + enddo endif - else - nrg = (currtime-starttime)/output_interval - alarm_output_ring = startTime + (nrg+1_ESMF_KIND_I4) * output_interval - if(iau_offset > 0) then - alarm_output_ring = startTime + IAU_offsetTI - if( currtime > alarm_output_ring ) then - alarm_output_ring = startTime + (nrg+1_ESMF_KIND_I4) * output_interval + elseif (nfhmax_hf > 0 ) then +!--- use high frequency output and low frequency for output forecast time + nfh = 0 + if( nfhout_hf>0 .and. nfhmax_hf>output_startfh) nfh = nint((nfhmax_hf-output_startfh)/nfhout_hf)+1 + nfh2 = 0 + if( nfhout>0 .and. nfhmax>nfhmax_hf) nfh2 = nint((nfhmax-nfhmax_hf)/nfhout) + if( nfh+nfh2 > 0) then + allocate(output_fh(nfh+nfh2)) + if( output_startfh == 0) then + output_fh(1) = dt_atmos/3600. + else + output_fh(1) = output_startfh + endif + do i=2,nfh + output_fh(i) = (i-1)*nfhout_hf + output_startfh + enddo + do i=1,nfh2 + output_fh(nfh+i) = nfhmax_hf + i*nfhout + enddo + endif + elseif (nfhout > 0 ) then +!--- use one output freqency + nfh = 0 + if( nfhout > 0 .and. nfhmax>output_startfh) nfh = nint((nfhmax-output_startfh)/nfhout) + 1 + if( nfh > 0 ) then + allocate(output_fh(nfh)) + if( output_startfh == 0) then + output_fh(1) = dt_atmos/3600. + else + output_fh(1) = output_startfh endif + do i=2,nfh + output_fh(i) = (i-1)*nfhout + output_startfh + enddo endif endif - - call ESMF_TimeIntervalSet(output_interval, h=nfhout, m=nfmout, & - s=nfsout, rc=rc) - alarm_output = ESMF_AlarmCreate(clock_fv3, name ='ALARM_OUTPUT', & - ringTime =alarm_output_ring, & !<-- Forecast/Restart start time (ESMF) - ringInterval =output_interval, & !<-- Time interval between - ringTimeStepCount=1, & !<-- The Alarm rings for this many timesteps - sticky =.false., & !<-- Alarm does not ring until turned off - rc =rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return ! !----------------------------------------------------------------------- !*** SET THE FIRST WRITE GROUP AS THE FIRST ONE TO ACT. @@ -713,6 +716,56 @@ subroutine InitializeAdvertise(gcomp, rc) ! !end quilting endif +! +!-- set up output forecast time if output_fh is specified + if (noutput_fh > 0 ) then +!--- use output_fh to sepcify output forecast time + loutput_fh = .true. + if(noutput_fh == 1) then + call ESMF_ConfigGetAttribute(CF,value=outputfh,label='output_fh:', rc=rc) + if(outputfh == -1) loutput_fh = .false. + endif + if( loutput_fh ) then + lfreq = .false. + if( allocated(output_fh)) deallocate(output_fh) + if(noutput_fh == 2) then + call ESMF_ConfigGetAttribute(CF,valueList=outputfh2,label='output_fh:', & + count=noutput_fh, rc=rc) + if(outputfh2(2) == -1) then + !--- output_hf is output frequency, the second item is -1 + lfreq = .true. + nfh = 0 + if( nfhmax>output_startfh) nfh = nint((nfhmax-output_startfh)/outputfh2(1)) + 1 + if( nfh > 0) then + allocate(output_fh(nfh)) + if( output_startfh == 0) then + output_fh(1) = dt_atmos/3600. + else + output_fh(1) = output_startfh + endif + do i=2,nfh + output_fh(i) = (i-1)*outputfh2(1) + output_startfh + enddo + endif + endif + endif + if( noutput_fh /= 2 .or. .not. lfreq ) then + allocate(output_fh(noutput_fh)) + output_fh = 0 + call ESMF_ConfigGetAttribute(CF,valueList=output_fh,label='output_fh:', & + count=noutput_fh, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + if( output_startfh == 0) then + if(output_fh(1)==0) output_fh(1) = dt_atmos/3600. + else + do i=1,noutput_fh + output_fh(i) = output_startfh + output_fh(i) + enddo + endif + endif + endif ! end loutput_fh + endif + if(mype==0) print *,'output_fh=',output_fh(1:size(output_fh)) ! ! --- advertise Fields in importState and exportState ------------------- @@ -1003,8 +1056,8 @@ subroutine ModelAdvance_phase2(gcomp, rc) type(ESMF_TimeInterval) :: time_elapsed integer :: na, i, urc + integer :: nfseconds logical :: fcstpe - logical :: isAlarmEnabled, isAlarmRinging, lalarm character(len=*),parameter :: subname='(fv3_cap:ModelAdvance_phase2)' character(240) :: msgString @@ -1041,47 +1094,18 @@ subroutine ModelAdvance_phase2(gcomp, rc) time_elapsed = currtime - starttime na = nint(time_elapsed/timeStep) - - ! if(mype==0) print *,'in fv3_cap,in model run, advance2,na=',na + call ESMF_TimeIntervalGet(time_elapsed, s=nfseconds, rc=rc) +! + if(mype==0) print *,'n fv3_cap,in model run, advance,na=',na !------------------------------------------------------------------------------- -!*** if alarms ring, call data transfer and write grid comp run +!*** if it is output time, call data transfer and write grid comp run if( quilting ) then - lalarm = .false. - if (nfhmax_hf > 0) then - - if(currtime <= starttime+output_hfmax) then - isAlarmEnabled = ESMF_AlarmIsEnabled(alarm = ALARM_OUTPUT_HF, rc = RC) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if(isAlarmEnabled) then - isAlarmRinging = ESMF_AlarmIsRinging(alarm = ALARM_OUTPUT_HF,rc = Rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if (isAlarmRinging) LALARM = .true. - endif - else - isAlarmEnabled = ESMF_AlarmIsEnabled(alarm = ALARM_OUTPUT, rc = RC) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if(isAlarmEnabled) then - isAlarmRinging = ESMF_AlarmIsRinging(alarm = ALARM_OUTPUT,rc = Rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if (isAlarmRinging) LALARM = .true. - endif - endif - - endif + output: if (ANY(nint(output_fh(:)*3600.0) == nfseconds)) then ! - isAlarmEnabled = ESMF_AlarmIsEnabled(alarm = ALARM_OUTPUT, rc = RC) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if(isAlarmEnabled) then - isAlarmRinging = ESMF_AlarmIsRinging(alarm = ALARM_OUTPUT,rc = Rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if (isAlarmRinging) LALARM = .true. - endif - ! if (mype == 0 .or. mype == lead_wrttask(1)) print *,' aft fcst run lalarm=',lalarm, & - ! 'FBcount=',FBcount,'na=',na - - output: IF(lalarm .or. na==first_kdt ) then + if (mype == 0 .or. mype == lead_wrttask(1)) print *,' aft fcst run output time=',nfseconds, & + 'FBcount=',FBcount,'na=',na timerhi = MPI_Wtime() call ESMF_VMEpochEnter(epoch=ESMF_VMEpoch_Buffer, rc=rc) @@ -1111,15 +1135,9 @@ subroutine ModelAdvance_phase2(gcomp, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return if (ESMF_LogFoundError(rcToCheck=urc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__, rcToReturn=rc)) return - ! if (mype == 0 .or. mype == lead_wrttask(n_group)) print *,'aft wrtgridcomp run,na=',na, & - ! ' time=', timerh- timerhi - call ESMF_LogWrite('Model Advance: after wrtcomp run ', ESMF_LOGMSG_INFO, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - ! if (mype == 0 .or. mype == lead_wrttask(n_group)) print *,'fv3_cap,aft model advance phase2,na=', & - !if (mype == 0 .or. mype == lead_wrttask(n_group)) print *,'fv3_cap,aft model advance phase2,na=', & - ! na,' time=', MPI_Wtime()- timewri if (n_group == write_groups) then n_group = 1 else diff --git a/module_fcst_grid_comp.F90 b/module_fcst_grid_comp.F90 index f79a4fb74..a02744058 100644 --- a/module_fcst_grid_comp.F90 +++ b/module_fcst_grid_comp.F90 @@ -43,18 +43,17 @@ module module_fcst_grid_comp addLsmask2grid use constants_mod, only: constants_init - use fms_mod, only: open_namelist_file, file_exist, check_nml_error, & + use fms_mod, only: open_namelist_file, file_exist, check_nml_error, & error_mesg, fms_init, fms_end, close_file, & write_version_number, uppercase - use mpp_mod, only: mpp_init, mpp_pe, mpp_root_pe, mpp_npes, mpp_get_current_pelist, & - mpp_set_current_pelist, stdlog, mpp_error, NOTE, FATAL, WARNING - use mpp_mod, only: mpp_clock_id, mpp_clock_begin, mpp_clock_end, mpp_sync + use mpp_mod, only: mpp_init, mpp_pe, mpp_root_pe, & + mpp_error, FATAL, WARNING + use mpp_mod, only: mpp_clock_id, mpp_clock_begin, mpp_clock_end use mpp_io_mod, only: mpp_open, mpp_close, MPP_NATIVE, MPP_RDONLY, MPP_DELETE - use mpp_domains_mod, only: mpp_get_global_domain, mpp_global_field, CORNER, domain2d - use mpp_domains_mod, only: mpp_get_compute_domains + use mpp_domains_mod, only: mpp_get_compute_domains, domain2D use memutils_mod, only: print_memuse_stats use sat_vapor_pres_mod, only: sat_vapor_pres_init @@ -71,7 +70,7 @@ module module_fcst_grid_comp ! use module_fv3_io_def, only: num_pes_fcst, num_files, filename_base, nbdlphys, & iau_offset - use module_fv3_config, only: dt_atmos, calendar, & + use module_fv3_config, only: dt_atmos, calendar, fcst_mpi_comm, fcst_ntasks, & quilting, calendar_type, & cplprint_flag, force_date_from_configure, & restart_endfcst @@ -178,11 +177,10 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) integer :: Run_length integer,dimension(6) :: date, date_end - integer :: mpi_comm_comp ! character(len=9) :: month integer :: initClock, unit, nfhour, total_inttime - integer :: mype, ntasks + integer :: mype character(3) cfhour character(4) dateSY character(2) dateSM,dateSD,dateSH,dateSN,dateSS @@ -200,9 +198,10 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) real(ESMF_KIND_R8),dimension(:,:), pointer :: glatPtr, glonPtr real(ESMF_KIND_R8),parameter :: dtor = 180.0_ESMF_KIND_R8 / 3.1415926535897931_ESMF_KIND_R8 integer :: jsc, jec, isc, iec, nlev - type(domain2D) :: domain + type(domain2D) :: domain + type(time_type) :: iautime integer :: n, fcstNpes, tmpvar - logical :: single_restart, fexist + logical :: freq_restart, fexist integer, allocatable, dimension(:) :: isl, iel, jsl, jel integer, allocatable, dimension(:,:,:) :: deBlockList @@ -212,7 +211,7 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) integer :: nestRootPet, peListSize(1) integer, allocatable :: petMap(:) - integer :: num_restart_interval + integer :: num_restart_interval, restart_starttime real,dimension(:),allocatable :: restart_interval ! !----------------------------------------------------------------------- @@ -237,9 +236,9 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return ! call ESMF_VMGetCurrent(vm=VM,rc=RC) - call ESMF_VMGet(vm=VM, localPet=mype, mpiCommunicator=mpi_comm_comp, & - petCount=ntasks, rc=rc) - if (mype == 0) write(0,*)'in fcst comp init, ntasks=',ntasks + call ESMF_VMGet(vm=VM, localPet=mype, mpiCommunicator=fcst_mpi_comm, & + petCount=fcst_ntasks, rc=rc) + if (mype == 0) write(0,*)'in fcst comp init, fcst_ntasks=',fcst_ntasks ! CF = ESMF_ConfigCreate(rc=rc) call ESMF_ConfigLoadFile(config=CF ,filename='model_configure' ,rc=rc) @@ -257,7 +256,7 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) if(mype == 0) print *,'af nems config,restart_interval=',restart_interval ! - call fms_init(mpi_comm_comp) + call fms_init(fcst_mpi_comm) call mpp_init() initClock = mpp_clock_id( 'Initialization' ) call mpp_clock_begin (initClock) !nesting problem @@ -344,22 +343,33 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) if (mype == 0) write(0,*)'num_atmos_calls=',atm_int_state%num_atmos_calls,'time_init=', & date_init,'time_atmos=',date,'time_end=',date_end,'dt_atmos=',dt_atmos, & 'Run_length=',Run_length + +! set up forecast time array that controls when to write out restart files frestart = 0 - single_restart = .false. - call get_time(atm_int_state%Time_end - atm_int_state%Time_atstart,total_inttime) + call get_time(atm_int_state%Time_end - atm_int_state%Time_init,total_inttime) +! set iau offset time + atm_int_state%Atm%iau_offset = iau_offset + if(iau_offset > 0 ) then + iautime = set_time(iau_offset * 3600, 0) + endif +! if the second item is -1, the first number is frequency + freq_restart = .false. if(num_restart_interval == 2) then - if(restart_interval(2)== -1) single_restart = .true. + if(restart_interval(2)== -1) freq_restart = .true. endif - if(single_restart) then - frestart(1) = restart_interval(1) * 3600 - elseif ( num_restart_interval == 1) then + if(freq_restart) then if(restart_interval(1) == 0) then frestart(1) = total_inttime else if(restart_interval(1) > 0) then tmpvar = restart_interval(1) * 3600 - frestart(1) = tmpvar atm_int_state%Time_step_restart = set_time (tmpvar, 0) - atm_int_state%Time_restart = atm_int_state%Time_atstart + atm_int_state%Time_step_restart + if(iau_offset > 0 ) then + atm_int_state%Time_restart = atm_int_state%Time_init + iautime + atm_int_state%Time_step_restart + frestart(1) = tmpvar + iau_offset *3600 + else + atm_int_state%Time_restart = atm_int_state%Time_init + atm_int_state%Time_step_restart + frestart(1) = tmpvar + endif i = 2 do while ( atm_int_state%Time_restart < atm_int_state%Time_end ) frestart(i) = frestart(i-1) + tmpvar @@ -367,19 +377,29 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) i = i + 1 enddo endif - else if(num_restart_interval > 1) then - do i=1,num_restart_interval - frestart(i) = restart_interval(i) * 3600 - enddo +! otherwise it is an array with forecast time at which the restart files will be written out + else if(num_restart_interval >= 1) then + if(restart_interval(1) == 0 ) then + frestart(1) = total_inttime + else + if(iau_offset > 0 ) then + restart_starttime = iau_offset *3600 + else + restart_starttime = 0 + endif + do i=1,num_restart_interval + frestart(i) = restart_interval(i) * 3600. + restart_starttime + enddo + endif endif +! if to write out restart at the end of forecast restart_endfcst = .false. if ( ANY(frestart(:) == total_inttime) ) restart_endfcst = .true. if (mype == 0) print *,'frestart=',frestart(1:10)/3600, 'restart_endfcst=',restart_endfcst, & 'total_inttime=',total_inttime - +! if there is restart writing during integration atm_int_state%intrm_rst = 0 if (frestart(1)>0) atm_int_state%intrm_rst = 1 - atm_int_state%Atm%iau_offset = iau_offset ! !----- write time stamps (for start time and end time) ------ diff --git a/module_fv3_config.F90 b/module_fv3_config.F90 index eee900635..53963b488 100644 --- a/module_fv3_config.F90 +++ b/module_fv3_config.F90 @@ -15,6 +15,7 @@ module module_fv3_config ! integer :: nfhout, nfhout_hf, nsout, dt_atmos integer :: nfhmax_hf, first_kdt + integer :: fcst_mpi_comm, fcst_ntasks real :: nfhmax type(ESMF_Alarm) :: alarm_output_hf, alarm_output type(ESMF_TimeInterval) :: output_hfmax @@ -25,6 +26,7 @@ module module_fv3_config logical :: force_date_from_configure logical :: restart_endfcst ! + real,dimension(:),allocatable :: output_fh character(esmf_maxstr),dimension(:),allocatable :: filename_base character(17) :: calendar=' ' integer :: calendar_type = -99 From fca82822c3293dd69d09a212c4b48f18a5d3fd2a Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 29 Jul 2021 06:44:50 -0600 Subject: [PATCH 04/14] Wrapper PR for "Update CCPP standard names for consistency (#337)" (#356) * update standard names in accordance with CCPPStandardNames PR#13 as of 2021/7/1 * Fix merge conflicts in ccpp/data/GFS_typedefs.meta Co-authored-by: grantfirl --- ccpp/config/ccpp_prebuild_config.py | 36 +- ccpp/data/CCPP_data.meta | 2 +- ccpp/data/GFS_typedefs.F90 | 7 +- ccpp/data/GFS_typedefs.meta | 2666 ++++++++++++++------------- ccpp/physics | 2 +- 5 files changed, 1358 insertions(+), 1355 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index f46a79689..956004d2b 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -272,27 +272,27 @@ }, 'mp_thompson' : { 'mp_thompson_init' : [ - 'cloud_droplet_number_concentration', - 'water_friendly_aerosol_number_concentration', - 'ice_friendly_aerosol_number_concentration', - 'tendency_of_water_friendly_aerosols_at_surface', - 'tendency_of_ice_friendly_aerosols_at_surface', + 'mass_number_concentration_of_cloud_liquid_water_particles_in_air', + 'mass_number_concentration_of_hygroscopic_aerosols', + 'mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols', + 'tendency_of_hygroscopic_aerosols_at_surface_adjacent_layer', + 'tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer', # DH* 2020-06-01: turn off calculation of effective radii, now done in GFS_rrtmg_pre - #'effective_radius_of_stratiform_cloud_liquid_water_particle_in_um', - #'effective_radius_of_stratiform_cloud_ice_particle_in_um', - #'effective_radius_of_stratiform_cloud_snow_particle_in_um', + #'effective_radius_of_stratiform_cloud_liquid_water_particle', + #'effective_radius_of_stratiform_cloud_ice_particle', + #'effective_radius_of_stratiform_cloud_snow_particle', # *DH 2020-06-01 ], 'mp_thompson_run' : [ - 'cloud_droplet_number_concentration_updated_by_physics', - 'water_friendly_aerosol_number_concentration_updated_by_physics', - 'ice_friendly_aerosol_number_concentration_updated_by_physics', - 'tendency_of_water_friendly_aerosols_at_surface', - 'tendency_of_ice_friendly_aerosols_at_surface', + 'mass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_state', + 'mass_number_concentration_of_hygroscopic_aerosols_of_new_state', + 'mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_of_new_state', + 'tendency_of_hygroscopic_aerosols_at_surface_adjacent_layer', + 'tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer', # DH* 2020-06-01: turn off calculation of effective radii, now done in GFS_rrtmg_pre - #'effective_radius_of_stratiform_cloud_liquid_water_particle_in_um', - #'effective_radius_of_stratiform_cloud_ice_particle_in_um', - #'effective_radius_of_stratiform_cloud_snow_particle_in_um', + #'effective_radius_of_stratiform_cloud_liquid_water_particle', + #'effective_radius_of_stratiform_cloud_ice_particle', + #'effective_radius_of_stratiform_cloud_snow_particle', # *DH 2020-06-01 ], }, @@ -303,13 +303,13 @@ }, 'GFS_rrtmgp_sw_post' : { 'GFS_rrtmgp_sw_post_run' : [ - 'tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step', + 'tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep', 'components_of_surface_downward_shortwave_fluxes', ], }, 'GFS_rrtmgp_lw_post' : { 'GFS_rrtmgp_lw_post_run' : [ - 'tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step', + 'tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep', ], }, #'subroutine_name_1' : 'all', diff --git a/ccpp/data/CCPP_data.meta b/ccpp/data/CCPP_data.meta index 43b82a22b..3541b4724 100644 --- a/ccpp/data/CCPP_data.meta +++ b/ccpp/data/CCPP_data.meta @@ -46,5 +46,5 @@ standard_name = GFS_interstitial_type_instance_all_threads long_name = instance of derived type GFS_interstitial_type units = DDT - dimensions = (omp_threads) + dimensions = (number_of_openmp_threads) type = GFS_interstitial_type diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 110864fbf..d9c89bd71 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1970,6 +1970,7 @@ module GFS_typedefs integer :: nsamftrac !< integer :: nscav !< integer :: nspc1 !< + integer :: ntcwx !< integer :: ntiwx !< integer :: ntk !< integer :: ntkev !< @@ -6904,7 +6905,7 @@ subroutine interstitial_create (Interstitial, IM, Model) ! allocate (Interstitial%otspt (Model%ntracp1,2)) ! Set up numbers of tracers for PBL, convection, etc: sets - ! Interstitial%{nvdiff,mg3_as_mg2,nn,tracers_total,ntiwx,ntk,ntkev,otspt,nsamftrac,ncstrac,nscav} + ! Interstitial%{nvdiff,mg3_as_mg2,nn,tracers_total,ntcwx,ntiwx,ntk,ntkev,otspt,nsamftrac,ncstrac,nscav} call interstitial_setup_tracers(Interstitial, Model) ! Allocate arrays allocate (Interstitial%adjsfculw_land (IM)) @@ -7443,8 +7444,7 @@ subroutine interstitial_setup_tracers(Interstitial, Model) Interstitial%nscav = Model%ntrac - Model%ncnd + 2 - - ! DH* STILL VALID GIVEN THE CHANGES BELOW FOR CPLCHM? + Interstitial%ntcwx = Model%ntcw if (Interstitial%nvdiff == Model%ntrac) then Interstitial%ntiwx = Model%ntiw else @@ -8012,6 +8012,7 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'Interstitial%nsamftrac = ', Interstitial%nsamftrac write (0,*) 'Interstitial%nscav = ', Interstitial%nscav write (0,*) 'Interstitial%nspc1 = ', Interstitial%nspc1 + write (0,*) 'Interstitial%ntcwx = ', Interstitial%ntcwx write (0,*) 'Interstitial%ntiwx = ', Interstitial%ntiwx write (0,*) 'Interstitial%nvdiff = ', Interstitial%nvdiff write (0,*) 'Interstitial%phys_hydrostatic = ', Interstitial%phys_hydrostatic diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index f6a331196..36c729fe8 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -10,14 +10,14 @@ standard_name = geopotential_at_interface long_name = geopotential at model layer interfaces units = m2 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys [prsi] standard_name = air_pressure_at_interface long_name = air pressure at model layer interfaces units = Pa - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys [prsi(:,1)] @@ -28,14 +28,14 @@ type = real kind = kind_phys [prsik] - standard_name = dimensionless_exner_function_at_model_interfaces + standard_name = dimensionless_exner_function_at_interface long_name = dimensionless Exner function at model layer interfaces units = none - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys [prsik(:,1)] - standard_name = dimensionless_exner_function_at_lowest_model_interface + standard_name = surface_dimensionless_exner_function long_name = dimensionless Exner function at lowest model interface units = none dimensions = (horizontal_loop_extent) @@ -45,32 +45,32 @@ standard_name = geopotential long_name = geopotential at model layer centers units = m2 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [prsl] standard_name = air_pressure long_name = mean layer pressure units = Pa - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [prsl(:,1)] - standard_name = air_pressure_at_lowest_model_layer + standard_name = air_pressure_at_surface_adjacent_layer long_name = mean pressure at lowest model layer units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys [prslk] - standard_name = dimensionless_exner_function_at_model_layers + standard_name = dimensionless_exner_function long_name = dimensionless Exner function at model layer centers units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [prslk(:,1)] - standard_name = dimensionless_exner_function_at_lowest_model_layer + standard_name = dimensionless_exner_function_at_surface_adjacent_layer long_name = dimensionless Exner function at lowest model layer units = none dimensions = (horizontal_loop_extent) @@ -87,11 +87,11 @@ standard_name = x_wind long_name = zonal wind units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [ugrs(:,1)] - standard_name = x_wind_at_lowest_model_layer + standard_name = x_wind_at_surface_adjacent_layer long_name = zonal wind at lowest model layer units = m s-1 dimensions = (horizontal_loop_extent) @@ -101,32 +101,32 @@ standard_name = y_wind long_name = meridional wind units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [vgrs(:,1)] - standard_name = y_wind_at_lowest_model_layer + standard_name = y_wind_at_surface_adjacent_layer long_name = meridional wind at lowest model layer units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [vvl] - standard_name = omega + standard_name = lagrangian_tendency_of_air_pressure long_name = layer mean vertical velocity units = Pa s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [tgrs] standard_name = air_temperature long_name = model layer mean temperature units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [tgrs(:,1)] - standard_name = air_temperature_at_lowest_model_layer + standard_name = air_temperature_at_surface_adjacent_layer long_name = mean temperature at lowest model layer units = K dimensions = (horizontal_loop_extent) @@ -136,136 +136,136 @@ standard_name = tracer_concentration long_name = model layer mean tracer concentration units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys -[qgrs(:,:,index_for_water_vapor)] - standard_name = water_vapor_specific_humidity +[qgrs(:,:,index_of_specific_humidity_in_tracer_concentration_array)] + standard_name = specific_humidity long_name = water vapor specific humidity units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,1,index_for_water_vapor)] - standard_name = water_vapor_specific_humidity_at_lowest_model_layer +[qgrs(:,1,index_of_specific_humidity_in_tracer_concentration_array)] + standard_name = specific_humidity_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[qgrs(:,:,index_for_liquid_cloud_condensate)] - standard_name = cloud_condensed_water_mixing_ratio +[qgrs(:,:,index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array)] + standard_name = cloud_liquid_water_mixing_ratio long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,1,index_for_liquid_cloud_condensate)] - standard_name = cloud_condensed_water_mixing_ratio_at_lowest_model_layer +[qgrs(:,1,index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array)] + standard_name = cloud_liquid_water_mixing_ratio_at_surface_adjacent_layer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) at lowest model layer units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[qgrs(:,:,index_for_ice_cloud_condensate)] - standard_name = ice_water_mixing_ratio +[qgrs(:,:,index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array)] + standard_name = cloud_ice_mixing_ratio long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_rain_water)] - standard_name = rain_water_mixing_ratio +[qgrs(:,:,index_of_rain_mixing_ratio_in_tracer_concentration_array)] + standard_name = rain_mixing_ratio long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_snow_water)] - standard_name = snow_water_mixing_ratio +[qgrs(:,:,index_of_snow_mixing_ratio_in_tracer_concentration_array)] + standard_name = snow_mixing_ratio long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_graupel)] +[qgrs(:,:,index_of_graupel_mixing_ratio_in_tracer_concentration_array)] standard_name = graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_ozone)] +[qgrs(:,:,index_of_ozone_mixing_ratio_in_tracer_concentration_array)] standard_name = ozone_mixing_ratio long_name = ozone mixing ratio units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_water_friendly_aerosols)] - standard_name = water_friendly_aerosol_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_hygroscopic_aerosols long_name = number concentration of water-friendly aerosols units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) - active = (index_for_water_friendly_aerosols > 0) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + active = (index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array > 0) type = real kind = kind_phys -[qgrs(:,:,index_for_ice_friendly_aerosols)] - standard_name = ice_friendly_aerosol_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols long_name = number concentration of ice-friendly aerosols units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) - active = (index_for_ice_friendly_aerosols > 0) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + active = (index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array > 0) type = real kind = kind_phys -[qgrs(:,:,index_for_liquid_cloud_number_concentration)] - standard_name = cloud_droplet_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air long_name = number concentration of cloud droplets (liquid) units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_liquid_cloud_number_concentration > 0) -[qgrs(:,:,index_for_ice_cloud_number_concentration)] - standard_name = ice_number_concentration + active = (index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array > 0) +[qgrs(:,:,index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air long_name = number concentration of ice units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_rain_number_concentration)] - standard_name = rain_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_rain_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_rain_water_in_air long_name = number concentration of rain units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_snow_number_concentration)] - standard_name = snow_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_snow_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_snow_in_air long_name = number concentration of snow units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_graupel_number_concentration)] - standard_name = graupel_number_concentration +[qgrs(:,:,index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_graupel_in_air long_name = number concentration of graupel units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[qgrs(:,:,index_for_turbulent_kinetic_energy)] +[qgrs(:,:,index_of_turbulent_kinetic_energy_in_tracer_concentration_array)] standard_name = turbulent_kinetic_energy long_name = turbulent kinetic energy units = J - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [diss_est] standard_name = dissipation_estimate_of_air_temperature_at_model_layers long_name = dissipation estimate model layer mean temperature units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -279,174 +279,174 @@ name = GFS_stateout_type type = ddt [gu0] - standard_name = x_wind_updated_by_physics + standard_name = x_wind_of_new_state long_name = zonal wind updated by physics units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [gu0(:,1)] - standard_name = x_wind_at_lowest_model_layer_updated_by_physics + standard_name = x_wind_of_new_state_at_surface_adjacent_layer long_name = zonal wind at lowest model layer updated by physics units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [gv0] - standard_name = y_wind_updated_by_physics + standard_name = y_wind_of_new_state long_name = meridional wind updated by physics units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [gv0(:,1)] - standard_name = y_wind_at_lowest_model_layer_updated_by_physics + standard_name = y_wind_of_new_state_at_surface_adjacent_layer long_name = meridional wind at lowest model layer updated by physics units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [gt0] - standard_name = air_temperature_updated_by_physics + standard_name = air_temperature_of_new_state long_name = temperature updated by physics units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [gt0(:,1)] - standard_name = air_temperature_at_lowest_model_layer_updated_by_physics + standard_name = air_temperature_of_new_state_at_surface_adjacent_layer long_name = temperature at lowest model layer updated by physics units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys [gq0] - standard_name = tracer_concentration_updated_by_physics + standard_name = tracer_concentration_of_new_state long_name = tracer concentration updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys -[gq0(:,:,index_for_water_vapor)] - standard_name = water_vapor_specific_humidity_updated_by_physics +[gq0(:,:,index_of_specific_humidity_in_tracer_concentration_array)] + standard_name = specific_humidity_of_new_state long_name = water vapor specific humidity updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,1,index_for_water_vapor)] - standard_name = water_vapor_specific_humidity_at_lowest_model_layer_updated_by_physics +[gq0(:,1,index_of_specific_humidity_in_tracer_concentration_array)] + standard_name = specific_humidity_of_new_state_at_surface_adjacent_layer long_name = water vapor specific humidity at lowest model layer updated by physics units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[gq0(:,:,index_for_ozone)] - standard_name = ozone_concentration_updated_by_physics +[gq0(:,:,index_of_ozone_mixing_ratio_in_tracer_concentration_array)] + standard_name = ozone_concentration_of_new_state long_name = ozone concentration updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_liquid_cloud_condensate)] - standard_name = cloud_condensed_water_mixing_ratio_updated_by_physics +[gq0(:,:,index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array)] + standard_name = cloud_liquid_water_mixing_ratio_of_new_state long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_ice_cloud_condensate)] - standard_name = ice_water_mixing_ratio_updated_by_physics +[gq0(:,:,index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array)] + standard_name = cloud_ice_mixing_ratio_of_new_state long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_rain_water)] - standard_name = rain_water_mixing_ratio_updated_by_physics +[gq0(:,:,index_of_rain_mixing_ratio_in_tracer_concentration_array)] + standard_name = rain_mixing_ratio_of_new_state long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_snow_water)] - standard_name = snow_water_mixing_ratio_updated_by_physics +[gq0(:,:,index_of_snow_mixing_ratio_in_tracer_concentration_array)] + standard_name = snow_mixing_ratio_of_new_state long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_graupel)] - standard_name = graupel_mixing_ratio_updated_by_physics +[gq0(:,:,index_of_graupel_mixing_ratio_in_tracer_concentration_array)] + standard_name = graupel_mixing_ratio_of_new_state long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_mass_weighted_rime_factor)] - standard_name = mass_weighted_rime_factor_updated_by_physics +[gq0(:,:,index_of_mass_weighted_rime_factor_in_tracer_concentration_array)] + standard_name = mass_weighted_rime_factor_of_new_state long_name = mass weighted rime factor updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_water_friendly_aerosols)] - standard_name = water_friendly_aerosol_number_concentration_updated_by_physics +[gq0(:,:,index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_hygroscopic_aerosols_of_new_state long_name = number concentration of water-friendly aerosols updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_water_friendly_aerosols > 0) -[gq0(:,:,index_for_ice_friendly_aerosols)] - standard_name = ice_friendly_aerosol_number_concentration_updated_by_physics + active = (index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array > 0) +[gq0(:,:,index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_of_new_state long_name = number concentration of ice-friendly aerosols updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_ice_friendly_aerosols > 0) -[gq0(:,:,index_for_liquid_cloud_number_concentration)] - standard_name = cloud_droplet_number_concentration_updated_by_physics + active = (index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array > 0) +[gq0(:,:,index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_state long_name = number concentration of cloud droplets updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_liquid_cloud_number_concentration > 0) -[gq0(:,:,index_for_ice_cloud_number_concentration)] - standard_name = ice_number_concentration_updated_by_physics + active = (index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array > 0) +[gq0(:,:,index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_cloud_ice_water_crystals_in_air_of_new_state long_name = number concentration of ice updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_rain_number_concentration)] - standard_name = rain_number_concentration_updated_by_physics +[gq0(:,:,index_of_mass_number_concentration_of_rain_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_rain_of_new_state long_name = number concentration of rain updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_snow_number_concentration)] - standard_name = snow_number_concentration_updated_by_physics +[gq0(:,:,index_of_mass_number_concentration_of_snow_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_snow_of_new_state long_name = number concentration of snow updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_graupel_number_concentration)] - standard_name = graupel_number_concentration_updated_by_physics +[gq0(:,:,index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array)] + standard_name = mass_number_concentration_of_graupel_of_new_state long_name = number concentration of graupel updated by physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[gq0(:,:,index_for_cloud_amount)] - standard_name = cloud_fraction_updated_by_physics +[gq0(:,:,index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array)] + standard_name = cloud_area_fraction_in_atmosphere_layer_of_new_state long_name = cloud fraction updated by physics units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys @@ -460,7 +460,7 @@ name = GFS_sfcprop_type type = ddt [slmsk] - standard_name = sea_land_ice_mask_real + standard_name = area_type long_name = landmask: sea/land/ice=0/1/2 units = flag dimensions = (horizontal_loop_extent) @@ -523,14 +523,14 @@ type = real kind = kind_phys [tiice] - standard_name = internal_ice_temperature + standard_name = temperature_in_ice_layer long_name = sea ice internal temperature units = K - dimensions = (horizontal_loop_extent,ice_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_sea_ice) type = real kind = kind_phys [snowd] - standard_name = surface_snow_thickness_water_equivalent + standard_name = lwe_surface_snow long_name = water equivalent snow depth units = mm dimensions = (horizontal_loop_extent) @@ -572,7 +572,7 @@ type = real kind = kind_phys [fice] - standard_name = sea_ice_concentration + standard_name = sea_ice_area_fraction_of_sea_area_fraction long_name = ice fraction over open water units = frac dimensions = (horizontal_loop_extent) @@ -593,7 +593,7 @@ type = real kind = kind_phys [hprime] - standard_name = statistical_measures_of_subgrid_orography + standard_name = statistical_measures_of_subgrid_orography_collection_array long_name = orographic metrics units = various dimensions = (horizontal_loop_extent,number_of_statistical_measures_of_subgrid_orography) @@ -601,7 +601,7 @@ kind = kind_phys [hprime(:,1)] standard_name = standard_deviation_of_subgrid_orography - long_name = standard deviation of subgrid orography + long_name = standard deviation of subgrid height_above_mean_sea_level units = m dimensions = (horizontal_loop_extent) type = real @@ -634,9 +634,9 @@ dimensions = (horizontal_dimension) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [snoalb] - standard_name = upper_bound_on_max_albedo_over_deep_snow + standard_name = upper_bound_of_max_albedo_assuming_deep_snow long_name = maximum snow albedo units = frac dimensions = (horizontal_loop_extent) @@ -656,7 +656,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [sfalb_lnd] standard_name = surface_diffused_shortwave_albedo_over_land long_name = mean surface diffused sw albedo over land @@ -665,7 +665,7 @@ type = real kind = kind_phys optional = F - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [sfalb_ice] standard_name = surface_diffused_shortwave_albedo_over_ice long_name = mean surface diffused sw albedo over ice @@ -673,7 +673,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [sfalb_lnd_bck] standard_name = surface_snow_free_albedo_over_land long_name = surface snow-free albedo over ice @@ -681,16 +681,16 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [alvwf] - standard_name = mean_vis_albedo_with_weak_cosz_dependency + standard_name = vis_albedo_weak_cosz long_name = mean vis albedo with weak cosz dependency units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [alnwf] - standard_name = mean_nir_albedo_with_weak_cosz_dependency + standard_name = nir_albedo_weak_cosz long_name = mean nir albedo with weak cosz dependency units = frac dimensions = (horizontal_loop_extent) @@ -704,14 +704,14 @@ type = real kind = kind_phys [shdmin] - standard_name = minimum_vegetation_area_fraction + standard_name = min_vegetation_area_fraction long_name = min fractional coverage of green vegetation units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [shdmax] - standard_name = maximum_vegetation_area_fraction + standard_name = max_vegetation_area_fraction long_name = max fractional coverage of green vegetation units = frac dimensions = (horizontal_loop_extent) @@ -753,27 +753,27 @@ type = real kind = kind_phys [oro] - standard_name = orography - long_name = orography + standard_name = height_above_mean_sea_level + long_name = height_above_mean_sea_level units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [oro_uf] - standard_name = orography_unfiltered - long_name = unfiltered orography + standard_name = unfiltered_height_above_mean_sea_level + long_name = unfiltered height_above_mean_sea_level units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [conv_act] - standard_name = gf_memory_counter + standard_name = consecutive_calls_for_grell_freitas_convection long_name = Memory counter for GF units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -782,7 +782,7 @@ type = real kind = kind_phys [weasd] - standard_name = water_equivalent_accumulated_snow_depth + standard_name = lwe_thickness_of_surface_snow_amount long_name = water equiv of acc snow depth over land and sea ice units = mm dimensions = (horizontal_loop_extent) @@ -810,7 +810,7 @@ type = real kind = kind_phys [f10m] - standard_name = ratio_of_wind_at_lowest_model_layer_and_wind_at_10m + standard_name = ratio_of_wind_at_surface_adjacent_layer_to_wind_at_10m long_name = ratio of sigma level 1 wind and 10m wind units = ratio dimensions = (horizontal_loop_extent) @@ -824,42 +824,42 @@ type = real kind = kind_phys [srflag] - standard_name = flag_for_precipitation_type + standard_name = precipitation_type long_name = snow/rain flag for precipitation units = flag dimensions = (horizontal_loop_extent) type = real kind = kind_phys [slc] - standard_name = volume_fraction_of_unfrozen_soil_moisture + standard_name = volume_fraction_of_unfrozen_water_in_soil long_name = liquid soil moisture units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys [smc] - standard_name = volume_fraction_of_soil_moisture + standard_name = volume_fraction_of_condensed_water_in_soil long_name = total soil moisture units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys [stc] standard_name = soil_temperature long_name = soil temperature units = K - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys [t2m] - standard_name = temperature_at_2m + standard_name = air_temperature_at_2m long_name = 2 meter temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys [th2m] - standard_name = potential_temperature_at_2m + standard_name = air_potential_temperature_at_2m long_name = 2 meter potential temperature units = K dimensions = (horizontal_loop_extent) @@ -873,21 +873,21 @@ type = real kind = kind_phys [tref] - standard_name = sea_surface_reference_temperature + standard_name = reference_sea_surface_temperature long_name = sea surface reference temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [z_c] - standard_name = sub_layer_cooling_thickness + standard_name = molecular_sublayer_thickness_in_sea_water long_name = sub-layer cooling thickness units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [c_0] standard_name = coefficient_c_0 long_name = coefficient 1 to calculate d(Tz)/d(Ts) @@ -895,7 +895,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [c_d] standard_name = coefficient_c_d long_name = coefficient 2 to calculate d(Tz)/d(Ts) @@ -903,7 +903,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [w_0] standard_name = coefficient_w_0 long_name = coefficient 3 to calculate d(Tz)/d(Ts) @@ -911,7 +911,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [w_d] standard_name = coefficient_w_d long_name = coefficient 4 to calculate d(Tz)/d(Ts) @@ -919,39 +919,39 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xt] - standard_name = diurnal_thermocline_layer_heat_content + standard_name = heat_content_in_diurnal_thermocline long_name = heat content in diurnal thermocline layer units = K m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xs] - standard_name = sea_water_salinity + standard_name = sea_water_salinity_in_diurnal_thermocline long_name = salinity content in diurnal thermocline layer units = ppt m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xu] - standard_name = diurnal_thermocline_layer_x_current + standard_name = x_current_in_diurnal_thermocline long_name = u-current content in diurnal thermocline layer units = m2 s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xv] - standard_name = diurnal_thermocline_layer_y_current + standard_name = y_current_in_diurnal_thermocline long_name = v-current content in diurnal thermocline layer units = m2 s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xz] standard_name = diurnal_thermocline_layer_thickness long_name = diurnal thermocline layer thickness @@ -959,7 +959,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [zm] standard_name = ocean_mixed_layer_thickness long_name = mixed layer thickness @@ -967,55 +967,55 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xtts] - standard_name = sensitivity_of_dtl_heat_content_to_surface_temperature + standard_name = derivative_of_heat_content_in_diurnal_thermocline_wrt_surface_skin_temperature long_name = d(xt)/d(ts) units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [xzts] - standard_name = sensitivity_of_dtl_thickness_to_surface_temperature + standard_name = derivative_of_diurnal_thermocline_layer_thickness_wrt_surface_skin_temperature long_name = d(xz)/d(ts) units = m K-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [d_conv] - standard_name = free_convection_layer_thickness + standard_name = free_convection_layer_thickness_in_sea_water long_name = thickness of free convection layer (FCL) units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [ifd] - standard_name = index_of_dtlm_start + standard_name = control_for_diurnal_thermocline_calculation long_name = index to start dtlm run or not units = index dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [dt_cool] - standard_name = sub_layer_cooling_amount + standard_name = molecular_sublayer_temperature_correction_in_sea_water long_name = sub-layer cooling amount units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [qrain] - standard_name = sensible_heat_flux_due_to_rainfall + standard_name = surface_sensible_heat_due_to_rainfall long_name = sensible heat flux due to rainfall units = W dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_nsstm_run > 0) + active = (control_for_nsstm > 0) [snowxy] standard_name = number_of_snow_layers long_name = number of snow layers @@ -1023,23 +1023,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [tvxy] - standard_name = vegetation_temperature + standard_name = canopy_temperature long_name = vegetation temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [tgxy] - standard_name = ground_temperature_for_noahmp + standard_name = ground_temperature long_name = ground temperature for noahmp units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [canicexy] standard_name = canopy_intercepted_ice_mass long_name = canopy intercepted ice mass @@ -1047,7 +1047,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [canliqxy] standard_name = canopy_intercepted_liquid_water long_name = canopy intercepted liquid water @@ -1055,23 +1055,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [eahxy] - standard_name = canopy_air_vapor_pressure + standard_name = air_vapor_pressure_in_canopy long_name = canopy air vapor pressure units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [tahxy] - standard_name = canopy_air_temperature + standard_name = air_temperature_in_canopy long_name = canopy air temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [cmxy] standard_name = surface_drag_coefficient_for_momentum_for_noahmp long_name = surface drag coefficient for momentum for noahmp @@ -1079,7 +1079,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [chxy] standard_name = surface_drag_coefficient_for_heat_and_moisture_for_noahmp long_name = surface exchange coeff heat & moisture for noahmp @@ -1087,47 +1087,47 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [fwetxy] - standard_name = area_fraction_of_wet_canopy + standard_name = wet_canopy_area_fraction long_name = area fraction of canopy that is wetted/snowed units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [sneqvoxy] - standard_name = snow_mass_at_previous_time_step + standard_name = lwe_thickness_of_snowfall_amount_on_previous_timestep long_name = snow mass at previous time step units = mm dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [alboldxy] - standard_name = snow_albedo_at_previous_time_step + standard_name = surface_albedo_assuming_deep_snow_on_previous_timestep long_name = snow albedo at previous time step units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [qsnowxy] - standard_name = snow_precipitation_rate_at_surface + standard_name = lwe_snowfall_rate long_name = snow precipitation rate at surface units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [wslakexy] - standard_name = lake_water_storage + standard_name = water_storage_in_lake long_name = lake water storage units = mm dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [zwtxy] standard_name = water_table_depth long_name = water table depth @@ -1135,7 +1135,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [waxy] standard_name = water_storage_in_aquifer long_name = water storage in aquifer @@ -1143,7 +1143,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [wtxy] standard_name = water_storage_in_aquifer_and_saturated_soil long_name = water storage in aquifer and saturated soil @@ -1151,71 +1151,71 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [tsnoxy] - standard_name = snow_temperature - long_name = snow_temperature + standard_name = temperature_in_surface_snow + long_name = temperature_in_surface_snow units = K - dimensions = (horizontal_loop_extent, lower_bound_of_snow_vertical_dimension_for_land_surface_model:0) + dimensions = (horizontal_loop_extent, lower_bound_of_vertical_dimension_of_surface_snow:0) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [zsnsoxy] - standard_name = layer_bottom_depth_from_snow_surface + standard_name = depth_from_snow_surface_at_bottom_interface long_name = depth from the top of the snow surface at the bottom of the layer units = m - dimensions = (horizontal_loop_extent, lower_bound_of_snow_vertical_dimension_for_land_surface_model:soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent, lower_bound_of_vertical_dimension_of_surface_snow:vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [snicexy] - standard_name = snow_layer_ice + standard_name = lwe_thickness_of_ice_in_surface_snow long_name = snow layer ice units = mm - dimensions = (horizontal_loop_extent, lower_bound_of_snow_vertical_dimension_for_land_surface_model:0) + dimensions = (horizontal_loop_extent, lower_bound_of_vertical_dimension_of_surface_snow:0) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [snliqxy] - standard_name = snow_layer_liquid_water + standard_name = lwe_thickness_of_liquid_water_in_surface_snow long_name = snow layer liquid water units = mm - dimensions = (horizontal_loop_extent, lower_bound_of_snow_vertical_dimension_for_land_surface_model:0) + dimensions = (horizontal_loop_extent, lower_bound_of_vertical_dimension_of_surface_snow:0) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [lfmassxy] - standard_name = leaf_mass + standard_name = leaf_mass_content long_name = leaf mass units = g m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [rtmassxy] - standard_name = fine_root_mass + standard_name = fine_root_mass_content long_name = fine root mass units = g m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [stmassxy] - standard_name = stem_mass + standard_name = stem_mass_content long_name = stem mass units = g m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [woodxy] - standard_name = wood_mass + standard_name = wood_mass_content long_name = wood mass including woody roots units = g m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [stblcpxy] standard_name = slow_soil_pool_mass_content_of_carbon long_name = stable carbon in deep soil @@ -1223,7 +1223,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [fastcpxy] standard_name = fast_soil_pool_mass_content_of_carbon long_name = short-lived carbon in shallow soil @@ -1231,7 +1231,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [xlaixy] standard_name = leaf_area_index long_name = leaf area index @@ -1239,7 +1239,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme .or. (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .and. flag_for_reading_leaf_area_index_from_input)) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme .or. (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .and. flag_for_reading_leaf_area_index_from_input)) [xsaixy] standard_name = stem_area_index long_name = stem area index @@ -1247,47 +1247,47 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [taussxy] - standard_name = nondimensional_snow_age + standard_name = dimensionless_age_of_surface_snow long_name = non-dimensional snow age units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [smoiseq] - standard_name = equilibrium_soil_water_content + standard_name = volumetric_equilibrium_soil_moisture long_name = equilibrium soil water content units = m3 m-3 - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [smcwtdxy] - standard_name = soil_water_content_between_soil_bottom_and_water_table + standard_name = volumetric_soil_moisture_between_soil_bottom_and_water_table long_name = soil water content between the bottom of the soil and the water table units = m3 m-3 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [deeprechxy] - standard_name = water_table_recharge_when_deep + standard_name = water_table_recharge_assuming_deep long_name = recharge to or from the water table when deep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [rechxy] - standard_name = water_table_recharge_when_shallow + standard_name = water_table_recharge_assuming_shallow long_name = recharge to or from the water table when shallow units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [snotime] standard_name = time_since_last_snowfall long_name = elapsed time since last snowfall @@ -1295,7 +1295,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [albdvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land @@ -1303,7 +1303,6 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) [albdnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land @@ -1311,7 +1310,6 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) [albivis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land @@ -1319,7 +1317,6 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) [albinir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land @@ -1327,7 +1324,6 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) [albdvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice @@ -1335,7 +1331,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [albdnir_ice] standard_name = surface_albedo_direct_NIR_over_ice long_name = direct surface albedo NIR band over ice @@ -1343,7 +1339,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [albivis_ice] standard_name = surface_albedo_diffuse_visible_over_ice long_name = diffuse surface albedo visible band over ice @@ -1351,7 +1347,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [albinir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice @@ -1359,7 +1355,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = ( flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = ( control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [wetness] standard_name = normalized_soil_wetness_for_land_surface_model long_name = normalized soil wetness for lsm @@ -1367,39 +1363,39 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [sh2o] standard_name = volume_fraction_of_unfrozen_soil_moisture_for_land_surface_model long_name = volume fraction of unfrozen soil moisture for lsm units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [keepsmfr] standard_name = volume_fraction_of_frozen_soil_moisture_for_land_surface_model long_name = volume fraction of frozen soil moisture for lsm units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [smois] standard_name = volume_fraction_of_soil_moisture_for_land_surface_model long_name = volumetric fraction of soil moisture for lsm units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [tslb] standard_name = soil_temperature_for_land_surface_model long_name = soil temperature for land surface model units = K - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [clw_surf_land] standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_land long_name = moist cloud water mixing ratio at surface over land @@ -1407,7 +1403,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [clw_surf_ice] standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_ice long_name = moist cloud water mixing ratio at surface over ice @@ -1415,7 +1411,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [qwv_surf_land] standard_name = water_vapor_mixing_ratio_at_surface_over_land long_name = water vapor mixing ratio at surface over land @@ -1423,7 +1419,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [qwv_surf_ice] standard_name = water_vapor_mixing_ratio_at_surface_over_ice long_name = water vapor mixing ratio at surface over ice @@ -1431,79 +1427,79 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [flag_frsoil] - standard_name = flag_for_frozen_soil_physics + standard_name = control_for_frozen_soil_physics long_name = flag for frozen soil physics (RUC) units = flag - dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [rhofr] - standard_name = density_of_frozen_precipitation + standard_name = frozen_precipitation_density long_name = density of frozen precipitation units = kg m-3 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [tsnow_land] - standard_name = snow_temperature_bottom_first_layer_over_land + standard_name = temperature_in_surface_snow_at_surface_adjacent_layer_over_land long_name = snow temperature at the bottom of the first snow layer over land units = K dimensions = (horizontal_dimension) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [tsnow_ice] - standard_name = snow_temperature_bottom_first_layer_over_ice + standard_name = temperature_in_surface_snow_at_surface_adjacent_layer_over_ice long_name = snow temperature at the bottom of the first snow layer over ice units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [snowfallac_land] - standard_name = total_accumulated_snowfall_over_land + standard_name = surface_snow_amount_over_land long_name = run-total snow accumulation on the ground units = kg m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [snowfallac_ice] - standard_name = total_accumulated_snowfall_over_ice + standard_name = surface_snow_amount_over_ice long_name = run-total snow accumulation on the ice units = kg m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [ustm] - standard_name = surface_friction_velocity_drag + standard_name = surface_friction_velocity_for_momentum long_name = friction velocity isolated for momentum only units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [zol] - standard_name = surface_stability_parameter + standard_name = ratio_of_height_to_monin_obukhov_length long_name = monin obukhov surface stability parameter units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [mol] - standard_name = theta_star + standard_name = surface_temperature_scale long_name = temperature flux divided by ustar (temperature scale) units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [rmol] standard_name = reciprocal_of_obukhov_length long_name = one over obukhov length @@ -1511,7 +1507,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [flhc] standard_name = surface_exchange_coefficient_for_heat long_name = surface exchange coefficient for heat @@ -1519,7 +1515,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [flqc] standard_name = surface_exchange_coefficient_for_moisture long_name = surface exchange coefficient for moisture @@ -1527,7 +1523,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [chs2] standard_name = surface_exchange_coefficient_for_heat_at_2m long_name = exchange coefficient for heat at 2 meters @@ -1535,7 +1531,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [cqs2] standard_name = surface_exchange_coefficient_for_moisture_at_2m long_name = exchange coefficient for moisture at 2 meters @@ -1543,24 +1539,24 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [lh] - standard_name = surface_latent_heat + standard_name = surface_upward_latent_heat_flux long_name = latent heating at the surface (pos = up) units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnsfclay) + active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme) [evap] - standard_name = kinematic_surface_upward_latent_heat_flux + standard_name = surface_upward_specific_humidity_flux long_name = kinematic surface upward latent heat flux units = kg kg-1 m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [hflx] - standard_name = kinematic_surface_upward_sensible_heat_flux + standard_name = surface_upward_temperature_flux long_name = kinematic surface upward sensible heat flux units = K m s-1 dimensions = (horizontal_loop_extent) @@ -1574,108 +1570,108 @@ type = real kind = kind_phys [raincprv] - standard_name = lwe_thickness_of_convective_precipitation_amount_from_previous_timestep + standard_name = lwe_thickness_of_convective_precipitation_amount_on_previous_timestep long_name = convective_precipitation_amount from previous timestep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [rainncprv] - standard_name = lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep + standard_name = lwe_thickness_of_explicit_precipitation_amount_on_previous_timestep long_name = explicit rainfall from previous timestep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [iceprv] - standard_name = lwe_thickness_of_ice_amount_from_previous_timestep + standard_name = lwe_thickness_of_ice_precipitation_amount_on_previous_timestep long_name = ice amount from previous timestep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [snowprv] - standard_name = lwe_thickness_of_snow_amount_from_previous_timestep + standard_name = snow_mass_on_previous_timestep long_name = snow amount from previous timestep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [graupelprv] - standard_name = lwe_thickness_of_graupel_amount_from_previous_timestep + standard_name = lwe_thickness_of_graupel_amount_on_previous_timestep long_name = graupel amount from previous timestep units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme .or. flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [draincprv] - standard_name = convective_precipitation_rate_from_previous_timestep + standard_name = convective_precipitation_rate_on_previous_timestep long_name = convective precipitation rate from previous timestep units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [drainncprv] - standard_name = explicit_rainfall_rate_from_previous_timestep + standard_name = explicit_precipitation_rate_on_previous_timestep long_name = explicit rainfall rate previous timestep units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [diceprv] - standard_name = ice_precipitation_rate_from_previous_timestep + standard_name = ice_precipitation_rate_on_previous_timestep long_name = ice precipitation rate from previous timestep units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [dsnowprv] - standard_name = snow_precipitation_rate_from_previous_timestep + standard_name = snowfall_rate_on_previous_timestep long_name = snow precipitation rate from previous timestep units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [dgraupelprv] - standard_name = graupel_precipitation_rate_from_previous_timestep + standard_name = graupel_precipitation_rate_on_previous_timestep long_name = graupel precipitation rate from previous timestep units = mm s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [alvsf] - standard_name = mean_vis_albedo_with_strong_cosz_dependency + standard_name = vis_albedo_strong_cosz long_name = mean vis albedo with strong cosz dependency units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [alnsf] - standard_name = mean_nir_albedo_with_strong_cosz_dependency + standard_name = nir_albedo_strong_cosz long_name = mean nir albedo with strong cosz dependency units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [facsf] - standard_name =fractional_coverage_with_strong_cosz_dependency + standard_name =strong_cosz_area_fraction long_name = fractional coverage with strong cosz dependency units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [facwf] - standard_name = fractional_coverage_with_weak_cosz_dependency + standard_name = weak_cosz_area_fraction long_name = fractional coverage with weak cosz dependency units = frac dimensions = (horizontal_loop_extent) @@ -1692,94 +1688,94 @@ name = GFS_coupling_type type = ddt [nirbmdi] - standard_name = surface_downwelling_direct_near_infrared_shortwave_flux_on_radiation_time_step + standard_name = surface_downwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw downward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [nirdfdi] - standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux_on_radiation_time_step + standard_name = surface_downwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw downward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [visbmdi] - standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux_on_radiation_time_step + standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw downward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [visdfdi] - standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux_on_radiation_time_step + standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw downward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [nirbmui] - standard_name = surface_upwelling_direct_near_infrared_shortwave_flux_on_radiation_time_step + standard_name = surface_upwelling_direct_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir beam sw upward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [nirdfui] - standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux_on_radiation_time_step + standard_name = surface_upwelling_diffuse_nir_shortwave_flux_on_radiation_timestep long_name = sfc nir diff sw upward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [visbmui] - standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux_on_radiation_time_step + standard_name = surface_upwelling_direct_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis beam sw upward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [visdfui] - standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux_on_radiation_time_step + standard_name = surface_upwelling_diffuse_uv_and_vis_shortwave_flux_on_radiation_timestep long_name = sfc uv+vis diff sw upward flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [sfcdsw] - standard_name = surface_downwelling_shortwave_flux_on_radiation_time_step + standard_name = surface_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [sfcnsw] - standard_name = surface_net_downwelling_shortwave_flux_on_radiation_time_step + standard_name = surface_net_downwelling_shortwave_flux_on_radiation_timestep long_name = total sky sfc netsw flx into ground units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [sfcdlw] - standard_name = surface_downwelling_longwave_flux_on_radiation_time_step + standard_name = surface_downwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc downward lw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [sfculw] - standard_name = surface_upwelling_longwave_flux_on_radiation_time_step + standard_name = surface_upwelling_longwave_flux_on_radiation_timestep long_name = total sky sfc upward lw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [htrlw] - standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_time_step + standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_timestep long_name = total sky longwave heating rate on physics time step units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -1787,7 +1783,7 @@ standard_name = RRTMGP_jacobian_of_lw_flux_upward long_name = RRTMGP Jacobian upward longwave flux profile units = W m-2 K-1 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -1795,7 +1791,7 @@ standard_name = RRTMGP_lw_flux_profile_upward_allsky long_name = RRTMGP upward longwave all-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -1803,33 +1799,33 @@ standard_name = RRTMGP_lw_flux_profile_downward_allsky long_name = RRTMGP downward longwave all-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) [rain_cpl] - standard_name = lwe_thickness_of_precipitation_amount_for_coupling + standard_name = cumulative_lwe_thickness_of_precipitation_amount_for_coupling long_name = total rain precipitation units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_stochastic_physics_perturbations .or. flag_for_chemistry_coupling .or. flag_for_global_cellular_automata) + active = (flag_for_surface_flux_coupling .or. flag_for_stochastic_physics_perturbations .or. flag_for_chemistry_coupling .or. flag_for_global_cellular_automata) [rainc_cpl] - standard_name = lwe_thickness_of_convective_precipitation_amount_for_coupling + standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_for_coupling long_name = total convective precipitation units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [snow_cpl] - standard_name = lwe_thickness_of_snow_amount_for_coupling + standard_name = cumulative_lwe_thickness_of_snow_amount_for_coupling long_name = total snow precipitation units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_stochastic_physics_perturbations .or. flag_for_chemistry_coupling .or. flag_for_global_cellular_automata) + active = (flag_for_surface_flux_coupling .or. flag_for_stochastic_physics_perturbations .or. flag_for_chemistry_coupling .or. flag_for_global_cellular_automata) [dusfc_cpl] standard_name = cumulative_surface_x_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc x momentum flux multiplied by timestep @@ -1837,7 +1833,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvsfc_cpl] standard_name = cumulative_surface_y_momentum_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc y momentum flux multiplied by timestep @@ -1845,7 +1841,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dtsfc_cpl] standard_name = cumulative_surface_upward_sensible_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc sensible heat flux multiplied by timestep @@ -1853,7 +1849,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dqsfc_cpl] standard_name = cumulative_surface_upward_latent_heat_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc latent heat flux multiplied by timestep @@ -1861,7 +1857,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dlwsfc_cpl] standard_name = cumulative_surface_downwelling_longwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc downward lw flux mulitplied by timestep @@ -1869,7 +1865,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dswsfc_cpl] standard_name = cumulative_surface_downwelling_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc downward sw flux multiplied by timestep @@ -1877,305 +1873,305 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dnirbm_cpl] - standard_name = cumulative_surface_downwelling_direct_near_infrared_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_downwelling_direct_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc nir beam downward sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dnirdf_cpl] - standard_name = cumulative_surface_downwelling_diffuse_near_infrared_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_downwelling_diffuse_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc nir diff downward sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvisbm_cpl] - standard_name = cumulative_surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc uv+vis beam dnwd sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvisdf_cpl] - standard_name = cumulative_surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative sfc uv+vis diff dnwd sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nlwsfc_cpl] - standard_name = cumulative_surface_net_downward_longwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwelling_longwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net downward lw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nswsfc_cpl] - standard_name = cumulative_surface_net_downward_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwelling_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net downward sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nnirbm_cpl] - standard_name = cumulative_surface_net_downward_direct_near_infrared_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwelling_direct_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net nir beam downward sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nnirdf_cpl] - standard_name = cumulative_surface_net_downward_diffuse_near_infrared_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwellling_diffuse_nir_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net nir diff downward sw flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nvisbm_cpl] - standard_name = cumulative_surface_net_downward_direct_ultraviolet_and_visible_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net uv+vis beam downward sw rad flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nvisdf_cpl] - standard_name = cumulative_surface_net_downward_diffuse_ultraviolet_and_visible_shortwave_flux_for_coupling_multiplied_by_timestep + standard_name = cumulative_surface_net_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling_multiplied_by_timestep long_name = cumulative net uv+vis diff downward sw rad flux multiplied by timestep units = W m-2 s dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dusfci_cpl] - standard_name = instantaneous_surface_x_momentum_flux_for_coupling + standard_name = surface_x_momentum_flux_for_coupling long_name = instantaneous sfc x momentum flux units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvsfci_cpl] - standard_name = instantaneous_surface_y_momentum_flux_for_coupling + standard_name = surface_y_momentum_flux_for_coupling long_name = instantaneous sfc y momentum flux units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dtsfci_cpl] - standard_name = instantaneous_surface_upward_sensible_heat_flux_for_coupling + standard_name = surface_upward_sensible_heat_flux_for_coupling long_name = instantaneous sfc sensible heat flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dqsfci_cpl] - standard_name = instantaneous_surface_upward_latent_heat_flux_for_coupling + standard_name = surface_upward_latent_heat_flux_for_coupling long_name = instantaneous sfc latent heat flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dlwsfci_cpl] - standard_name = instantaneous_surface_downwelling_longwave_flux_for_coupling + standard_name = surface_downwelling_longwave_flux_for_coupling long_name = instantaneous sfc downward lw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dswsfci_cpl] - standard_name = instantaneous_surface_downwelling_shortwave_flux_for_coupling + standard_name = surface_downwelling_shortwave_flux_for_coupling long_name = instantaneous sfc downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dnirbmi_cpl] - standard_name = instantaneous_surface_downwelling_direct_near_infrared_shortwave_flux_for_coupling + standard_name = surface_downwelling_direct_nir_shortwave_flux_for_coupling long_name = instantaneous sfc nir beam downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dnirdfi_cpl] - standard_name = instantaneous_surface_downwelling_diffuse_near_infrared_shortwave_flux_for_coupling + standard_name = surface_downwelling_diffuse_nir_shortwave_flux_for_coupling long_name = instantaneous sfc nir diff downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvisbmi_cpl] - standard_name = instantaneous_surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux_for_coupling + standard_name = surface_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous sfc uv+vis beam downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvisdfi_cpl] - standard_name = instantaneous_surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux_for_coupling + standard_name = surface_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous sfc uv+vis diff downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nlwsfci_cpl] - standard_name = instantaneous_surface_net_downward_longwave_flux_for_coupling + standard_name = surface_net_downwelling_longwave_flux_for_coupling long_name = instantaneous net sfc downward lw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nswsfci_cpl] - standard_name = instantaneous_surface_net_downward_shortwave_flux_for_coupling + standard_name = surface_net_downwelling_shortwave_flux_for_coupling long_name = instantaneous net sfc downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nnirbmi_cpl] - standard_name = instantaneous_surface_net_downward_direct_near_infrared_shortwave_flux_for_coupling + standard_name = surface_net_downwelling_direct_nir_shortwave_flux_for_coupling long_name = instantaneous net nir beam sfc downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nnirdfi_cpl] - standard_name = instantaneous_surface_net_downward_diffuse_near_infrared_shortwave_flux_for_coupling + standard_name = surface_net_downwelling_diffuse_nir_shortwave_flux_for_coupling long_name = instantaneous net nir diff sfc downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nvisbmi_cpl] - standard_name = instantaneous_surface_net_downward_direct_ultraviolet_and_visible_shortwave_flux_for_coupling + standard_name = surface_net_downwelling_direct_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous net uv+vis beam downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [nvisdfi_cpl] - standard_name = instantaneous_surface_net_downward_diffuse_ultraviolet_and_visible_shortwave_flux_for_coupling + standard_name = surface_net_downwelling_diffuse_uv_and_vis_shortwave_flux_for_coupling long_name = instantaneous net uv+vis diff downward sw flux units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [t2mi_cpl] - standard_name = instantaneous_temperature_at_2m_for_coupling + standard_name = temperature_at_2m_for_coupling long_name = instantaneous T2m units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [q2mi_cpl] - standard_name = instantaneous_specific_humidity_at_2m_for_coupling + standard_name = specific_humidity_at_2m_for_coupling long_name = instantaneous Q2m units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [u10mi_cpl] - standard_name = instantaneous_x_wind_at_10m_for_coupling + standard_name = x_wind_at_10m_for_coupling long_name = instantaneous U10m units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_wave_coupling) + active = (flag_for_surface_flux_coupling .or. flag_for_ocean_wave_coupling) [v10mi_cpl] - standard_name = instantaneous_y_wind_at_10m_for_coupling + standard_name = y_wind_at_10m_for_coupling long_name = instantaneous V10m units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_wave_coupling) + active = (flag_for_surface_flux_coupling .or. flag_for_ocean_wave_coupling) [tsfci_cpl] - standard_name = instantaneous_surface_skin_temperature_for_coupling + standard_name = surface_skin_temperature_for_coupling long_name = instantaneous sfc temperature units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [psurfi_cpl] - standard_name = instantaneous_surface_air_pressure_for_coupling + standard_name = surface_air_pressure_for_coupling long_name = instantaneous sfc pressure units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [ulwsfcin_cpl] - standard_name = surface_upwelling_longwave_flux_for_coupling + standard_name = surface_upwelling_longwave_flux_from_coupled_process long_name = surface upwelling LW flux for coupling units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dusfcin_cpl] - standard_name = surface_x_momentum_flux_for_coupling + standard_name = surface_x_momentum_flux_from_coupled_process long_name = sfc x momentum flux for coupling units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dvsfcin_cpl] - standard_name = surface_y_momentum_flux_for_coupling + standard_name = surface_y_momentum_flux_from_coupled_process long_name = sfc y momentum flux for coupling units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dtsfcin_cpl] - standard_name = surface_upward_sensible_heat_flux_for_coupling + standard_name = surface_upward_sensible_heat_flux_from_coupled_process long_name = sfc sensible heat flux input units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [dqsfcin_cpl] - standard_name = surface_upward_latent_heat_flux_for_coupling + standard_name = surface_upward_latent_heat_flux_from_coupled_process long_name = sfc latent heat flux input for coupling units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [hsnoin_cpl] - standard_name = surface_snow_thickness_for_coupling + standard_name = lwe_surface_snow_from_coupled_process long_name = sfc snow depth in meters over sea ice for coupling units = m dimensions = (horizontal_loop_extent) @@ -2188,7 +2184,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [sfc_alb_nir_dif_cpl] standard_name = surface_nir_albedo_diffuse_rad_for_coupling long_name = sfc near IR albedo for diffuse radiation for coupling @@ -2196,7 +2192,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [sfc_alb_vis_dir_cpl] standard_name = surface_vis_albedo_direct_rad_for_coupling long_name = sfc visible albedo for direct radiation for coupling @@ -2204,7 +2200,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [sfc_alb_vis_dif_cpl] standard_name = surface_vis_albedo_diffuse_rad_for_coupling long_name = sfc visible albedo for diffuse radiation for coupling @@ -2212,17 +2208,17 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [slimskin_cpl] - standard_name = sea_land_ice_mask_in + standard_name = area_type_from_coupled_process long_name = sea/land/ice mask input (=0/1/2) units = flag dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling) + active = (flag_for_surface_flux_coupling) [ca_deep] - standard_name = fraction_of_cellular_automata_for_deep_convection + standard_name = cellular_automata_area_fraction_for_deep_convection_from_coupled_process long_name = fraction of cellular automata for deep convection units = frac dimensions = (horizontal_loop_extent) @@ -2230,14 +2226,14 @@ kind = kind_phys active = (flag_for_cellular_automata) [vfact_ca] - standard_name = vertical_weight_for_ca + standard_name = cellular_automata_vertical_weight long_name = vertical weight for ca units = frac - dimensions = (vertical_dimension) + dimensions = (vertical_layer_dimension) type = real kind = kind_phys [ca1] - standard_name = cellular_automata_global_pattern + standard_name = cellular_automata_global_pattern_from_coupled_process long_name = cellular automata global pattern units = flag dimensions = (horizontal_loop_extent) @@ -2252,63 +2248,63 @@ type = real kind = kind_phys [shum_wts] - standard_name = weights_for_stochastic_shum_perturbation + standard_name = shum_weights_from_coupled_process long_name = weights for stochastic shum perturbation units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_stochastic_shum_option) [sppt_wts] - standard_name = weights_for_stochastic_sppt_perturbation + standard_name = sppt_weights_from_coupled_process long_name = weights for stochastic sppt perturbation units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_stochastic_physics_perturbations .or. flag_for_global_cellular_automata) [skebu_wts] - standard_name = weights_for_stochastic_skeb_perturbation_of_x_wind + standard_name = skeb_x_wind_weights_from_coupled_process long_name = weights for stochastic skeb perturbation of x wind units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_stochastic_skeb_option) [skebv_wts] - standard_name = weights_for_stochastic_skeb_perturbation_of_y_wind + standard_name = skeb_y_wind_weights_from_coupled_process long_name = weights for stochastic skeb perturbation of y wind units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_stochastic_skeb_option) [sfc_wts] - standard_name = weights_for_stochastic_surface_physics_perturbation + standard_name = surface_stochastic_weights_from_coupled_process long_name = weights for stochastic surface physics perturbation units = none - dimensions = (horizontal_loop_extent,number_of_land_surface_variables_perturbed) + dimensions = (horizontal_loop_extent,number_of_perturbed_land_surface_variables) type = real kind = kind_phys - active = (index_for_stochastic_land_surface_perturbation_type .ne. 0) + active = (control_for_stochastic_land_surface_perturbation .ne. 0) [nwfa2d] - standard_name = tendency_of_water_friendly_aerosols_at_surface + standard_name = tendency_of_hygroscopic_aerosols_at_surface_adjacent_layer long_name = instantaneous water-friendly sfc aerosol source units = kg-1 s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme .and. flag_for_aerosol_physics) + active = (control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .and. flag_for_aerosol_physics) [nifa2d] - standard_name = tendency_of_ice_friendly_aerosols_at_surface + standard_name = tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer long_name = instantaneous ice-friendly sfc aerosol source units = kg-1 s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme .and. flag_for_aerosol_physics) + active = (control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .and. flag_for_aerosol_physics) [ushfsfci] - standard_name = instantaneous_surface_upward_sensible_heat_flux_for_chemistry_coupling + standard_name = surface_upward_sensible_heat_flux_for_chemistry_coupling long_name = instantaneous upward sensible heat flux for chemistry coupling units = W m-2 dimensions = (horizontal_loop_extent) @@ -2319,15 +2315,15 @@ standard_name = convective_cloud_condesate_after_rainout long_name = convective cloud condesate after rainout units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [pfi_lsan] standard_name = ice_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of ice from nonconvective precipitation units = kg m-2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_chemistry_coupling) @@ -2335,7 +2331,7 @@ standard_name = liquid_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of liquid water from nonconvective precipitation units = kg m-2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_chemistry_coupling) @@ -2361,58 +2357,58 @@ dimensions = () type = integer [communicator] - standard_name = mpi_comm + standard_name = mpi_communicator long_name = MPI communicator units = index dimensions = () type = integer [ntasks] - standard_name = mpi_size + standard_name = number_of_mpi_tasks long_name = number of MPI tasks in communicator units = count dimensions = () type = integer [nthreads] - standard_name = omp_threads + standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes units = count dimensions = () type = integer [nlunit] - standard_name = iounit_namelist + standard_name = iounit_of_namelist long_name = fortran unit number for file opens units = none dimensions = () type = integer [fhzero] - standard_name = hours_between_clearing_of_diagnostic_buckets + standard_name = period_of_diagnostics_reset long_name = hours between clearing of diagnostic buckets units = h dimensions = () type = real kind = kind_phys [fn_nml] - standard_name = namelist_filename + standard_name = filename_of_namelist long_name = namelist filename units = none dimensions = () type = character kind = len=64 [input_nml_file_length] - standard_name = number_of_lines_of_namelist_filename_for_internal_file_reads + standard_name = number_of_lines_in_internal_namelist long_name = lines in namelist file for internal file reads units = count dimensions = () type = integer [input_nml_file] - standard_name = namelist_filename_for_internal_file_reads + standard_name = filename_of_internal_namelist long_name = namelist filename for internal file reads units = none - dimensions = (number_of_lines_of_namelist_filename_for_internal_file_reads) + dimensions = (number_of_lines_in_internal_namelist) type = character kind = len=256 [logunit] - standard_name = iounit_log + standard_name = iounit_of_log long_name = fortran unit number for logfile units = none dimensions = () @@ -2425,43 +2421,43 @@ type = real kind = kind_phys [ldiag3d] - standard_name = flag_diagnostics_3D + standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields units = flag dimensions = () type = logical [qdiag3d] - standard_name = flag_tracer_diagnostics_3D + standard_name = flag_for_tracer_diagnostics_3D long_name = flag for 3d tracer diagnostic fields units = flag dimensions = () type = logical [flag_for_gwd_generic_tend] - standard_name = flag_for_generic_gravity_wave_drag_tendency + standard_name = flag_for_generic_tendency_due_to_gravity_wave_drag long_name = true if GFS_GWD_generic should calculate tendencies units = flag dimensions = () type = logical [flag_for_pbl_generic_tend] - standard_name = flag_for_generic_planetary_boundary_layer_tendency + standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies units = flag dimensions = () type = logical [flag_for_dcnv_generic_tend] - standard_name = flag_for_generic_deep_convection_tendency + standard_name = flag_for_generic_tendency_due_to_deep_convection long_name = true if GFS_DCNV_generic should calculate tendencies units = flag dimensions = () type = logical [flag_for_scnv_generic_tend] - standard_name = flag_for_generic_shallow_convection_tendency + standard_name = flag_for_generic_tendency_due_to_shallow_convection long_name = true if GFS_SCNV_generic should calculate tendencies units = flag dimensions = () type = logical [lssav] - standard_name = flag_diagnostics + standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics units = flag dimensions = () @@ -2491,55 +2487,55 @@ dimensions = () type = integer [cnx] - standard_name = number_of_points_in_x_direction_for_this_cubed_sphere_face + standard_name = number_of_x_points_for_current_cubed_sphere_tile long_name = number of points in x direction for this cubed sphere face units = count dimensions = () type = integer [cny] - standard_name = number_of_points_in_y_direction_for_this_cubed_sphere_face + standard_name = number_of_y_points_for_current_cubed_sphere_tile long_name = number of points in y direction for this cubed sphere face units = count dimensions = () type = integer [naux2d] - standard_name = number_of_2d_auxiliary_arrays + standard_name = number_of_xy_dimensioned_auxiliary_arrays long_name = number of 2d auxiliary arrays to output (for debugging) units = count dimensions = () type = integer [naux3d] - standard_name = number_of_3d_auxiliary_arrays + standard_name = number_of_xyz_dimensioned_auxiliary_arrays long_name = number of 3d auxiliary arrays to output (for debugging) units = count dimensions = () type = integer [levs] - standard_name = vertical_dimension + standard_name = vertical_layer_dimension long_name = number of vertical levels units = count dimensions = () type = integer [ak] - standard_name = a_parameter_of_the_hybrid_coordinate + standard_name = sigma_pressure_hybrid_coordinate_a_coefficient long_name = a parameter for sigma pressure level calculations units = Pa - dimensions = (number_of_vertical_layers_for_radiation_calculations_plus_one) + dimensions = (vertical_interface_dimension_for_radiation) type = real [bk] - standard_name = b_parameter_of_the_hybrid_coordinate + standard_name = sigma_pressure_hybrid_coordinate_b_coefficient long_name = b parameter for sigma pressure level calculations units = none - dimensions = (number_of_vertical_layers_for_radiation_calculations_plus_one) + dimensions = (vertical_interface_dimension_for_radiation) type = real [levsp1] - standard_name = vertical_dimension_plus_one + standard_name = vertical_interface_dimension long_name = number of vertical levels plus one units = count dimensions = () type = integer [levsm1] - standard_name = vertical_dimension_minus_one + standard_name = vertical_layer_dimension_minus_one long_name = number of vertical levels minus one units = count dimensions = () @@ -2581,25 +2577,25 @@ dimensions = () type = integer [tile_num] - standard_name = number_of_tile + standard_name = index_of_cubed_sphere_tile long_name = tile number units = none dimensions = () type = integer [cplflx] - standard_name = flag_for_flux_coupling + standard_name = flag_for_surface_flux_coupling long_name = flag controlling cplflx collection (default off) units = flag dimensions = () type = logical [cplwav] - standard_name = flag_for_wave_coupling + standard_name = flag_for_ocean_wave_coupling long_name = flag controlling cplwav collection (default off) units = flag dimensions = () type = logical [cplwav2atm] - standard_name = flag_for_wave_coupling_to_atm + standard_name = flag_for_one_way_ocean_wave_coupling_to_atmosphere long_name = flag controlling ocean wave coupling to the atmosphere (default off) units = flag dimensions = () @@ -2611,7 +2607,7 @@ dimensions = () type = logical [lsidea] - standard_name = flag_idealized_physics + standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics units = flag dimensions = () @@ -2630,33 +2626,33 @@ dimensions = () type = integer [nszero] - standard_name = number_of_timesteps_between_diagnostic_clearing + standard_name = number_of_timesteps_between_diagnostics_resetting long_name = number of timesteps between calls to clear diagnostic variables units = count dimensions = () type = integer [dtp] - standard_name = time_step_for_physics + standard_name = timestep_for_physics long_name = physics timestep units = s dimensions = () type = real kind = kind_phys [dtf] - standard_name = time_step_for_dynamics + standard_name = timestep_for_dynamics long_name = dynamics timestep units = s dimensions = () type = real kind = kind_phys [idat] - standard_name = date_and_time_at_model_initialization + standard_name = date_and_time_at_model_initialization_in_iso_order long_name = initialization date and time units = none dimensions = (8) type = integer [idate] - standard_name = date_and_time_at_model_initialization_reordered + standard_name = date_and_time_at_model_initialization_in_united_states_order long_name = initial date with different size and ordering units = none dimensions = (4) @@ -2674,39 +2670,39 @@ dimensions = () type = integer [fhswr] - standard_name = frequency_for_shortwave_radiation + standard_name = period_of_shortwave_radiation_calls long_name = frequency for shortwave radiation units = s dimensions = () type = real kind = kind_phys [fhlwr] - standard_name = frequency_for_longwave_radiation + standard_name = period_of_longwave_radiation_calls long_name = frequency for longwave radiation units = s dimensions = () type = real kind = kind_phys [nhfrad] - standard_name = number_of_timesteps_for_radiation_calls_on_physics_timestep + standard_name = number_of_timesteps_for_concurrent_radiation_and_remainder_physics_calls_after_model_initialization long_name = number of timesteps for radiation calls on physics timestep (coldstarts only) units = count dimensions = () type = integer [levr] - standard_name = number_of_vertical_layers_for_radiation_calculations + standard_name = vertical_dimension_for_radiation long_name = number of vertical levels for radiation calculations units = count dimensions = () type = integer [levrp1] - standard_name = number_of_vertical_layers_for_radiation_calculations_plus_one + standard_name = vertical_interface_dimension_for_radiation long_name = number of vertical levels for radiation calculations + 1 units = count dimensions = () type = integer [nfxr] - standard_name = number_of_radiation_diagnostic_variables + standard_name = number_of_diagnostics_variables_for_radiation long_name = number of variables stored in the fluxr array units = count dimensions = () @@ -2724,49 +2720,49 @@ dimensions = () type = integer [nrcm] - standard_name = array_dimension_of_random_number + standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS units = count dimensions = () type = integer [iflip] - standard_name = flag_for_vertical_index_direction_control + standard_name = control_for_vertical_index_direction long_name = iflip - is not the same as flipv units = flag dimensions = () type = integer [isol] - standard_name = flag_for_solar_constant + standard_name = control_for_solar_constant long_name = use prescribed solar constant units = flag dimensions = () type = integer [ico2] - standard_name = flag_for_using_prescribed_global_mean_co2_value + standard_name = control_for_co2 long_name = prescribed global mean value (old opernl) units = flag dimensions = () type = integer [ialb] - standard_name = flag_for_using_climatology_albedo + standard_name = control_for_surface_albedo long_name = flag for using climatology alb, based on sfc type units = flag dimensions = () type = integer [iems] - standard_name = flag_for_surface_emissivity_control + standard_name = control_for_surface_emissivity long_name = surface emissivity control flag, use fixed value of 1 units = flag dimensions = () type = integer [iaer] - standard_name = flag_for_default_aerosol_effect_in_shortwave_radiation + standard_name = control_for_shortwave_radiation_aerosols long_name = default aerosol effect in sw only units = flag dimensions = () type = integer [icliq_sw] - standard_name = flag_for_optical_property_for_liquid_clouds_for_shortwave_radiation + standard_name = control_for_shortwave_radiation_liquid_clouds long_name = sw optical property for liquid clouds units = flag dimensions = () @@ -2826,25 +2822,25 @@ dimensions = () type = logical [ccnorm] - standard_name = flag_for_cloud_condensate_normalized_by_cloud_cover + standard_name = flag_for_in_cloud_condensate long_name = flag for cloud condensate normalized by cloud cover units = flag dimensions = () type = logical [norad_precip] - standard_name = flag_for_precipitation_effect_on_radiation + standard_name = flag_for_turning_off_precipitation_radiative_effect long_name = radiation precip flag for Ferrier/Moorthi units = flag dimensions = () type = logical [lwhtr] - standard_name = flag_for_output_of_longwave_heating_rate + standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output lw heating rate (Radtend%lwhc) units = flag dimensions = () type = logical [swhtr] - standard_name = flag_for_output_of_shortwave_heating_rate + standard_name = flag_for_output_of_tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep_assuming_clear_sky long_name = flag to output sw heating rate (Radtend%swhc) units = flag dimensions = () @@ -2870,53 +2866,53 @@ type = character kind = len=128 [lw_file_gas] - standard_name = rrtmgp_kdistribution_lw + standard_name = filename_of_rrtmgp_longwave_k_distribution long_name = file containing RRTMGP LW k-distribution (Model%lw_file_gas) units = none dimensions = () type = character kind = len=128 [lw_file_clouds] - standard_name = rrtmgp_coeff_lw_cloud_optics + standard_name = filename_of_rrtmgp_longwave_cloud_optics_coefficients long_name = file containing coefficients for RRTMGP LW cloud optics (Model%lw_file_clouds) units = none dimensions = () type = character kind = len=128 [rrtmgp_nBandsLW] - standard_name = number_of_lw_bands_rrtmgp + standard_name = number_of_longwave_bands long_name = number of lw bands used in RRTMGP (Model%rrtmgp_nBandsLW) units = count dimensions = () type = integer [rrtmgp_nGptsLW] - standard_name = number_of_lw_spectral_points_rrtmgp + standard_name = number_of_longwave_spectral_points long_name = number of spectral points in RRTMGP LW calculation (model%rrtmgp_nGptsLW) units = count dimensions = () type = integer [sw_file_gas] - standard_name = rrtmgp_kdistribution_sw + standard_name = filename_of_rrtmgp_shortwave_k_distribution long_name = file containing RRTMGP SW k-distribution (Model%sw_file_gas) units = none dimensions = () type = character kind = len=128 [sw_file_clouds] - standard_name = rrtmgp_coeff_sw_cloud_optics + standard_name = filename_of_rrtmgp_shortwave_cloud_optics_coefficients long_name = file containing coefficients for RRTMGP SW cloud optics (Model%sw_file_clouds) units = none dimensions = () type = character kind = len=128 [rrtmgp_nBandsSW] - standard_name = number_of_sw_bands_rrtmgp + standard_name = number_of_shortwave_bands long_name = number of sw bands used in RRTMGP (Model%rrtmgp_nBandsSW) units = count dimensions = () type = integer [rrtmgp_nGptsSW] - standard_name = number_of_sw_spectral_points_rrtmgp + standard_name = number_of_shortwave_spectral_points long_name = number of spectral points in RRTMGP SW calculation (model%rrtmgp_nGptsSW) units = count dimensions = () @@ -2972,13 +2968,13 @@ dimensions = () type = logical [rrtmgp_nrghice] - standard_name = number_of_rrtmgp_ice_roughness + standard_name = number_of_ice_roughness_categories long_name = number of ice-roughness categories in RRTMGP calculation (Model%rrtmgp_nrghice) units = count dimensions = () type = integer [rrtmgp_nGauss_ang] - standard_name = number_of_angles_used_in_gaussian_quadrature + standard_name = number_of_gaussian_quadrature_angles_for_radiation long_name = Number of angles used in Gaussian quadrature units = count dimensions = () @@ -2990,7 +2986,7 @@ dimensions = () type = logical [do_GPsw_Glw] - standard_name = scheme_flag + standard_name = flag_for_rrtmgp_shortwave_and_rrtmg_longwave_radiation long_name = When true GP is used for SW calculation and G is used for LW calculation units = flag dimensions = () @@ -3029,49 +3025,49 @@ dimensions = () type = logical [imp_physics] - standard_name = flag_for_microphysics_scheme + standard_name = control_for_microphysics_scheme long_name = choice of microphysics scheme units = flag dimensions = () type = integer [imp_physics_fer_hires] - standard_name = flag_for_fer_hires_microphysics_scheme + standard_name = identifier_for_fer_hires_microphysics_scheme long_name = choice of Ferrier-Aligo microphysics scheme units = flag dimensions = () type = integer [imp_physics_gfdl] - standard_name = flag_for_gfdl_microphysics_scheme + standard_name = identifier_for_gfdl_microphysics_scheme long_name = choice of GFDL microphysics scheme units = flag dimensions = () type = integer [imp_physics_thompson] - standard_name = flag_for_thompson_microphysics_scheme + standard_name = identifier_for_thompson_microphysics_scheme long_name = choice of Thompson microphysics scheme units = flag dimensions = () type = integer [imp_physics_wsm6] - standard_name = flag_for_wsm6_microphysics_scheme + standard_name = identifier_for_wsm6_microphysics_scheme long_name = choice of WSM6 microphysics scheme units = flag dimensions = () type = integer [imp_physics_zhao_carr] - standard_name = flag_for_zhao_carr_microphysics_scheme + standard_name = identifier_for_zhao_carr_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme units = flag dimensions = () type = integer [imp_physics_zhao_carr_pdf] - standard_name = flag_for_zhao_carr_pdf_microphysics_scheme + standard_name = identifier_for_zhao_carr_pdf_microphysics_scheme long_name = choice of Zhao-Carr microphysics scheme with PDF clouds units = flag dimensions = () type = integer [imp_physics_mg] - standard_name = flag_for_morrison_gettelman_microphysics_scheme + standard_name = identifier_for_morrison_gettelman_microphysics_scheme long_name = choice of Morrison-Gettelman microphysics scheme units = flag dimensions = () @@ -3131,55 +3127,55 @@ dimensions = () type = integer [dcorr_con] - standard_name = decorreltion_length_used_by_overlap_method + standard_name = decorrelation_length_used_by_overlap_method long_name = decorrelation length (default) used by cloud overlap method (iovr) units = km dimensions = () type = real [psautco] - standard_name = coefficient_from_cloud_ice_to_snow + standard_name = autoconversion_to_snow_coefficient long_name = auto conversion coeff from ice to snow units = none dimensions = (2) type = real kind = kind_phys [prautco] - standard_name = coefficient_from_cloud_water_to_rain + standard_name = autoconversion_to_rain_coefficient long_name = auto conversion coeff from cloud to rain units = none dimensions = (2) type = real kind = kind_phys [psauras] - standard_name = coefficient_from_cloud_ice_to_snow_ras + standard_name = autoconversion_to_snow_coefficient_for_deep_convection long_name = conversion coefficient from cloud ice to snow in ras units = none dimensions = (2) type = real kind = kind_phys [prauras] - standard_name = coefficient_from_cloud_water_to_rain_ras + standard_name = autoconversion_to_rain_coefficient_for_deep_convection long_name = conversion coefficient from cloud water to rain in ras units = none dimensions = (2) type = real kind = kind_phys [evpco] - standard_name = coefficient_for_evaporation_of_rainfall + standard_name = precipitation_evaporation_coefficient long_name = coeff for evaporation of largescale rain units = none dimensions = () type = real kind = kind_phys [wminco] - standard_name = cloud_condensed_water_conversion_threshold + standard_name = cloud_condensate_autoconversion_threshold_coefficient long_name = water and ice minimum threshold for Zhao units = none dimensions = (2) type = real kind = kind_phys [wminras] - standard_name = cloud_condensed_water_ice_conversion_threshold_ras + standard_name = cloud_condensate_autoconversion_threshold_coefficient_for_deep_convection long_name = conversion coefficient from cloud liquid and ice to precipitation in ras units = none dimensions = (2) @@ -3192,14 +3188,14 @@ dimensions = () type = integer [dlqf] - standard_name = condensate_fraction_detrained_in_updraft_layers + standard_name = cloud_condensate_detrainment_coefficient long_name = condensate fraction detrained with in a updraft layers units = none dimensions = (2) type = real kind = kind_phys [avg_max_length] - standard_name = time_interval_for_maximum_hourly_fields + standard_name = period_of_maximum_diagnostics_reset long_name = reset time interval for maximum hourly fields units = s dimensions = () @@ -3212,104 +3208,104 @@ dimensions = () type = integer [pdfflag] - standard_name = flag_for_pdf_for_morrison_gettelman_microphysics_scheme + standard_name = control_for_pdf_shape_for_microphysics long_name = pdf flag for MG macrophysics units = flag dimensions = () type = integer [mg_dcs] - standard_name = mg_autoconversion_size_threshold_ice_snow + standard_name = autoconverion_to_snow_size_threshold long_name = autoconversion size threshold for cloud ice to snow for MG microphysics units = um dimensions = () type = real kind = kind_phys [mg_qcvar] - standard_name = mg_cloud_water_variance + standard_name = relative_variance_of_subgrid_cloud_condensate_distribution long_name = cloud water relative variance for MG microphysics units = dimensions = () type = real kind = kind_phys [mg_ts_auto_ice] - standard_name = mg_time_scale_for_autoconversion_of_ice + standard_name = timescale_for_autoconversion_to_snow long_name = autoconversion time scale for ice for MG microphysics units = s dimensions = (2) type = real kind = kind_phys [mg_rhmini] - standard_name = mg_minimum_rh_for_ice + standard_name = relative_humidity_threshold_for_ice_nucleation long_name = relative humidity threshold parameter for nucleating ice for MG microphysics units = none dimensions = () type = real kind = kind_phys [mg_ncnst] - standard_name = mg_drop_concentration_constant + standard_name = prescribed_cloud_droplet_number_concentration long_name = droplet concentration constant for MG microphysics units = m-3 dimensions = () type = real kind = kind_phys [mg_ninst] - standard_name = mg_ice_concentration_constant + standard_name = prescribed_cloud_ice_number_concentration long_name = ice concentration constant for MG microphysics units = m-3 dimensions = () type = real kind = kind_phys [mg_ngnst] - standard_name = mg_graupel_concentration_constant + standard_name = prescribed_graupel_number_concentration long_name = graupel concentration constant for MG microphysics units = m-3 dimensions = () type = real kind = kind_phys [mg_berg_eff_factor] - standard_name = mg_bergeron_efficiency_factor + standard_name = bergeron_findeisen_process_efficiency_factor long_name = bergeron efficiency factor for MG microphysics units = frac dimensions = () type = real kind = kind_phys [mg_alf] - standard_name = mg_tuning_factor_for_alphas + standard_name = alpha_tuning_coefficient_for_morrison_gettelman_microphysics_scheme long_name = tuning factor for alphas (alpha = 1 - critical relative humidity) units = none dimensions = () type = real kind = kind_phys [mg_qcmin] - standard_name = mg_minimum_cloud_condensed_water_and_ice_mixing_ratio + standard_name = minimum_cloud_condensate_mixing_ratio_threshold long_name = minimum cloud condensed water and ice mixing ratio in MG macro clouds units = kg kg-1 dimensions = (2) type = real kind = kind_phys [mg_qcmin(1)] - standard_name = mg_minimum_cloud_condensed_water_mixing_ratio + standard_name = minimum_cloud_liquid_water_mixing_ratio_threshold long_name = minimum cloud condensed water mixing ratio in MG macro clouds units = kg kg-1 dimensions = () type = real kind = kind_phys [mg_qcmin(2)] - standard_name = mg_minimum_ice_mixing_ratio + standard_name = minimum_cloud_ice_mixing_ratio_threshold long_name = minimum ice mixing ratio in MG macro clouds units = kg kg-1 dimensions = () type = real kind = kind_phys [mg_precip_frac_method] - standard_name = mg_type_of_precip_fraction_method + standard_name = control_for_precipitation_area_fraction_method long_name = type of precip fraction method for MG microphysics (in_cloud or max_overlap) units = none dimensions = () type = character kind = len=16 [tf] - standard_name = frozen_cloud_threshold_temperature + standard_name = all_ice_cloud_threshold_temperature long_name = threshold temperature below which all cloud is ice units = K dimensions = () @@ -3323,7 +3319,7 @@ type = real kind = kind_phys [tcrf] - standard_name = cloud_phase_transition_denominator + standard_name = reciprocal_of_cloud_phase_transition_temperature_range long_name = denominator in cloud phase transition = 1/(tcr-tf) units = K-1 dimensions = () @@ -3336,93 +3332,93 @@ dimensions = () type = logical [microp_uniform] - standard_name = mg_flag_for_uniform_subcolumns + standard_name = flag_for_uniform_subcolumns long_name = flag for uniform subcolumns for MG microphysics units = flag dimensions = () type = logical [do_cldice] - standard_name = mg_flag_for_cloud_ice_processes + standard_name = flag_for_cloud_ice_processes long_name = flag for cloud ice processes for MG microphysics units = flag dimensions = () type = logical [hetfrz_classnuc] - standard_name = mg_flag_for_heterogeneous_freezing + standard_name = flag_for_heterogeneous_nucleation long_name = flag for heterogeneous freezing for MG microphysics units = flag dimensions = () type = logical [mg_nccons] - standard_name = mg_flag_drop_concentration_constant + standard_name = flag_for_prescribed_cloud_droplet_number_concentration long_name = flag for constant droplet concentration for MG microphysics units = flag dimensions = () type = logical [mg_nicons] - standard_name = mg_flag_ice_concentration_constant + standard_name = flag_for_prescribed_cloud_ice_number_concentration long_name = flag for constant ice concentration for MG microphysics units = flag dimensions = () type = logical [mg_ngcons] - standard_name = mg_flag_graupel_concentration_constant + standard_name = flag_for_prescribed_graupel_number_concentration long_name = flag for constant graupel concentration for MG microphysics units = flag dimensions = () type = logical [sed_supersat] - standard_name = mg_allow_supersat_after_sed + standard_name = flag_for_allowance_of_supersaturation_after_sedimentation long_name = allow supersaturation after sedimentation for MG microphysics units = flag dimensions = () type = logical [do_sb_physics] - standard_name = mg_flag_for_sb2001_autoconversion + standard_name = flag_for_seifert_and_beheng_2001_autoconversion long_name = flag for SB 2001 autoconversion or accretion for MG microphysics units = flag dimensions = () type = logical [mg_do_graupel] - standard_name = mg_flag_for_graupel + standard_name = flag_for_graupel_instead_of_hail long_name = flag for graupel for MG microphysics (hail possible if false) units = flag dimensions = () type = logical [mg_do_hail] - standard_name = mg_flag_for_hail + standard_name = flag_for_hail_instead_of_graupel long_name = flag for hail for MG microphysics (graupel possible if false) units = flag dimensions = () type = logical [mg_do_ice_gmao] - standard_name = mg_flag_for_gmao_ice_formulation + standard_name = flag_for_gmao_autoconversion_to_snow long_name = flag for gmao ice formulation units = flag dimensions = () type = logical [mg_do_liq_liu] - standard_name = mg_flag_for_liu_liquid_treatment + standard_name = flag_for_liu_autoconversion_to_rain long_name = flag for liu liquid treatment units = flag dimensions = () type = logical [shoc_parm(1)] - standard_name = shoc_tke_dissipatation_pressure_threshold + standard_name = pressure_threshold_for_increased_tke_dissipation long_name = pressure below which extra TKE diss. is applied in SHOC units = Pa dimensions = () type = real kind = kind_phys [shoc_parm(2)] - standard_name = shoc_tke_dissipation_tunable_parameter + standard_name = multiplicative_tunable_parameter_for_tke_dissipation long_name = mult. tuning parameter for TKE diss. in SHOC units = none dimensions = () type = real kind = kind_phys [shoc_parm(3)] - standard_name = shoc_tke_dissipation_tunable_parameter_near_surface + standard_name = multiplicative_tunable_parameter_for_tke_dissipation_at_surface_adjacent_layer long_name = mult. tuning parameter for TKE diss. at surface in SHOC units = none dimensions = () @@ -3443,7 +3439,7 @@ type = real kind = kind_phys [ncnd] - standard_name = number_of_cloud_condensate_types + standard_name = number_of_condensate_species long_name = number of cloud condensate types units = count dimensions = () @@ -3461,7 +3457,7 @@ dimensions = () type = logical [ttendlim] - standard_name = limit_for_temperature_tendency_for_microphysics + standard_name = max_tendency_of_air_potential_temperature_due_to_large_scale_precipitation long_name = temperature tendency limiter per physics time step units = K s-1 dimensions = () @@ -3493,83 +3489,83 @@ dimensions = () type = logical [lsm] - standard_name = flag_for_land_surface_scheme + standard_name = control_for_land_surface_scheme long_name = flag for land surface model units = flag dimensions = () type = integer [lsm_noah] - standard_name = flag_for_noah_land_surface_scheme + standard_name = identifier_for_noah_land_surface_scheme long_name = flag for NOAH land surface model units = flag dimensions = () type = integer [lsm_noahmp] - standard_name = flag_for_noahmp_land_surface_scheme + standard_name = identifier_for_noahmp_land_surface_scheme long_name = flag for NOAH MP land surface model units = flag dimensions = () type = integer [lsm_ruc] - standard_name = flag_for_ruc_land_surface_scheme + standard_name = identifier_for_ruc_land_surface_scheme long_name = flag for RUC land surface model units = flag dimensions = () type = integer [lsm_noah_wrfv4] - standard_name = flag_for_noah_wrfv4_land_surface_scheme + standard_name = identifier_for_noah_wrfv4_land_surface_scheme long_name = flag for NOAH WRFv4 land surface model units = flag dimensions = () type = integer [kice] - standard_name = ice_vertical_dimension + standard_name = vertical_dimension_of_sea_ice long_name = vertical loop extent for ice levels, start at 1 units = count dimensions = () type = integer [lsoil] - standard_name = soil_vertical_dimension + standard_name = vertical_dimension_of_soil long_name = number of soil layers units = count dimensions = () type = integer [lsoil_lsm] - standard_name = soil_vertical_dimension_for_land_surface_model + standard_name = vertical_dimension_of_soil_internal_to_land_surface_scheme long_name = number of soil layers internal to land surface model units = count dimensions = () type = integer [lsnow_lsm] - standard_name = snow_vertical_dimension_for_land_surface_model + standard_name = vertical_dimension_of_surface_snow long_name = maximum number of snow layers for land surface model units = count dimensions = () type = integer [lsnow_lsm_lbound] - standard_name = lower_bound_of_snow_vertical_dimension_for_land_surface_model + standard_name = lower_bound_of_vertical_dimension_of_surface_snow long_name = lower bound of of snow-related arrays for land surface model units = count dimensions = () type = integer [lsnow_lsm_ubound] - standard_name = upper_bound_of_snow_vertical_dimension_for_land_surface_model + standard_name = upper_bound_of_vertical_dimension_of_surface_snow long_name = upper bound of of snow-related arrays for land surface model units = count dimensions = () type = integer [zs] - standard_name = depth_of_soil_levels_for_land_surface_model + standard_name = depth_of_soil_layers long_name = depth of soil levels for land surface model units = m - dimensions = (soil_vertical_dimension_for_land_surface_model) + dimensions = (vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys [dzs] - standard_name = thickness_of_soil_levels_for_land_surface_model + standard_name = thickness_of_soil_layers_for_land_surface_model long_name = thickness of soil levels for land surface model units = m - dimensions = (soil_vertical_dimension_for_land_surface_model) + dimensions = (vertical_dimension_of_soil_internal_to_land_surface_scheme) type = real kind = kind_phys [pores] @@ -3599,62 +3595,62 @@ dimensions = () type = logical [usemonalb] - standard_name = flag_for_reading_surface_diffused_shortwave_albedo_from_input + standard_name = flag_for_reading_surface_albedo_for_diffused_shortwave_from_input long_name = flag for reading surface diffused shortwave albedo for NOAH LSM WRFv4 (see module_sf_noahlsm.F) units = flag dimensions = () type = logical [aoasis] - standard_name = potential_evaporation_multiplicative_factor + standard_name = multiplicative_tuning_parameter_for_potential_evaporation long_name = potential evaporation multiplicative factor for NOAH LSM WRFv4 (see module_sf_noahlsm.F) units = none dimensions = () type = real kind = kind_phys [fasdas] - standard_name = flag_flux_adjusting_surface_data_assimilation_system + standard_name = control_for_flux_adjusting_surface_data_assimilation_system long_name = flag to use the flux adjusting surface data assimilation system for NOAH LSM WRFv4 (see module_sf_noahlsm.F) units = flag dimensions = () type = integer [ivegsrc] - standard_name = vegetation_type_dataset_choice + standard_name = control_for_vegetation_dataset long_name = land use dataset choice units = index dimensions = () type = integer [isot] - standard_name = soil_type_dataset_choice + standard_name = control_for_soil_type_dataset long_name = soil type dataset choice units = index dimensions = () type = integer [isurban] - standard_name = urban_vegetation_category + standard_name = index_of_urban_vegetation_category long_name = index of the urban vegetation category in the chosen vegetation dataset units = index dimensions = () type = integer [isice] - standard_name = ice_vegetation_category + standard_name = index_of_ice_vegetation_category long_name = index of the permanent snow/ice category in the chosen vegetation dataset units = index dimensions = () type = integer [iswater] - standard_name = water_vegetation_category + standard_name = index_of_water_vegetation_category long_name = index of the water body vegetation category in the chosen vegetation dataset units = index dimensions = () type = integer [iopt_thcnd] - standard_name = flag_for_thermal_conductivity_option + standard_name = control_for_land_surface_scheme_thermal_conductivity_option long_name = choice for thermal conductivity option (see module_sf_noahlsm) units = index dimensions = () type = integer [spec_adv] - standard_name = flag_for_individual_cloud_species_advected + standard_name = flag_for_separate_advection_of_condensate_species long_name = flag for individual cloud species advected units = flag dimensions = () @@ -3667,73 +3663,73 @@ type = real kind = kind_phys [iopt_dveg] - standard_name = flag_for_dynamic_vegetation_option + standard_name = control_for_land_surface_scheme_dynamic_vegetation long_name = choice for dynamic vegetation option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_crs] - standard_name = flag_for_canopy_stomatal_resistance_option + standard_name = control_for_land_surface_scheme_canopy_stomatal_resistance long_name = choice for canopy stomatal resistance option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_btr] - standard_name = flag_for_soil_moisture_factor_stomatal_resistance_option + standard_name = control_for_land_surface_scheme_soil_moisture_factor_stomatal_resistance long_name = choice for soil moisture factor for canopy stomatal resistance option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_run] - standard_name = flag_for_runoff_and_groundwater_option + standard_name = control_for_land_surface_scheme_runoff_and_groundwater long_name = choice for runoff and groundwater option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_sfc] - standard_name = flag_for_surface_layer_drag_coefficient_option + standard_name = control_for_land_surface_scheme_surface_layer_drag_coefficient long_name = choice for surface layer drag coefficient option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_frz] - standard_name = flag_for_supercooled_liquid_water_option + standard_name = control_for_land_surface_scheme_supercooled_liquid_water long_name = choice for supercooled liquid water option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_inf] - standard_name = flag_for_frozen_soil_permeability_option + standard_name = control_for_land_surface_scheme_frozen_soil_permeability long_name = choice for frozen soil permeability option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_rad] - standard_name = flag_for_radiation_transfer_option + standard_name = control_for_land_surface_scheme_radiative_transfer long_name = choice for radiation transfer option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_alb] - standard_name = flag_for_ground_snow_surface_albedo_option + standard_name = control_for_land_surface_scheme_surface_snow_albedo long_name = choice for ground snow surface albedo option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_snf] - standard_name = flag_for_precipitation_partition_option + standard_name = control_for_land_surface_scheme_precipitation_type_partition long_name = choice for precipitation partition option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_tbot] - standard_name = flag_for_lower_boundary_soil_temperature_option + standard_name = control_for_land_surface_scheme_lower_boundary_soil_temperature long_name = choice for lower boundary soil temperature option (see noahmp module for definition) units = index dimensions = () type = integer [iopt_stc] - standard_name = flag_for_soil_and_snow_temperature_time_stepping_option + standard_name = control_for_land_surface_scheme_soil_and_snow_temperature_time_integration long_name = choice for soil and snow temperature time stepping option (see noahmp module for definition) units = index dimensions = () @@ -3745,44 +3741,44 @@ dimensions = () type = logical [lcurr_sf] - standard_name = flag_for_ocean_currents_in_surface_layer_scheme + standard_name = flag_for_surface_layer_scheme_ocean_currents long_name = flag for taking ocean currents into account in surface layer scheme units = flag dimensions = () type = logical [pert_cd] - standard_name = flag_for_perturbation_of_surface_drag_coefficient_for_momentum_in_air + standard_name = flag_for_surface_layer_scheme_surface_drag_coefficient_for_momentum_in_air_perturbations long_name = flag for perturbing the surface drag coefficient for momentum in surface layer scheme units = flag dimensions = () type = logical [ntsflg] - standard_name = flag_for_updating_skin_temperatuer_in_surface_layer_scheme + standard_name = control_for_surface_layer_scheme_skin_temperature_update long_name = flag for updating skin temperature in the surface layer scheme units = flag dimensions = () type = integer [sfenth] - standard_name = enthalpy_flux_factor + standard_name = surface_layer_scheme_enthalpy_flux_factor long_name = enthalpy flux factor used in surface layer scheme units = none dimensions = () type = real kind = kind_phys [lkm] - standard_name = flag_for_lake_surface_scheme + standard_name = control_for_lake_surface_scheme long_name = flag for lake surface model units = flag dimensions = () type = integer [ras] - standard_name = flag_for_ras_deep_convection + standard_name = flag_for_relaxed_arakawa_schubert_deep_convection long_name = flag for ras convection scheme units = flag dimensions = () type = logical [rhgrd] - standard_name = fa_threshold_relative_humidity_for_onset_of_condensation + standard_name = relative_humidity_threshold_for_condensation long_name = relative humidity threshold parameter for condensation for FA scheme units = none dimensions = () @@ -3831,13 +3827,13 @@ dimensions = () type = logical [do_ysu] - standard_name = flag_for_ysu + standard_name = flag_for_ysu_pbl_scheme long_name = flag for YSU PBL scheme units = flag dimensions = () type = logical [cal_pre] - standard_name = flag_for_precipitation_type_algorithm + standard_name = flag_for_dominant_precipitation_type_partition long_name = flag controls precip type algorithm units = flag dimensions = () @@ -3849,7 +3845,7 @@ dimensions = () type = logical [do_awdd] - standard_name = flag_arakawa_wu_downdraft + standard_name = flag_for_arakawa_wu_downdrafts_for_deep_convection long_name = AW scale-aware option in cs convection downdraft units = flag dimensions = () @@ -3873,13 +3869,13 @@ dimensions = () type = logical [oz_phys] - standard_name = flag_for_ozone_physics + standard_name = flag_for_nrl_2006_ozone_scheme long_name = flag for old (2006) ozone physics units = flag dimensions = () type = logical [oz_phys_2015] - standard_name = flag_for_2015_ozone_physics + standard_name = flag_for_nrl_2015_ozone_scheme long_name = flag for new (2015) ozone physics units = flag dimensions = () @@ -3891,13 +3887,13 @@ dimensions = () type = logical [shcnvcw] - standard_name = flag_shallow_convective_cloud + standard_name = flag_for_saving_shallow_convective_cloud_area_fraction long_name = flag for shallow convective cloud units = dimensions = () type = logical [redrag] - standard_name = flag_for_reduced_drag_coefficient_over_sea + standard_name = flag_for_limited_surface_roughness_length_over_ocean long_name = flag for reduced drag coeff. over sea units = flag dimensions = () @@ -3909,7 +3905,7 @@ dimensions = () type = logical [hybedmf] - standard_name = flag_for_hedmf + standard_name = flag_for_hybrid_edmf_pbl_scheme long_name = flag for hybrid edmf pbl scheme (moninedmf) units = flag dimensions = () @@ -3927,7 +3923,7 @@ dimensions = () type = logical [lheatstrg] - standard_name = flag_for_canopy_heat_storage + standard_name = flag_for_canopy_heat_storage_in_land_surface_scheme long_name = flag for canopy heat storage parameterization units = flag dimensions = () @@ -3945,79 +3941,79 @@ dimensions = () type = logical [shal_cnv] - standard_name = flag_for_shallow_convection + standard_name = flag_for_simplified_arakawa_schubert_shallow_convection long_name = flag for calling shallow convection units = flag dimensions = () type = logical [imfshalcnv] - standard_name = flag_for_mass_flux_shallow_convection_scheme + standard_name = control_for_shallow_convection_scheme long_name = flag for mass-flux shallow convection scheme units = flag dimensions = () type = integer [imfshalcnv_sas] - standard_name = flag_for_sas_shallow_convection_scheme + standard_name = identifier_for_simplified_arakawa_schubert_shallow_convection long_name = flag for SAS shallow convection scheme units = flag dimensions = () type = integer [imfshalcnv_samf] - standard_name = flag_for_samf_shallow_convection_scheme + standard_name = identifier_for_scale_aware_mass_flux_shallow_convection long_name = flag for SAMF shallow convection scheme units = flag dimensions = () type = integer [imfshalcnv_gf] - standard_name = flag_for_gf_shallow_convection_scheme + standard_name = identifier_for_grell_freitas_shallow_convection long_name = flag for Grell-Freitas shallow convection scheme units = flag dimensions = () type = integer [imfshalcnv_ntiedtke] - standard_name = flag_for_ntiedtke_shallow_convection_scheme + standard_name = identifier_for_new_tiedtke_shallow_convection long_name = flag for new Tiedtke shallow convection scheme units = flag dimensions = () type = integer [imfdeepcnv] - standard_name = flag_for_mass_flux_deep_convection_scheme + standard_name = control_for_deep_convection_scheme long_name = flag for mass-flux deep convection scheme units = flag dimensions = () type = integer [imfdeepcnv_sas] - standard_name = flag_for_sas_deep_convection_scheme + standard_name = identifier_for_simplified_arakawa_schubert_deep_convection long_name = flag for SAS deep convection scheme units = flag dimensions = () type = integer [imfdeepcnv_samf] - standard_name = flag_for_samf_deep_convection_scheme + standard_name = identifer_for_scale_aware_mass_flux_deep_convection long_name = flag for SAMF deep convection scheme units = flag dimensions = () type = integer [imfdeepcnv_gf] - standard_name = flag_for_gf_deep_convection_scheme + standard_name = identifier_for_grell_freitas_deep_convection long_name = flag for Grell-Freitas deep convection scheme units = flag dimensions = () type = integer [imfdeepcnv_ntiedtke] - standard_name = flag_for_ntiedtke_deep_convection_scheme + standard_name = identifier_for_new_tiedtke_deep_convection long_name = flag for new Tiedtke deep convection scheme units = flag dimensions = () type = integer [hwrf_samfdeep] - standard_name = flag_for_hwrf_samfdeepcnv_scheme + standard_name = flag_for_hurricane_specific_code_in_scale_aware_mass_flux_deep_convection long_name = flag for hwrf samfdeepcnv scheme units = flag dimensions = () type = logical [hwrf_samfshal] - standard_name = flag_for_hwrf_samfshalcnv_scheme + standard_name = flag_for_hurricane_specific_code_in_scale_aware_mass_flux_shallow_convection long_name = flag for hwrf samfshalcnv scheme units = flag dimensions = () @@ -4047,7 +4043,7 @@ dimensions = () type = integer [jcap] - standard_name = number_of_spectral_wave_trancation_for_sas + standard_name = number_of_spectral_wave_truncation_for_simplified_arakawa_schubert_convection long_name = number of spectral wave trancation used only by sascnv and shalcnv units = count dimensions = () @@ -4088,35 +4084,35 @@ type = real kind = kind_phys [cgwf] - standard_name = multiplication_factors_for_convective_gravity_wave_drag + standard_name = tunable_parameters_for_convective_gravity_wave_drag long_name = multiplication factor for convective GWD units = none dimensions = (2) type = real kind = kind_phys [cdmbgwd] - standard_name = multiplication_factors_for_mountain_blocking_and_orographic_gravity_wave_drag + standard_name = multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag long_name = multiplication factors for cdmb and gwd units = none dimensions = (4) type = real kind = kind_phys [ccwf] - standard_name = multiplication_factor_for_critical_cloud_workfunction + standard_name = tunable_parameter_for_critical_cloud_workfunction_in_relaxed_arakawa_schubert_deep_convection long_name = multiplication factor for tical_cloud_workfunction units = none dimensions = (2) type = real kind = kind_phys [sup] - standard_name = ice_supersaturation_threshold + standard_name = tunable_parameter_for_ice_supersaturation long_name = ice supersaturation parameter for PDF clouds units = none dimensions = () type = real kind = kind_phys [ctei_rm] - standard_name = critical_cloud_top_entrainment_instability_criteria + standard_name = tunable_parameter_for_critical_cloud_top_entrainment_instability_criteria long_name = critical cloud top entrainment instability criteria units = none dimensions = (2) @@ -4137,147 +4133,147 @@ type = real kind = kind_phys [crtrh(3)] - standard_name = critical_relative_humidity_at_top_of_atmosphere + standard_name = critical_relative_humidity_at_toa long_name = critical relative humidity at the top of atmosphere units = frac dimensions = () type = real kind = kind_phys [prslrd0] - standard_name = pressure_cutoff_for_rayleigh_damping + standard_name = air_pressure_at_bottom_extent_of_rayleigh_damping long_name = pressure level from which Rayleigh Damping is applied units = Pa dimensions = () type = real kind = kind_phys [ral_ts] - standard_name = time_scale_for_rayleigh_damping + standard_name = timescale_for_rayleigh_damping long_name = time scale for Rayleigh damping in days units = d dimensions = () type = real kind = kind_phys [clam_deep] - standard_name = entrainment_rate_coefficient_deep_convection + standard_name = entrainment_rate_coefficient_for_deep_convection long_name = entrainment rate coefficient for deep convection units = none dimensions = () type = real kind = kind_phys [c0s_deep] - standard_name = rain_conversion_parameter_deep_convection + standard_name = rain_conversion_parameter_for_deep_convection long_name = convective rain conversion parameter for deep convection units = m-1 dimensions = () type = real kind = kind_phys [c1_deep] - standard_name = detrainment_conversion_parameter_deep_convection + standard_name = detrainment_conversion_parameter_for_deep_convection long_name = convective detrainment conversion parameter for deep convection units = m-1 dimensions = () type = real kind = kind_phys [betal_deep] - standard_name = downdraft_fraction_reaching_surface_over_land_deep_convection + standard_name = downdraft_fraction_reaching_surface_over_land_for_deep_convection long_name = downdraft fraction reaching surface over land for deep convection units = frac dimensions = () type = real kind = kind_phys [betas_deep] - standard_name = downdraft_fraction_reaching_surface_over_water_deep_convection + standard_name = downdraft_fraction_reaching_surface_over_water_for_deep_convection long_name = downdraft fraction reaching surface over water for deep convection units = frac dimensions = () type = real kind = kind_phys [evef] - standard_name = rain_evaporation_coefficient_convection + standard_name = rain_evaporation_coefficient_for_convection long_name = convective rain evaporation coefficient for convection units = frac dimensions = () type = real kind = kind_phys [evfact_deep] - standard_name = rain_evaporation_coefficient_deep_convection - long_name = convective rain evaporation coefficient for deep convection + standard_name = rain_evaporation_coefficient_over_ocean_for_deep_convection + long_name = convective rain evaporation coefficient over ocean for deep convection units = frac dimensions = () type = real kind = kind_phys [evfactl_deep] - standard_name = rain_evaporation_coefficient_over_land_deep_convection + standard_name = rain_evaporation_coefficient_over_land_for_deep_convection long_name = convective rain evaporation coefficient over land for deep convection units = frac dimensions = () type = real kind = kind_phys [pgcon_deep] - standard_name = momentum_transport_reduction_factor_pgf_deep_convection + standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_deep_convection long_name = reduction factor in momentum transport due to deep convection induced pressure gradient force units = frac dimensions = () type = real kind = kind_phys [asolfac_deep] - standard_name = aerosol_aware_parameter_deep_convection + standard_name = aerosol_aware_multiplicative_rain_conversion_parameter_for_deep_convection long_name = aerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for deep convection units = none dimensions = () type = real kind = kind_phys [clam_shal] - standard_name = entrainment_rate_coefficient_shallow_convection + standard_name = entrainment_rate_coefficient_for_shallow_convection long_name = entrainment rate coefficient for shallow convection units = none dimensions = () type = real kind = kind_phys [c0s_shal] - standard_name = rain_conversion_parameter_shallow_convection + standard_name = rain_conversion_parameter_for_shallow_convection long_name = convective rain conversion parameter for shallow convection units = m-1 dimensions = () type = real kind = kind_phys [c1_shal] - standard_name = detrainment_conversion_parameter_shallow_convection + standard_name = detrainment_conversion_parameter_for_shallow_convection long_name = convective detrainment conversion parameter for shallow convection units = m-1 dimensions = () type = real kind = kind_phys [pgcon_shal] - standard_name = momentum_transport_reduction_factor_pgf_shallow_convection + standard_name = momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_shallow_convection long_name = reduction factor in momentum transport due to shallow convection induced pressure gradient force units = frac dimensions = () type = real kind = kind_phys [asolfac_shal] - standard_name = aerosol_aware_parameter_shallow_convection + standard_name = aerosol_aware_multiplicative_rain_conversion_parameter_for_shallow_convection long_name = aerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for shallow convection units = none dimensions = () type = real kind = kind_phys [xkzm_m] - standard_name = atmosphere_momentum_diffusivity_background + standard_name = atmosphere_momentum_diffusivity_due_to_background long_name = background vertical diffusion for momentum units = m2 s-1 dimensions = () type = real kind = kind_phys [xkzm_h] - standard_name = atmosphere_heat_diffusivity_background + standard_name = atmosphere_heat_diffusivity_due_to_background long_name = background vertical diffusion for heat q units = m2 s-1 dimensions = () type = real kind = kind_phys [xkzm_s] - standard_name = diffusivity_background_sigma_level + standard_name = sigma_pressure_threshold_at_upper_extent_of_background_diffusion long_name = sigma threshold for background mom. diffusion units = none dimensions = () @@ -4290,38 +4286,38 @@ dimensions = () type = logical [nstf_name(1)] - standard_name = flag_for_nsstm_run + standard_name = control_for_nsstm long_name = NSSTM flag: off/uncoupled/coupled=0/1/2 units = flag dimensions = () type = integer [nstf_name(4)] - standard_name = vertical_temperature_average_range_lower_bound + standard_name = lower_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea1 in mm units = mm dimensions = () type = integer [nstf_name(5)] - standard_name = vertical_temperature_average_range_upper_bound + standard_name = upper_bound_for_depth_of_sea_temperature_for_nsstm long_name = zsea2 in mm units = mm dimensions = () type = integer [frac_grid] - standard_name = flag_for_fractional_grid + standard_name = flag_for_fractional_landmask long_name = flag for fractional grid units = flag dimensions = () type = logical [min_lakeice] - standard_name = lake_ice_minimum + standard_name = min_lake_ice_area_fraction long_name = minimum lake ice value units = frac dimensions = () type = real kind = kind_phys [min_seaice] - standard_name = sea_ice_minimum + standard_name = min_sea_ice_area_fraction long_name = minimum sea ice value units = frac dimensions = () @@ -4341,49 +4337,49 @@ dimensions = () type = integer [xkzminv] - standard_name = atmosphere_heat_diffusivity_background_maximum + standard_name = max_atmosphere_heat_diffusivity_due_to_background long_name = maximum background value of heat diffusivity units = m2 s-1 dimensions = () type = real kind = kind_phys [moninq_fac] - standard_name = atmosphere_diffusivity_coefficient_factor + standard_name = multiplicative_tuning_parameter_for_atmosphere_diffusivity long_name = multiplicative constant for atmospheric diffusivities (AKA alpha) units = none dimensions = () type = real kind = kind_phys [dspfac] - standard_name = tke_dissipative_heating_factor + standard_name = multiplicative_tuning_parameter_for_tke_dissipative_heating long_name = tke dissipative heating factor units = none dimensions = () type = real kind = kind_phys [bl_upfr] - standard_name = updraft_fraction_in_boundary_layer_mass_flux_scheme + standard_name = updraft_area_fraction_in_scale_aware_tke_moist_edmf_pbl_scheme long_name = updraft fraction in boundary layer mass flux scheme units = none dimensions = () type = real kind = kind_phys [bl_dnfr] - standard_name = downdraft_fraction_in_boundary_layer_mass_flux_scheme + standard_name = downdraft_area_fraction_in_scale_aware_tke_moist_edmf_pbl_scheme long_name = downdraft fraction in boundary layer mass flux scheme units = none dimensions = () type = real kind = kind_phys [h0facu] - standard_name = canopy_heat_storage_factor_for_sensible_heat_flux_in_unstable_surface_layer + standard_name = multiplicative_tuning_parameter_for_reduced_surface_heat_fluxes_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in unstable surface layer units = none dimensions = () type = real kind = kind_phys [h0facs] - standard_name = canopy_heat_storage_factor_for_sensible_heat_flux_in_stable_surface_layer + standard_name = multiplicative_tuning_parameter_for_reduced_latent_heat_flux_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in stable surface layer units = none dimensions = () @@ -4414,7 +4410,7 @@ dimensions = () type = logical [ca_entr] - standard_name = flag_for_global_cellular_automata_entr + standard_name = flag_for_global_cellular_automata_deep_convective_entrainment long_name = switch for ca on entr units = flag dimensions = () @@ -4426,7 +4422,7 @@ dimensions = () type = logical [nthresh] - standard_name = threshold_for_perturbed_vertical_velocity + standard_name = cellular_automata_vertical_velocity_perturbation_threshold_for_deep_convection long_name = threshold used for perturbed vertical velocity units = m s-1 dimensions = () @@ -4451,7 +4447,7 @@ dimensions = () type = logical [sppt_amp] - standard_name = total_ampltiude_of_sppt_perturbation + standard_name = total_amplitude_of_sppt_perturbation long_name = toal ampltidue of stochastic sppt perturbation units = none dimensions = () @@ -4464,7 +4460,7 @@ dimensions = () type = logical [use_zmtnblck] - standard_name = flag_for_mountain_blocking + standard_name = flag_for_mountain_blocking_for_sppt long_name = flag for mountain blocking units = flag dimensions = () @@ -4482,29 +4478,29 @@ dimensions = () type = logical [lndp_type] - standard_name = index_for_stochastic_land_surface_perturbation_type + standard_name = control_for_stochastic_land_surface_perturbation long_name = index for stochastic land surface perturbations type units = index dimensions = () type = integer [n_var_lndp] - standard_name = number_of_land_surface_variables_perturbed + standard_name = number_of_perturbed_land_surface_variables long_name = number of land surface variables perturbed units = count dimensions = () type = integer [lndp_prt_list] - standard_name =magnitude_of_perturbations_for_landperts + standard_name =land_surface_perturbation_magnitudes long_name = magnitude of perturbations for landperts units = variable - dimensions = (number_of_land_surface_variables_perturbed) + dimensions = (number_of_perturbed_land_surface_variables) type = real kind = kind_phys [lndp_var_list] - standard_name = variables_to_be_perturbed_for_landperts + standard_name = land_surface_perturbation_variables long_name = variables to be perturbed for landperts units = none - dimensions = (number_of_land_surface_variables_perturbed) + dimensions = (number_of_perturbed_land_surface_variables) type = character kind = len=3 [ntrac] @@ -4676,103 +4672,103 @@ dimensions = () type = integer [ntqv] - standard_name = index_for_water_vapor + standard_name = index_of_specific_humidity_in_tracer_concentration_array long_name = tracer index for water vapor (specific humidity) units = index dimensions = () type = integer [ntoz] - standard_name = index_for_ozone + standard_name = index_of_ozone_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ozone mixing ratio units = index dimensions = () type = integer [ntcw] - standard_name = index_for_liquid_cloud_condensate + standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array long_name = tracer index for cloud condensate (or liquid water) units = index dimensions = () type = integer [ntiw] - standard_name = index_for_ice_cloud_condensate + standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water units = index dimensions = () type = integer [ntrw] - standard_name = index_for_rain_water + standard_name = index_of_rain_mixing_ratio_in_tracer_concentration_array long_name = tracer index for rain water units = index dimensions = () type = integer [ntsw] - standard_name = index_for_snow_water + standard_name = index_of_snow_mixing_ratio_in_tracer_concentration_array long_name = tracer index for snow water units = index dimensions = () type = integer [ntgl] - standard_name = index_for_graupel + standard_name = index_of_graupel_mixing_ratio_in_tracer_concentration_array long_name = tracer index for graupel units = index dimensions = () type = integer [ntclamt] - standard_name = index_for_cloud_amount + standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_tracer_concentration_array long_name = tracer index for cloud amount integer units = index dimensions = () type = integer [ntlnc] - standard_name = index_for_liquid_cloud_number_concentration + standard_name = index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array long_name = tracer index for liquid number concentration units = index dimensions = () type = integer [ntinc] - standard_name = index_for_ice_cloud_number_concentration + standard_name = index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array long_name = tracer index for ice number concentration units = index dimensions = () type = integer [ntrnc] - standard_name = index_for_rain_number_concentration + standard_name = index_of_mass_number_concentration_of_rain_in_tracer_concentration_array long_name = tracer index for rain number concentration units = index dimensions = () type = integer [ntsnc] - standard_name = index_for_snow_number_concentration + standard_name = index_of_mass_number_concentration_of_snow_in_tracer_concentration_array long_name = tracer index for snow number concentration units = index dimensions = () type = integer [ntgnc] - standard_name = index_for_graupel_number_concentration + standard_name = index_of_mass_number_concentration_of_graupel_in_tracer_concentration_array long_name = tracer index for graupel number concentration units = index dimensions = () type = integer [ntke] - standard_name = index_for_turbulent_kinetic_energy + standard_name = index_of_turbulent_kinetic_energy_in_tracer_concentration_array long_name = tracer index for turbulent kinetic energy units = index dimensions = () type = integer [nqrimef] - standard_name = index_for_mass_weighted_rime_factor + standard_name = index_of_mass_weighted_rime_factor_in_tracer_concentration_array long_name = tracer index for mass weighted rime factor units = index dimensions = () type = integer [ntwa] - standard_name = index_for_water_friendly_aerosols + standard_name = index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array long_name = tracer index for water friendly aerosol units = index dimensions = () type = integer [ntia] - standard_name = index_for_ice_friendly_aerosols + standard_name = index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array long_name = tracer index for ice friendly aerosol units = index dimensions = () @@ -4784,7 +4780,7 @@ dimensions = () type = integer [ntchs] - standard_name = index_for_first_chemical_tracer + standard_name = index_of_first_chemical_tracer_in_tracer_concentration_array long_name = tracer index for first chemical tracer units = index dimensions = () @@ -4814,74 +4810,74 @@ dimensions = () type = integer [ntdiag] - standard_name = diagnostics_control_for_chemical_tracers + standard_name = flags_for_chemical_tracer_diagnostics long_name = array to control diagnostics for chemical tracers units = flag dimensions = (number_of_chemical_tracers) type = logical [fscav] - standard_name = coefficients_for_aerosol_scavenging + standard_name = chemical_tracer_scavenging_fractions long_name = array of aerosol scavenging coefficients units = none dimensions = (number_of_chemical_tracers) type = real kind = kind_phys [ntot2d] - standard_name = number_of_fields_in_phyf2d + standard_name = number_of_variables_in_xy_dimensioned_restart_array long_name = total number of variables for phyf2d units = count dimensions = () type = integer [ntot3d] - standard_name = number_of_fields_in_phyf3d + standard_name = number_of_variables_in_xyz_dimensioned_restart_array long_name = total number of variables for phyf3d units = count dimensions = () type = integer [indcld] - standard_name = index_for_cloud_fraction_in_3d_arrays_for_microphysics + standard_name = index_of_cloud_area_fraction_in_atmosphere_layer_in_xyz_dimensioned_restart_array long_name = index of cloud fraction in phyf3d (used only for SHOC or MG) units = index dimensions = () type = integer [num_p2d] - standard_name = array_dimension_of_2d_arrays_for_microphysics + standard_name = number_of_microphysics_varaibles_in_xy_dimensioned_restart_array long_name = number of 2D arrays needed for microphysics units = count dimensions = () type = integer [num_p3d] - standard_name = array_dimension_of_3d_arrays_for_microphysics + standard_name = number_of_microphysics_variables_in_xyz_dimensioned_restart_array long_name = number of 3D arrays needed for microphysics units = count dimensions = () type = integer [nkbfshoc] - standard_name = index_of_kinematic_buoyancy_flux_from_shoc_in_phy_f3d + standard_name = index_of_upward_virtual_potential_temperature_flux_in_xyz_dimensioned_restart_array long_name = the index of upward kinematic buoyancy flux from SHOC in phy_f3d units = index dimensions = () type = integer [nahdshoc] - standard_name = index_of_atmosphere_heat_diffusivity_from_shoc_in_phy_f3d + standard_name = index_of_atmosphere_heat_diffusivity_in_xyz_dimensioned_restart_array long_name = the index of diffusivity for heat from from SHOC in phy_f3d units = index dimensions = () type = integer [nscfshoc] - standard_name = index_of_subgrid_scale_cloud_fraction_from_shoc_in_phy_f3d + standard_name = index_of_subgrid_cloud_area_fracation_in_atmosphere_layer_in_xyz_dimensioned_restart_array long_name = the index of subgrid-scale cloud fraction from from SHOC in phy_f3d units = index dimensions = () type = integer [ncnvcld3d] - standard_name = number_of_convective_3d_cloud_fields + standard_name = number_of_convective_cloud_variables_in_xyz_dimensioned_restart_array long_name = number of convective 3d clouds fields units = count dimensions = () type = integer [npdf3d] - standard_name = number_of_3d_arrays_associated_with_pdf_based_clouds + standard_name = number_of_pdf_based_variables_in_xyz_dimensioned_restart_array long_name = number of 3d arrays associated with pdf based clouds/mp units = count dimensions = () @@ -4893,91 +4889,91 @@ dimensions = () type = integer [ncnvw] - standard_name = index_for_convective_cloud_water_mixing_ratio_in_phy_f3d + standard_name = index_of_convective_cloud_condensate_mixing_ratio_in_xyz_dimensioned_restart_array long_name = the index of convective cloud water mixing ratio in phy f3d units = index dimensions = () type = integer [ncnvc] - standard_name = index_for_convective_cloud_cover_in_phy_f3d + standard_name = index_of_convective_cloud_area_fraction_in_xyz_dimensioned_restart_array long_name = the index of convective cloud cover in phy f3d units = index dimensions = () type = integer [nleffr] - standard_name = index_for_cloud_liquid_water_effective_radius + standard_name = index_of_cloud_liquid_water_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of cloud liquid water effective radius in phy_f3d units = index dimensions = () type = integer [nieffr] - standard_name = index_for_ice_effective_radius + standard_name = index_of_cloud_ice_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of ice effective radius in phy_f3d units = index dimensions = () type = integer [nreffr] - standard_name = index_for_rain_effective_radius + standard_name = index_of_rain_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of rain effective radius in phy_f3d units = index dimensions = () type = integer [nseffr] - standard_name = index_for_snow_effective_radius + standard_name = index_of_snow_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of snow effective radius in phy_f3d units = index dimensions = () type = integer [ngeffr] - standard_name = index_for_graupel_effective_radius + standard_name = index_of_graupel_effective_radius_in_xyz_dimensioned_restart_array long_name = the index of graupel effective radius in phy_f3d units = index dimensions = () type = integer [nT2delt] - standard_name = index_for_air_temperature_two_timesteps_back + standard_name = index_of_air_temperature_two_timesteps_back_in_xyz_dimensioned_restart_array long_name = the index of air temperature two timesteps back in phy f3d units = dimensions = () type = integer [nTdelt] - standard_name = index_for_air_temperature_at_previous_timestep + standard_name = index_of_air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = the index of air temperature at previous timestep in phy f3d units = dimensions = () type = integer [nqv2delt] - standard_name = index_for_specific_humidity_two_timesteps_back + standard_name = index_of_specific_humidity_two_timesteps_back_in_xyz_dimensioned_restart_array long_name = the index of specific humidity two timesteps back in phy f3d units = dimensions = () type = integer [nqvdelt] - standard_name = index_for_specific_humidity_at_previous_timestep + standard_name = index_of_specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = the index of specific humidity at previous timestep in phy f3d units = dimensions = () type = integer [nps2delt] - standard_name = index_for_surface_air_pressure_two_timesteps_back + standard_name = index_of_surface_air_pressure_two_timesteps_back_in_xyz_dimensioned_tracer_array long_name = the index of surface air pressure two timesteps back in phy f2d units = dimensions = () type = integer [npsdelt] - standard_name = index_for_surface_air_pressure_at_previous_timestep + standard_name = index_of_surface_air_pressure_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = the index of surface air pressure at previous timestep in phy f2d units = dimensions = () type = integer [ncnvwind] - standard_name = index_for_surface_wind_enhancement_due_to_convection + standard_name = index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array long_name = the index of surface wind enhancement due to convection in phy f2d units = dimensions = () type = integer [debug] - standard_name = flag_debug + standard_name = flag_for_debug_output long_name = control flag for debug units = flag dimensions = () @@ -4989,7 +4985,7 @@ dimensions = () type = logical [ipt] - standard_name = index_for_diagnostic_printout + standard_name = index_of_horizontal_gridpoint_for_debug_output long_name = horizontal index for point used for diagnostic printout units = index dimensions = () @@ -5001,19 +4997,19 @@ dimensions = () type = logical [lsswr] - standard_name = flag_to_calc_sw + standard_name = flag_for_calling_shortwave_radiation long_name = logical flags for sw radiation calls units = flag dimensions = () type = logical [lslwr] - standard_name = flag_to_calc_lw + standard_name = flag_for_calling_longwave_radiation long_name = logical flags for lw radiation calls units = flag dimensions = () type = logical [solhr] - standard_name = forecast_hour_of_the_day + standard_name = forecast_utc_hour long_name = time in hours after 00z at the current timestep units = h dimensions = () @@ -5048,14 +5044,14 @@ type = real kind = kind_phys [clstp] - standard_name = convective_cloud_switch + standard_name = control_for_convective_cloud_diagnostics long_name = index used by cnvc90 (for convective clouds) units = none dimensions = () type = real kind = kind_phys [phour] - standard_name = forecast_time_at_previous_timestep + standard_name = forecast_time_on_previous_timestep long_name = forecast time at the previous timestep units = h dimensions = () @@ -5069,20 +5065,20 @@ type = real kind = kind_phys [zhour] - standard_name = time_since_diagnostics_zeroed + standard_name = time_elapsed_since_diagnostics_reset long_name = time since diagnostics variables have been zeroed units = h dimensions = () type = real kind = kind_phys [kdt] - standard_name = index_of_time_step + standard_name = index_of_timestep long_name = current forecast iteration units = index dimensions = () type = integer [first_time_step] - standard_name = flag_for_first_time_step + standard_name = flag_for_first_timestep long_name = flag for first time step for time integration loop (cold/warmstart) units = flag dimensions = () @@ -5100,7 +5096,7 @@ dimensions = () type = logical [jdat] - standard_name = forecast_date_and_time + standard_name = date_and_time_of_forecast_in_united_states_order long_name = current forecast date and time units = none dimensions = (8) @@ -5112,182 +5108,182 @@ dimensions = () type = integer [yearlen] - standard_name = number_of_days_in_year + standard_name = number_of_days_in_current_year long_name = number of days in a year units = days dimensions = () type = integer [julian] - standard_name = julian_day + standard_name = forecast_julian_day long_name = julian day units = days dimensions = () type = real kind = kind_phys [iccn] - standard_name = flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics + standard_name = control_for_ice_cloud_condensation_nuclei_forcing long_name = flag for IN and CCN forcing for morrison gettelman microphysics units = none dimensions = () type = integer [sec] - standard_name = seconds_elapsed_since_model_initialization + standard_name = forecast_time_in_seconds long_name = seconds elapsed since model initialization units = s dimensions = () type = real kind = kind_phys [si] - standard_name = vertical_sigma_coordinate_for_radiation_initialization + standard_name = sigma_pressure_hybrid_vertical_coordinate long_name = vertical sigma coordinate for radiation initialization units = none - dimensions = (number_of_vertical_layers_for_radiation_calculations_plus_one) + dimensions = (vertical_interface_dimension_for_radiation) type = real kind = kind_phys [dxinv] - standard_name = inverse_scaling_factor_for_critical_relative_humidity + standard_name = reciprocal_of_grid_scale_range long_name = inverse scaling factor for critical relative humidity units = rad2 m-2 dimensions = () type = real kind = kind_phys [dxmax] - standard_name = maximum_scaling_factor_for_critical_relative_humidity + standard_name = max_grid_scale long_name = maximum scaling factor for critical relative humidity units = m2 rad-2 dimensions = () type = real kind = kind_phys [dxmin] - standard_name = minimum_scaling_factor_for_critical_relative_humidity + standard_name = min_grid_scale long_name = minimum scaling factor for critical relative humidity units = m2 rad-2 dimensions = () type = real kind = kind_phys [rhcmax] - standard_name = maximum_critical_relative_humidity + standard_name = max_critical_relative_humidity long_name = maximum critical relative humidity units = frac dimensions = () type = real kind = kind_phys [icloud] - standard_name = cloud_effect_to_optical_depth_and_cloud_fraction + standard_name = control_for_cloud_area_fraction_option long_name = cloud effect to the optical depth and cloud fraction in radiation units = flag dimensions = () type = integer [gwd_opt] - standard_name = gwd_opt + standard_name = control_for_drag_suite_gravity_wave_drag long_name = flag to choose gwd scheme units = flag dimensions = () type = integer [do_mynnedmf] - standard_name = do_mynnedmf + standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF units = flag dimensions = () type = logical [do_mynnsfclay] - standard_name = do_mynnsfclay + standard_name = flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme long_name = flag to activate MYNN surface layer units = flag dimensions = () type = logical [do_myjsfc] - standard_name = do_myjsfc + standard_name = flag_for_mellor_yamada_janic_surface_layer_scheme long_name = flag to activate MYJ surface layer scheme units = flag dimensions = () type = logical [do_myjpbl] - standard_name = do_myjpbl + standard_name = flag_for_mellor_yamada_janic_pbl_scheme long_name = flag to activate MYJ PBL scheme units = flag dimensions = () type = logical [grav_settling] - standard_name = grav_settling + standard_name = control_for_gravitational_settling_of_cloud_droplets long_name = flag to activate gravitational setting of fog units = flag dimensions = () type = integer [bl_mynn_tkebudget] - standard_name = tke_budget + standard_name = control_for_tke_budget_output long_name = flag for activating TKE budget units = flag dimensions = () type = integer [bl_mynn_tkeadvect] - standard_name = tke_advect + standard_name = flag_for_tke_advection long_name = flag for activating TKE advection units = flag dimensions = () type = logical [bl_mynn_cloudpdf] - standard_name = cloudpdf + standard_name = control_for_cloud_pdf_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to determine which cloud PDF to use units = flag dimensions = () type = integer [bl_mynn_mixlength] - standard_name = mixing_length_flag + standard_name = control_for_mixing_length_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to determine which mixing length form to use units = flag dimensions = () type = integer [bl_mynn_edmf] - standard_name = edmf_flag + standard_name = control_for_edmf_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the mass-flux scheme units = flag dimensions = () type = integer [bl_mynn_edmf_mom] - standard_name = edmf_momentum_transport_flag + standard_name = control_for_edmf_momentum_transport_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the transport of momentum units = flag dimensions = () type = integer [bl_mynn_edmf_tke] - standard_name = edmf_tke_transport_flag + standard_name = control_for_edmf_tke_transport_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate the transport of TKE units = flag dimensions = () type = integer [bl_mynn_edmf_part] - standard_name = edmf_partition_flag + standard_name = control_for_edmf_partitioning_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to partitioning og the MF and ED areas units = flag dimensions = () type = integer [bl_mynn_cloudmix] - standard_name = cloud_specie_mix_flag + standard_name = control_for_cloud_species_mixing_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate mixing of cloud species units = flag dimensions = () type = integer [bl_mynn_mixqt] - standard_name = mix_total_water_flag + standard_name = control_for_total_water_mixing_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to mix total water or individual species units = flag dimensions = () type = integer [bl_mynn_output] - standard_name = mynn_output_flag + standard_name = control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag initialize and output extra 3D variables units = flag dimensions = () type = integer [icloud_bl] - standard_name = couple_sgs_clouds_to_radiation_flag + standard_name = control_for_sgs_cloud_radiation_coupling_in_mellor_yamamda_nakanishi_niino_pbl_scheme long_name = flag for coupling sgs clouds to radiation units = flag dimensions = () type = integer [var_ric] - standard_name = flag_variable_bulk_richardson_number + standard_name = control_for_variable_bulk_richardson_number long_name = flag for calculating variable bulk richardson number for hurricane PBL units = flag dimensions = () @@ -5308,13 +5304,13 @@ type = real kind = kind_phys [do_ugwp] - standard_name = do_ugwp + standard_name = flag_for_unified_gravity_wave_physics_gravity_wave_drag_scheme long_name = flag to activate CIRES UGWP units = flag dimensions = () type = logical [do_tofd] - standard_name = turb_oro_form_drag_flag + standard_name = flag_for_turbulent_orographic_form_drag_in_unified_gravity_wave_physics_gravitiy_wave_drag_scheme long_name = flag for turbulent orographic form drag units = flag dimensions = () @@ -5332,19 +5328,19 @@ dimensions = () type = logical [ldiag_ugwp] - standard_name = diag_ugwp_flag + standard_name = flag_for_unified_gravity_wave_physics_diagnostics long_name = flag for CIRES UGWP Diagnostics units = flag dimensions = () type = logical [uni_cld] - standard_name = flag_for_uni_cld + standard_name = flag_for_shoc_cloud_area_fraction_for_radiation long_name = flag for uni_cld units = flag dimensions = () type = logical [lmfshal] - standard_name = flag_for_lmfshal + standard_name = flag_for_cloud_area_fraction_option_for_radiation long_name = flag for lmfshal units = flag dimensions = () @@ -5422,7 +5418,7 @@ intent = in optional = F [lmfdeep2] - standard_name = flag_for_scale_aware_mass_flux_convection + standard_name = flag_for_scale_aware_mass_flux_deep_convection_for_radiation long_name = flag for some scale-aware mass-flux convection scheme active units = flag dimensions = () @@ -5445,7 +5441,7 @@ type = real kind = kind_phys [dx] - standard_name = cell_size + standard_name = characteristic_grid_lengthscale long_name = relative dx for the grid cell units = m dimensions = (horizontal_loop_extent) @@ -5494,43 +5490,43 @@ type = real kind = kind_phys [jindx1_o3] - standard_name = lower_ozone_interpolation_index + standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone units = index dimensions = (horizontal_loop_extent) type = integer - active = (index_for_ozone>0) + active = (index_of_ozone_mixing_ratio_in_tracer_concentration_array>0) [jindx2_o3] - standard_name = upper_ozone_interpolation_index + standard_name = upper_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation high index for ozone units = index dimensions = (horizontal_loop_extent) type = integer - active = (index_for_ozone>0) + active = (index_of_ozone_mixing_ratio_in_tracer_concentration_array>0) [ddy_o3] - standard_name = ozone_interpolation_weight + standard_name = latitude_interpolation_weight_for_ozone_forcing long_name = interpolation high index for ozone units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (index_for_ozone>0) + active = (index_of_ozone_mixing_ratio_in_tracer_concentration_array>0) [jindx1_h] - standard_name = lower_water_vapor_interpolation_index + standard_name = lower_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation low index for stratospheric water vapor units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_stratospheric_water_vapor_physics) [jindx2_h] - standard_name = upper_water_vapor_interpolation_index + standard_name = upper_latitude_index_of_stratospheric_water_vapor_forcing_for_interpolation long_name = interpolation high index for stratospheric water vapor units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_stratospheric_water_vapor_physics) [ddy_h] - standard_name = water_vapor_interpolation_weight + standard_name = latitude_interpolation_weight_for_stratospheric_water_vapor_forcing long_name = interpolation high index for stratospheric water vapor units = none dimensions = (horizontal_loop_extent) @@ -5538,21 +5534,21 @@ kind = kind_phys active = (flag_for_stratospheric_water_vapor_physics) [jindx1_aer] - standard_name = lower_aerosol_y_interpolation_index + standard_name = lower_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the y direction units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_aerosol_input_MG_radiation) [jindx2_aer] - standard_name = upper_aerosol_y_interpolation_index + standard_name = upper_latitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the y direction units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_aerosol_input_MG_radiation) [ddy_aer] - standard_name = aerosol_y_interpolation_weight + standard_name = latitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the y direction units = none dimensions = (horizontal_loop_extent) @@ -5560,21 +5556,21 @@ kind = kind_phys active = (flag_for_aerosol_input_MG_radiation) [iindx1_aer] - standard_name = lower_aerosol_x_interpolation_index + standard_name = lower_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation low index for prescribed aerosols in the x direction units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_aerosol_input_MG_radiation) [iindx2_aer] - standard_name = upper_aerosol_x_interpolation_index + standard_name = upper_longitude_index_of_aerosol_forcing_for_interpolation long_name = interpolation high index for prescribed aerosols in the x direction units = index dimensions = (horizontal_loop_extent) type = integer active = (flag_for_aerosol_input_MG_radiation) [ddx_aer] - standard_name = aerosol_x_interpolation_weight + standard_name = longitude_interpolation_weight_for_aerosol_forcing long_name = interpolation high index for prescribed aerosols in the x direction units = none dimensions = (horizontal_loop_extent) @@ -5582,49 +5578,49 @@ kind = kind_phys active = (flag_for_aerosol_input_MG_radiation) [jindx1_ci] - standard_name = lower_cloud_nuclei_y_interpolation_index + standard_name = lower_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the y direction units = index dimensions = (horizontal_loop_extent) type = integer - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [jindx2_ci] - standard_name = upper_cloud_nuclei_y_interpolation_index + standard_name = upper_latitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the y direction units = index dimensions = (horizontal_loop_extent) type = integer - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [ddy_ci] - standard_name = cloud_nuclei_y_interpolation_weight + standard_name = latitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the y direction units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [iindx1_ci] - standard_name = lower_cloud_nuclei_x_interpolation_index + standard_name = lower_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation low index for ice and cloud condensation nuclei in the x direction units = index dimensions = (horizontal_loop_extent) type = integer - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [iindx2_ci] - standard_name = upper_cloud_nuclei_x_interpolation_index + standard_name = upper_longitude_index_of_cloud_nuclei_forcing_for_interpolation long_name = interpolation high index for ice and cloud condensation nuclei in the x direction units = index dimensions = (horizontal_loop_extent) type = integer - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [ddx_ci] - standard_name = cloud_nuclei_x_interpolation_weight + standard_name = longitude_interpolation_weight_for_cloud_nuclei_forcing long_name = interpolation high index for ice and cloud condensation nuclei in the x direction units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics==1) + active = (control_for_ice_cloud_condensation_nuclei_forcing==1) [jindx1_tau] standard_name = lower_latitude_index_of_absolute_momentum_flux_due_to_nonorographic_gravity_wave_drag_for_interpolation long_name = index1 for weight1 for tau NGWs @@ -5666,14 +5662,14 @@ name = GFS_tbd_type type = ddt [icsdsw] - standard_name = seed_random_numbers_sw + standard_name = random_number_seed_for_mcica_shortwave long_name = random seeds for sub-column cloud generators sw units = none dimensions = (horizontal_loop_extent) type = integer active = (flag_for_lw_clouds_sub_grid_approximation == 2 .or. flag_for_sw_clouds_grid_approximation == 2) [icsdlw] - standard_name = seed_random_numbers_lw + standard_name = random_number_seed_for_mcica_longwave long_name = random seeds for sub-column cloud generators lw units = none dimensions = (horizontal_loop_extent) @@ -5694,7 +5690,7 @@ type = real kind = kind_phys [h2opl] - standard_name = h2o_forcing + standard_name = stratospheric_water_vapor_forcing long_name = water forcing data units = various dimensions = (horizontal_loop_extent,vertical_dimension_of_h2o_forcing_data,number_of_coefficients_in_h2o_forcing_data) @@ -5708,24 +5704,24 @@ type = real kind = kind_phys [in_nm] - standard_name = ice_nucleation_number + standard_name = ice_nucleation_number_from_climatology long_name = ice nucleation number in MG MP units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [ccn_nm] - standard_name = tendency_of_ccn_activated_number + standard_name = tendency_of_activated_cloud_condensation_nuclei_from_climatology long_name = tendency of ccn activated number units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [aer_nm] - standard_name = aerosol_number_concentration_from_gocart_aerosol_climatology + standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_aerosol_tracers_MG) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_tracers_MG) type = real kind = kind_phys [imap] @@ -5741,28 +5737,28 @@ dimensions = (horizontal_loop_extent) type = integer [rann] - standard_name = random_number_array + standard_name = random_number long_name = random number array (0-1) units = none - dimensions = (horizontal_loop_extent,array_dimension_of_random_number) + dimensions = (horizontal_loop_extent,number_of_random_numbers) type = real kind = kind_phys [acv] - standard_name = accumulated_lwe_thickness_of_convective_precipitation_amount_cnvc90 + standard_name = cumulative_lwe_thickness_of_convective_precipitation_amount_between_sw_radiation_calls long_name = accumulated convective rainfall amount for cnvc90 only units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [acvb] - standard_name = smallest_cloud_base_vertical_index_encountered_thus_far + standard_name = cumulative_min_vertical_index_at_cloud_base_between_sw_radiation_calls long_name = smallest cloud base vertical index encountered thus far units = index dimensions = (horizontal_loop_extent) type = real kind = kind_phys [acvt] - standard_name = largest_cloud_top_vertical_index_encountered_thus_far + standard_name = cumulative_max_vertical_index_at_cloud_base_between_sw_radiation_calls long_name = largest cloud top vertical index encountered thus far units = index dimensions = (horizontal_loop_extent) @@ -5772,289 +5768,289 @@ standard_name = tendency_of_air_temperature_to_withold_from_sppt long_name = temp. change from physics that should not be perturbed by sppt units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_stochastic_physics_perturbations .or. flag_for_global_cellular_automata) [drain_cpl] - standard_name = tendency_of_lwe_thickness_of_precipitation_amount_for_coupling + standard_name = tendency_of_lwe_thickness_of_rain_amount_on_dynamics_timestep_for_coupling long_name = change in rain_cpl (coupling_type) units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_chemistry_coupling) + active = (flag_for_surface_flux_coupling .or. flag_for_chemistry_coupling) [dsnow_cpl] - standard_name = tendency_of_lwe_thickness_of_snow_amount_for_coupling + standard_name = tendency_of_lwe_thickness_of_snowfall_amount_on_dynamics_timestep_for_coupling long_name = change in show_cpl (coupling_type) units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_flux_coupling .or. flag_for_chemistry_coupling) + active = (flag_for_surface_flux_coupling .or. flag_for_chemistry_coupling) [phy_fctd] - standard_name = cloud_base_mass_flux + standard_name = atmosphere_updraft_convective_mass_flux_at_cloud_base_by_cloud_type long_name = cloud base mass flux for CS convection units = kg m-2 s-1 dimensions = (horizontal_loop_extent,number_of_cloud_types_CS) type = real kind = kind_phys active = (number_of_cloud_types_CS > 0 .and. flag_for_Chikira_Sugiyama_deep_convection) -[phy_f2d(:,index_for_surface_air_pressure_two_timesteps_back)] +[phy_f2d(:,index_of_surface_air_pressure_two_timesteps_back_in_xyz_dimensioned_tracer_array)] standard_name = surface_air_pressure_two_timesteps_back long_name = surface air pressure two timesteps back units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (index_for_surface_air_pressure_two_timesteps_back > 0) -[phy_f2d(:,index_for_surface_air_pressure_at_previous_timestep)] - standard_name = surface_air_pressure_at_previous_timestep + active = (index_of_surface_air_pressure_two_timesteps_back_in_xyz_dimensioned_tracer_array > 0) +[phy_f2d(:,index_of_surface_air_pressure_on_previous_timestep_in_xyz_dimensioned_restart_array)] + standard_name = surface_air_pressure_on_previous_timestep long_name = surface air pressure at previous timestep units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (index_for_surface_air_pressure_at_previous_timestep > 0) -[phy_f2d(:,index_for_surface_wind_enhancement_due_to_convection)] - standard_name = surface_wind_enhancement_due_to_convection + active = (index_of_surface_air_pressure_on_previous_timestep_in_xyz_dimensioned_restart_array > 0) +[phy_f2d(:,index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array)] + standard_name = enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection long_name = surface wind enhancement due to convection units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (index_for_surface_wind_enhancement_due_to_convection > 0) -[phy_f3d(:,:,index_for_air_temperature_two_timesteps_back)] + active = (index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_air_temperature_two_timesteps_back_in_xyz_dimensioned_restart_array)] standard_name = air_temperature_two_timesteps_back long_name = air temperature two timesteps back units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_air_temperature_two_timesteps_back > 0) -[phy_f3d(:,:,index_for_specific_humidity_two_timesteps_back)] - standard_name = water_vapor_specific_humidity_two_timesteps_back + active = (index_of_air_temperature_two_timesteps_back_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_specific_humidity_two_timesteps_back_in_xyz_dimensioned_restart_array)] + standard_name = specific_humidity_two_timesteps_back long_name = water vapor specific humidity two timesteps back units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_specific_humidity_two_timesteps_back > 0) -[phy_f3d(:,:,index_for_air_temperature_at_previous_timestep)] - standard_name = air_temperature_at_previous_timestep + active = (index_of_specific_humidity_two_timesteps_back_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array)] + standard_name = air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = air temperature at previous timestep units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_air_temperature_at_previous_timestep > 0) -[phy_f3d(:,:,index_for_specific_humidity_at_previous_timestep)] - standard_name = water_vapor_specific_humidity_at_previous_timestep + active = (index_of_air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array)] + standard_name = specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = water vapor specific humidity at previous timestep units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_specific_humidity_at_previous_timestep > 0) -[phy_f3d(:,:,index_for_convective_cloud_water_mixing_ratio_in_phy_f3d)] - standard_name = convective_cloud_water_mixing_ratio_in_phy_f3d + active = (index_of_specific_humidity_on_previous_timestep_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_convective_cloud_condensate_mixing_ratio_in_xyz_dimensioned_restart_array)] + standard_name = convective_cloud_condensate_mixing_ratio long_name = convective cloud water mixing ratio in the phy_f3d array units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_convective_cloud_water_mixing_ratio_in_phy_f3d > 0) -[phy_f3d(:,:,index_for_convective_cloud_cover_in_phy_f3d)] - standard_name = convective_cloud_cover_in_phy_f3d + active = (index_of_convective_cloud_condensate_mixing_ratio_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_convective_cloud_area_fraction_in_xyz_dimensioned_restart_array)] + standard_name = convective_cloud_area_fraction long_name = convective cloud cover in the phy_f3d array units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_convective_cloud_cover_in_phy_f3d > 0) -[phy_f3d(:,:,index_of_kinematic_buoyancy_flux_from_shoc_in_phy_f3d)] - standard_name = kinematic_buoyancy_flux_from_shoc + active = (index_of_convective_cloud_area_fraction_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_upward_virtual_potential_temperature_flux_in_xyz_dimensioned_restart_array)] + standard_name = upward_virtual_potential_temperature_flux long_name = upward kinematic buoyancy flux from the SHOC scheme units = K m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_of_kinematic_buoyancy_flux_from_shoc_in_phy_f3d > 0) -[phy_f3d(:,:,index_of_atmosphere_heat_diffusivity_from_shoc_in_phy_f3d)] + active = (index_of_upward_virtual_potential_temperature_flux_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_atmosphere_heat_diffusivity_in_xyz_dimensioned_restart_array)] standard_name = atmosphere_heat_diffusivity_from_shoc long_name = diffusivity for heat from the SHOC scheme units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_of_atmosphere_heat_diffusivity_from_shoc_in_phy_f3d > 0) -[phy_f3d(:,:,index_of_subgrid_scale_cloud_fraction_from_shoc_in_phy_f3d)] + active = (index_of_atmosphere_heat_diffusivity_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_subgrid_cloud_area_fracation_in_atmosphere_layer_in_xyz_dimensioned_restart_array)] standard_name = subgrid_scale_cloud_fraction_from_shoc long_name = subgrid-scale cloud fraction from the SHOC scheme units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_of_subgrid_scale_cloud_fraction_from_shoc_in_phy_f3d > 0) -[phy_f3d(:,:,index_for_cloud_fraction_in_3d_arrays_for_microphysics)] + active = (index_of_subgrid_cloud_area_fracation_in_atmosphere_layer_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_cloud_area_fraction_in_atmosphere_layer_in_xyz_dimensioned_restart_array)] standard_name = cloud_fraction_for_MG long_name = cloud fraction used by Morrison-Gettelman MP units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_cloud_fraction_in_3d_arrays_for_microphysics > 0) -[phy_f3d(:,:,index_for_cloud_liquid_water_effective_radius)] - standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle_in_um + active = (index_of_cloud_area_fraction_in_atmosphere_layer_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_cloud_liquid_water_effective_radius_in_xyz_dimensioned_restart_array)] + standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle long_name = eff. radius of cloud liquid water particle in micrometer units = um - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_cloud_liquid_water_effective_radius > 0) -[phy_f3d(:,:,index_for_ice_effective_radius)] - standard_name = effective_radius_of_stratiform_cloud_ice_particle_in_um + active = (index_of_cloud_liquid_water_effective_radius_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_cloud_ice_effective_radius_in_xyz_dimensioned_restart_array)] + standard_name = effective_radius_of_stratiform_cloud_ice_particle long_name = eff. radius of cloud ice water particle in micrometer units = um - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_ice_effective_radius > 0) -[phy_f3d(:,:,index_for_rain_effective_radius)] - standard_name = effective_radius_of_stratiform_cloud_rain_particle_in_um + active = (index_of_cloud_ice_effective_radius_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_rain_effective_radius_in_xyz_dimensioned_restart_array)] + standard_name = effective_radius_of_stratiform_cloud_rain_particle long_name = effective radius of cloud rain particle in micrometers units = um - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_rain_effective_radius > 0) -[phy_f3d(:,:,index_for_snow_effective_radius)] - standard_name = effective_radius_of_stratiform_cloud_snow_particle_in_um + active = (index_of_rain_effective_radius_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_snow_effective_radius_in_xyz_dimensioned_restart_array)] + standard_name = effective_radius_of_stratiform_cloud_snow_particle long_name = effective radius of cloud snow particle in micrometers units = um - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_snow_effective_radius > 0) -[phy_f3d(:,:,index_for_graupel_effective_radius)] - standard_name = effective_radius_of_stratiform_cloud_graupel_particle_in_um + active = (index_of_snow_effective_radius_in_xyz_dimensioned_restart_array > 0) +[phy_f3d(:,:,index_of_graupel_effective_radius_in_xyz_dimensioned_restart_array)] + standard_name = effective_radius_of_stratiform_cloud_graupel_particle long_name = eff. radius of cloud graupel particle in micrometer units = um - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_graupel_effective_radius > 0) + active = (index_of_graupel_effective_radius_in_xyz_dimensioned_restart_array > 0) [forcet] - standard_name = temperature_tendency_due_to_dynamics + standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme .or. flag_for_mass_flux_deep_convection_scheme == flag_for_ntiedtke_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [forceq] - standard_name = moisture_tendency_due_to_dynamics + standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme .or. flag_for_mass_flux_deep_convection_scheme == flag_for_ntiedtke_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevst] - standard_name = temperature_from_previous_timestep + standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme .or. flag_for_mass_flux_deep_convection_scheme == flag_for_ntiedtke_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevsq] - standard_name = moisture_from_previous_timestep + standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme .or. flag_for_mass_flux_deep_convection_scheme == flag_for_ntiedtke_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [cactiv] - standard_name = conv_activity_counter + standard_name = counter_for_grell_freitas_convection long_name = convective activity memory units = none dimensions = (horizontal_loop_extent) type = integer - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [CLDFRA_BL] - standard_name = subgrid_cloud_fraction_pbl + standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer long_name = subgrid cloud fraction from PBL scheme units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [QC_BL] - standard_name = subgrid_cloud_water_mixing_ratio_pbl + standard_name = subgrid_scale_cloud_liquid_water_mixing_ratio long_name = subgrid cloud water mixing ratio from PBL scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [QI_BL] - standard_name = subgrid_cloud_ice_mixing_ratio_pbl + standard_name = subgrid_scale_cloud_ice_mixing_ratio long_name = subgrid cloud ice mixing ratio from PBL scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [el_pbl] - standard_name = mixing_length + standard_name = turbulent_mixing_length long_name = mixing length in meters units = m - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [Sh3D] standard_name = stability_function_for_heat long_name = stability function for heat units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [qke] - standard_name = tke_at_mass_points + standard_name = nonadvected_turbulent_kinetic_energy_multiplied_by_2 long_name = 2 x tke at mass points units = m2 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [tsq] - standard_name = t_prime_squared + standard_name = variance_of_air_temperature long_name = temperature fluctuation squared units = K2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [qsq] - standard_name = q_prime_squared + standard_name = variance_of_specific_humidity long_name = water vapor fluctuation squared units = kg2 kg-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [cov] - standard_name = t_prime_q_prime + standard_name = covariance_of_air_temperature_and_specific_humidity long_name = covariance of temperature and moisture units = K kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [phy_myj_qsfc] standard_name = surface_specific_humidity_for_MYJ_schemes long_name = surface air saturation specific humidity for MYJ schemes @@ -6062,39 +6058,39 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_thz0] - standard_name = potential_temperature_at_viscous_sublayer_top + standard_name = air_potential_temperature_at_top_of_viscous_sublayer long_name = potential temperature at viscous sublayer top over water units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_qz0] - standard_name = specific_humidity_at_viscous_sublayer_top + standard_name = specific_humidity_at_top_of_viscous_sublayer long_name = specific humidity at_viscous sublayer top over water units = kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_uz0] - standard_name = u_wind_component_at_viscous_sublayer_top + standard_name = x_wind_at_top_of_viscous_sublayer long_name = u wind component at viscous sublayer top over water units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_vz0] - standard_name = v_wind_component_at_viscous_sublayer_top + standard_name = y_wind_at_top_of_viscous_sublayer long_name = v wind component at viscous sublayer top over water units = m s-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_akhs] standard_name = heat_exchange_coefficient_for_MYJ_schemes long_name = surface heat exchange_coefficient for MYJ schemes @@ -6102,7 +6098,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_akms] standard_name = momentum_exchange_coefficient_for_MYJ_schemes long_name = surface momentum exchange_coefficient for MYJ schemes @@ -6110,47 +6106,47 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_chkqlm] - standard_name = surface_layer_evaporation_switch + standard_name = control_for_surface_layer_evaporation long_name = surface layer evaporation switch units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_elflx] - standard_name = kinematic_surface_latent_heat_flux + standard_name = surface_upward_specific_humidity_flux_for_mellor_yamada_janic_surface_layer_scheme long_name = kinematic surface latent heat flux units = m s-1 kg kg-1 dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_a1u] - standard_name = weight_for_momentum_at_viscous_sublayer_top + standard_name = weight_for_momentum_at_top_of_viscous_sublayer long_name = weight for momentum at viscous layer top units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_a1t] - standard_name = weight_for_potental_temperature_at_viscous_sublayer_top + standard_name = weight_for_potental_temperature_at_top_of_viscous_sublayer long_name = weight for potental temperature at viscous layer top units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) [phy_myj_a1q] - standard_name = weight_for_specific_humidity_at_viscous_sublayer_top + standard_name = weight_for_specific_humidity_at_top_of_viscous_sublayer long_name = weight for Specfic Humidity at viscous layer top units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_myjsfc .or. do_myjpbl) + active = (flag_for_mellor_yamada_janic_surface_layer_scheme .or. flag_for_mellor_yamada_janic_pbl_scheme) ######################################################################## [ccpp-table-properties] @@ -6162,21 +6158,21 @@ name = GFS_cldprop_type type = ddt [cv] - standard_name = fraction_of_convective_cloud + standard_name = convective_cloud_area_fraction_between_sw_radiation_calls_from_cnvc90 long_name = fraction of convective cloud units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [cvt] - standard_name = pressure_at_top_of_convective_cloud + standard_name = pressure_at_convective_cloud_top_between_sw_radiation_calls_from_cnvc90 long_name = convective cloud top pressure units = Pa dimensions = (horizontal_loop_extent) type = real kind = kind_phys [cvb] - standard_name = pressure_at_bottom_of_convective_cloud + standard_name = pressure_at_convective_cloud_base_between_sw_radiation_calls_from_cnvc90 long_name = convective cloud bottom pressure units = Pa dimensions = (horizontal_loop_extent) @@ -6193,54 +6189,54 @@ name = GFS_radtend_type type = ddt [sfcfsw] - standard_name = sw_fluxes_sfc + standard_name = surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = sw radiation fluxes at sfc units = W m-2 dimensions = (horizontal_loop_extent) type = sfcfsw_type [sfcflw] - standard_name = lw_fluxes_sfc + standard_name = surface_lw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep long_name = lw radiation fluxes at sfc units = W m-2 dimensions = (horizontal_loop_extent) type = sfcflw_type [htrsw] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep long_name = total sky sw heating rate units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [htrlw] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_timestep long_name = total sky lw heating rate units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [sfalb] - standard_name = surface_diffused_shortwave_albedo + standard_name = surface_albedo_for_diffused_shortwave_on_radiation_timestep long_name = mean surface diffused sw albedo units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys [coszen] - standard_name = cosine_of_zenith_angle + standard_name = cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep long_name = mean cos of zenith angle over rad call period units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys [coszdg] - standard_name = daytime_mean_cosz_over_rad_call_period + standard_name = cosine_of_solar_zenith_angle_on_radiation_timestep long_name = daytime mean cosz over rad call period units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys [tsflw] - standard_name = surface_midlayer_air_temperature_in_longwave_radiation + standard_name = air_temperature_at_surface_adjacent_layer_on_radiation_timestep long_name = surface air temp during lw calculation units = K dimensions = (horizontal_loop_extent) @@ -6254,24 +6250,24 @@ type = real kind = kind_phys [swhc] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky sw heating rates units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [lwhc] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step + standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_timestep long_name = clear sky lw heating rates units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [lwhd] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_for_idea + standard_name = tendency_of_air_temperature_due_to_integrated_dynamics_through_earths_atmosphere long_name = idea sky lw heating rates units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension,6) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,6) type = real kind = kind_phys @@ -6288,7 +6284,7 @@ standard_name = cumulative_radiation_diagnostic long_name = time-accumulated 2D radiation-related diagnostic fields units = various - dimensions = (horizontal_loop_extent,number_of_radiation_diagnostic_variables) + dimensions = (horizontal_loop_extent,number_of_diagnostics_variables_for_radiation) type = real kind = kind_phys [topfsw] @@ -6461,10 +6457,10 @@ standard_name = accumulated_change_of_air_temperature_due_to_FA_scheme long_name = accumulated change of air temperature due to FA MP scheme units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [gflux] standard_name = cumulative_surface_ground_heat_flux_multiplied_by_timestep long_name = cumulative groud conductive heat flux multiplied by timestep @@ -6829,7 +6825,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (.not. flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme) + active = (.not. control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [tdomr] standard_name = dominant_rain_type long_name = dominant rain type @@ -6862,35 +6858,35 @@ standard_name = weights_for_stochastic_skeb_perturbation_of_x_wind_flipped long_name = weights for stochastic skeb perturbation of x wind, flipped units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [skebv_wts] standard_name = weights_for_stochastic_skeb_perturbation_of_y_wind_flipped long_name = weights for stochastic skeb perturbation of y wind, flipped units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [sppt_wts] standard_name = weights_for_stochastic_sppt_perturbation_flipped long_name = weights for stochastic sppt perturbation, flipped units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [shum_wts] standard_name = weights_for_stochastic_shum_perturbation_flipped long_name = weights for stochastic shum perturbation, flipped units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [sfc_wts] standard_name = weights_for_stochastic_surface_physics_perturbation_flipped long_name = weights for stochastic surface physics perturbation, flipped units = none - dimensions = (horizontal_loop_extent,number_of_land_surface_variables_perturbed) + dimensions = (horizontal_loop_extent,number_of_perturbed_land_surface_variables) type = real kind = kind_phys [zmtnblck] @@ -6904,10 +6900,10 @@ standard_name = cumulative_change_of_state_variables long_name = diagnostic tendencies for state variables units = various - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_cumulative_change_processes) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_cumulative_change_processes) type = real kind = kind_phys - active = (flag_diagnostics_3D) + active = (flag_for_diagnostics_3D) [refdmax] standard_name = maximum_reflectivity_at_1km_agl_over_maximum_hourly_time_interval long_name = maximum reflectivity at 1km agl over maximum hourly time interval @@ -6961,42 +6957,42 @@ standard_name = cumulative_atmosphere_updraft_convective_mass_flux long_name = cumulative updraft mass flux units = kg m-1 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dwn_mf] standard_name = cumulative_atmosphere_downdraft_convective_mass_flux long_name = cumulative downdraft mass flux units = kg m-1 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [det_mf] standard_name = cumulative_atmosphere_detrainment_convective_mass_flux long_name = cumulative detrainment mass flux units = kg m-1 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm units = dBZ - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dkt] standard_name = atmosphere_heat_diffusivity long_name = atmospheric heat diffusivity units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dku] standard_name = atmosphere_momentum_diffusivity long_name = atmospheric momentum diffusivity units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [cldfra] @@ -7010,89 +7006,89 @@ standard_name = emdf_updraft_area long_name = updraft area from mass flux scheme units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [edmf_w] standard_name = emdf_updraft_vertical_velocity long_name = updraft vertical velocity from mass flux scheme units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [edmf_qt] standard_name = emdf_updraft_total_water long_name = updraft total water from mass flux scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [edmf_thl] standard_name = emdf_updraft_theta_l long_name = updraft theta-l from mass flux scheme units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [edmf_ent] standard_name = emdf_updraft_entrainment_rate long_name = updraft entranment rate from mass flux scheme units = s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [edmf_qc] standard_name = emdf_updraft_cloud_water long_name = updraft cloud water from mass flux scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [sub_thl] standard_name = theta_subsidence_tendency long_name = updraft theta subsidence tendency units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [sub_sqv] standard_name = water_vapor_subsidence_tendency long_name = updraft water vapor subsidence tendency units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [det_thl] standard_name = theta_detrainment_tendency long_name = updraft theta detrainment tendency units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [det_sqv] standard_name = water_vapor_detrainment_tendency long_name = updraft water vapor detrainment tendency units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf .and. (mynn_output_flag .ne. 0)) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme .and. (control_for_additional_diagnostics_in_mellor_yamada_nakanishi_niino_pbl_scheme .ne. 0)) [nupdraft] standard_name = number_of_plumes long_name = number of plumes per grid column units = count dimensions = (horizontal_loop_extent) type = integer - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [maxMF] standard_name = maximum_mass_flux long_name = maximum mass flux within a column @@ -7100,7 +7096,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [ktop_shallow] standard_name = k_level_of_highest_reaching_plume long_name = k-level of highest reaching plume @@ -7113,23 +7109,23 @@ units = count dimensions = (horizontal_loop_extent) type = integer - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [exch_h] standard_name = atmosphere_heat_diffusivity_for_mynnpbl long_name = diffusivity for heat for MYNN PBL (defined for all mass levels) units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [exch_m] standard_name = atmosphere_momentum_diffusivity_for_mynnpbl long_name = diffusivity for momentum for MYNN PBL (defined for all mass levels) units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (do_mynnedmf) + active = (flag_for_mellor_yamada_nakanishi_niino_pbl_scheme) [zmtb] standard_name = time_integral_of_height_of_mountain_blocking long_name = time integral of height of mountain blocking drag @@ -7183,78 +7179,78 @@ standard_name = time_integral_of_change_in_x_wind_due_to_mountain_blocking_drag long_name = time integral of change in x wind due to mountain blocking drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (diag_ugwp_flag) + active = (flag_for_unified_gravity_wave_physics_diagnostics) [du3dt_ogw] standard_name = time_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_drag long_name = time integral of change in x wind due to orographic gw drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (diag_ugwp_flag) + active = (flag_for_unified_gravity_wave_physics_diagnostics) [du3dt_tms] standard_name = time_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_drag long_name = time integral of change in x wind due to TOFD units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (diag_ugwp_flag) + active = (flag_for_unified_gravity_wave_physics_diagnostics) [du3dt_ngw] standard_name = time_integral_of_change_in_x_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in x wind due to NGW units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (diag_ugwp_flag) + active = (flag_for_unified_gravity_wave_physics_diagnostics) [dudt_gw] standard_name = tendency_of_x_wind_due_to_gravity_wave_drag long_name = zonal wind tendency due to all GWs units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dvdt_gw] standard_name = tendency_of_y_wind_due_to_gravity_wave_drag long_name = meridional wind tendency due to all GWs units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dtdt_gw] standard_name = tendency_of_air_temperature_due_to_gravity_wave_drag long_name = air temperature tendency due to all GWs units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [kdis_gw] standard_name = atmosphere_momentum_diffusivity_due_to_gravity_wave_drag long_name = eddy mixing due to all GWs units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dudt_ogw] standard_name = tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = x momentum tendency from meso scale ogw units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dvdt_ogw] standard_name = tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag long_name = y momentum tendency from meso scale ogw units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [du_ogwcol] standard_name = vertically_integrated_x_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated x momentum flux from meso scale ogw @@ -7262,7 +7258,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dv_ogwcol] standard_name = vertically_integrated_y_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag long_name = integrated y momentum flux from meso scale ogw @@ -7270,23 +7266,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dudt_obl] standard_name = tendency_of_x_momentum_due_to_blocking_drag long_name = x momentum tendency from blocking drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dvdt_obl] standard_name = tendency_of_y_momentum_due_to_blocking_drag long_name = y momentum tendency from blocking drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [du_oblcol] standard_name = vertically_integrated_x_momentum_flux_due_to_blocking_drag long_name = integrated x momentum flux from blocking drag @@ -7294,7 +7290,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dv_oblcol] standard_name = vertically_integrated_y_momentum_flux_due_to_blocking_drag long_name = integrated y momentum flux from blocking drag @@ -7302,23 +7298,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dudt_oss] standard_name = tendency_of_x_momentum_due_to_small_scale_gravity_wave_drag long_name = x momentum tendency from small scale gwd units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dvdt_oss] standard_name = tendency_of_y_momentum_due_to_small_scale_gravity_wave_drag long_name = y momentum tendency from small scale gwd units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [du_osscol] standard_name = vertically_integrated_x_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated x momentum flux from small scale gwd @@ -7326,7 +7322,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dv_osscol] standard_name = vertically_integrated_y_momentum_flux_due_to_small_scale_gravity_wave_drag long_name = integrated y momentum flux from small scale gwd @@ -7334,23 +7330,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dudt_ofd] standard_name = tendency_of_x_momentum_due_to_form_drag long_name = x momentum tendency from form drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dvdt_ofd] standard_name = tendency_of_y_momentum_due_to_form_drag long_name = y momentum tendency from form drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [du_ofdcol] standard_name = vertically_integrated_x_momentum_flux_due_to_form_drag long_name = integrated x momentum flux from form drag @@ -7358,7 +7354,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dv_ofdcol] standard_name = vertically_integrated_y_momentum_flux_due_to_form_drag long_name = integrated y momentum flux from form drag @@ -7366,20 +7362,20 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dv3dt_ngw] standard_name = time_integral_of_change_in_y_wind_due_to_nonstationary_gravity_wave long_name = time integral of change in y wind due to NGW units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (diag_ugwp_flag) + active = (flag_for_unified_gravity_wave_physics_diagnostics) [thompson_ext_diag3d] standard_name = extended_diagnostics_output_from_thompson_microphysics long_name = set of 3d arrays for extended diagnostics output from thompson microphysics units = none - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_3d_diagnostic_output_arrays_from_thompson_microphysics) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_3d_diagnostic_output_arrays_from_thompson_microphysics) type = real kind = kind_phys active = (flag_for_extended_diagnostic_output_from_thompson_microphysics) @@ -7387,18 +7383,18 @@ standard_name = auxiliary_2d_arrays long_name = auxiliary 2d arrays to output (for debugging) units = none - dimensions = (horizontal_loop_extent,number_of_3d_auxiliary_arrays) + dimensions = (horizontal_loop_extent,number_of_xyz_dimensioned_auxiliary_arrays) type = real kind = kind_phys - active = (number_of_2d_auxiliary_arrays > 0) + active = (number_of_xy_dimensioned_auxiliary_arrays > 0) [aux3d] standard_name = auxiliary_3d_arrays long_name = auxiliary 3d arrays to output (for debugging) units = none - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_3d_auxiliary_arrays) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_xyz_dimensioned_auxiliary_arrays) type = real kind = kind_phys - active = (number_of_3d_auxiliary_arrays > 0) + active = (number_of_xyz_dimensioned_auxiliary_arrays > 0) [old_pgr] standard_name = surface_air_pressure_from_previous_timestep long_name = surface air pressure from previous timestep @@ -7420,82 +7416,82 @@ standard_name = humidity_mixing_ratio long_name = the ratio of the mass of water vapor to the mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [qc_r] - standard_name = cloud_liquid_water_mixing_ratio + standard_name = cloud_liquid_water_mixing_ratio_interstitial long_name = the ratio of the mass of liquid water to the mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [qr_r] standard_name = cloud_rain_water_mixing_ratio long_name = the ratio of the mass rain water to the mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [qi_r] - standard_name = cloud_ice_mixing_ratio + standard_name = cloud_ice_mixing_ratio_interstitial long_name = the ratio of the mass of ice to the mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [qs_r] standard_name = cloud_snow_mixing_ratio long_name = the ratio of the mass of snow to mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [qg_r] standard_name = mass_weighted_rime_factor_mixing_ratio long_name = the ratio of the mass of rime factor to mass of dry air units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [f_ice] standard_name = fraction_of_ice_water_cloud long_name = fraction of ice water cloud units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [f_rain] standard_name = fraction_of_rain_water_cloud long_name = fraction of rain water cloud units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [f_rimef] standard_name = rime_factor long_name = rime factor units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [cwm] standard_name = total_cloud_condensate_mixing_ratio_updated_by_physics long_name = total cloud condensate mixing ratio (except water vapor) updated by physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_fer_hires_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [adjsfculw_water] standard_name = surface_upwelling_longwave_flux_over_water_interstitial long_name = surface upwelling longwave flux at current time over water (temporary use as interstitial) @@ -7608,7 +7604,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [cd] standard_name = surface_drag_coefficient_for_momentum_in_air long_name = surface exchange coeff for momentum @@ -7693,23 +7689,23 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [cf_upi] standard_name = convective_cloud_fraction_for_microphysics long_name = convective cloud fraction for microphysics units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [clcn] standard_name = convective_cloud_volume_fraction long_name = convective cloud volume fraction units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cldf] standard_name = cloud_area_fraction long_name = fraction of grid box area in which updrafts occur @@ -7812,33 +7808,33 @@ standard_name = convective_transportable_tracers long_name = array to contain cloud water and other convective trans. tracers units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers_for_convective_transport) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers_for_convective_transport) type = real kind = kind_phys [clw(:,:,1)] standard_name = ice_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [clw(:,:,2)] standard_name = cloud_condensed_water_mixing_ratio_convective_transport_tracer long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [clw(:,:,index_for_turbulent_kinetic_energy_convective_transport_tracer)] standard_name = turbulent_kinetic_energy_convective_transport_tracer long_name = turbulent kinetic energy in the convectively transported tracer array units = m2 s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [clx] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height - long_name = frac. of grid box with by subgrid orography higher than critical height + long_name = frac. of grid box with by subgrid height_above_mean_sea_level higher than critical height units = frac dimensions = (horizontal_loop_extent,4) type = real @@ -7850,15 +7846,15 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [clxss] standard_name = fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale - long_name = frac. of grid box with by subgrid orography higher than critical height small scale + long_name = frac. of grid box with by subgrid height_above_mean_sea_level higher than critical height small scale units = frac dimensions = (horizontal_loop_extent,4) type = real kind = kind_phys - active = (gwd_opt == 3 .or. gwd_opt == 33) + active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33) [cmm_water] standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water long_name = momentum exchange coefficient over water @@ -7884,54 +7880,54 @@ standard_name = tendency_of_cloud_water_due_to_convective_microphysics long_name = tendency of cloud water due to convective microphysics units = kg m-2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cnv_fice] standard_name = ice_fraction_in_convective_tower long_name = ice fraction in convective tower units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cnv_mfd] standard_name = detrained_mass_flux long_name = detrained mass flux units = kg m-2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cnv_ndrop] standard_name = number_concentration_of_cloud_liquid_water_particles_for_detrainment long_name = droplet number concentration in convective detrainment units = m-3 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cnv_nice] standard_name = number_concentration_of_ice_crystals_for_detrainment long_name = crystal number concentration in convective detrainment units = m-3 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [cnvc] standard_name = convective_cloud_cover long_name = convective cloud cover units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [cnvw] standard_name = convective_cloud_water_mixing_ratio long_name = moist convective cloud water mixing ratio units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [ctei_r] @@ -7959,7 +7955,7 @@ standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux long_name = (downdraft mass flux) * delt units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [de_lgth] @@ -7973,14 +7969,14 @@ standard_name = air_pressure_difference_between_midlayers long_name = air pressure difference between midlayers units = Pa - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [del_gz] standard_name = geopotential_difference_between_midlayers_divided_by_midlayer_virtual_temperature long_name = difference between mid-layer geopotentials divided by mid-layer virtual temperature units = m2 s-2 K-1 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys [delr] @@ -7998,97 +7994,97 @@ type = real kind = kind_phys [dqdt] - standard_name = tendency_of_tracers_due_to_model_physics + standard_name = process_split_cumulative_tendency_of_tracers long_name = updated tendency of the tracers due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys -[dqdt(:,:,index_for_water_vapor)] - standard_name = tendency_of_water_vapor_specific_humidity_due_to_model_physics +[dqdt(:,:,index_of_specific_humidity_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_specific_humidity long_name = water vapor specific humidity tendency due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_liquid_cloud_condensate)] - standard_name = tendency_of_liquid_cloud_water_mixing_ratio_due_to_model_physics +[dqdt(:,:,index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_cloud_liquid_water_mixing_ratio long_name = cloud condensed water mixing ratio tendency due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_ice_cloud_condensate)] - standard_name = tendency_of_ice_cloud_water_mixing_ratio_due_to_model_physics +[dqdt(:,:,index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_cloud_ice_mixing_ratio long_name = cloud condensed water mixing ratio tendency due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_ozone)] - standard_name = tendency_of_ozone_mixing_ratio_due_to_model_physics +[dqdt(:,:,index_of_ozone_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_ozone_mixing_ratio long_name = ozone mixing ratio tendency due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_liquid_cloud_number_concentration)] - standard_name = tendency_of_cloud_droplet_number_concentration_due_to_model_physics +[dqdt(:,:,index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_cloud_liquid_water_particles_in_air long_name = number concentration of cloud droplets (liquid) tendency due to model physics units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_liquid_cloud_number_concentration > 0) -[dqdt(:,:,index_for_ice_cloud_number_concentration)] - standard_name = tendency_of_ice_number_concentration_due_to_model_physics + active = (index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array > 0) +[dqdt(:,:,index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_cloud_ice_water_crystals_in_air long_name = number concentration of ice tendency due to model physics units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_water_friendly_aerosols)] - standard_name = tendency_of_water_friendly_aerosol_number_concentration_due_to_model_physics +[dqdt(:,:,index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_hygroscopic_aerosols long_name = number concentration of water-friendly aerosols tendency due to model physics units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_water_friendly_aerosols > 0) -[dqdt(:,:,index_for_ice_friendly_aerosols)] - standard_name = tendency_of_ice_friendly_aerosol_number_concentration_due_to_model_physics + active = (index_of_mass_number_concentration_of_hygroscopic_aerosols_in_tracer_concentration_array > 0) +[dqdt(:,:,index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols long_name = number concentration of ice-friendly aerosols tendency due to model physics units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (index_for_ice_friendly_aerosols > 0) -[dqdt(:,:,index_for_rain_water)] - standard_name = tendency_of_rain_water_mixing_ratio_due_to_model_physics + active = (index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array > 0) +[dqdt(:,:,index_of_rain_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_rain_mixing_ratio long_name = ratio of mass of rain water tendency to mass of dry air plus vapor (without condensates) due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_snow_water)] - standard_name = tendency_of_snow_water_mixing_ratio_due_to_model_physics +[dqdt(:,:,index_of_snow_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_snow_mixing_ratio long_name = ratio of mass of snow water tendency to mass of dry air plus vapor (without condensates) due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_graupel)] - standard_name = tendency_of_graupel_mixing_ratio_due_to_model_physics +[dqdt(:,:,index_of_graupel_mixing_ratio_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_graupel_mixing_ratio long_name = ratio of mass of graupel tendency to mass of dry air plus vapor (without condensates) due to model physics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[dqdt(:,:,index_for_turbulent_kinetic_energy)] - standard_name = tendency_of_turbulent_kinetic_energy_due_to_model_physics +[dqdt(:,:,index_of_turbulent_kinetic_energy_in_tracer_concentration_array)] + standard_name = process_split_cumulative_tendency_of_turbulent_kinetic_energy long_name = turbulent kinetic energy tendency due to model physics units = J s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dqsdt2] @@ -8098,7 +8094,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [dqsfc1] standard_name = instantaneous_surface_upward_latent_heat_flux long_name = surface upward latent heat flux @@ -8120,12 +8116,12 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [dtdt] - standard_name = tendency_of_air_temperature_due_to_model_physics + standard_name = process_split_cumulative_tendency_of_air_temperature long_name = air temperature tendency due to model physics units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dtsfc1] @@ -8146,14 +8142,14 @@ standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux long_name = (detrainment mass flux) * delt units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dudt] - standard_name = tendency_of_x_wind_due_to_model_physics + standard_name = process_split_cumulative_tendency_of_x_wind long_name = zonal wind tendency due to model physics units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dusfcg] @@ -8174,14 +8170,14 @@ standard_name = tendency_of_vertically_diffused_tracer_concentration long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_vertical_diffusion_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) type = real kind = kind_phys [dvdt] - standard_name = tendency_of_y_wind_due_to_model_physics + standard_name = process_split_cumulative_tendency_of_y_wind long_name = meridional wind tendency due to model physics units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dvsfcg] @@ -8207,7 +8203,7 @@ kind = kind_phys [elvmax] standard_name = maximum_subgrid_orography - long_name = maximum of subgrid orography + long_name = maximum of subgrid height_above_mean_sea_level units = m dimensions = (horizontal_loop_extent) type = real @@ -8425,14 +8421,14 @@ units = flag dimensions = (horizontal_loop_extent) type = logical - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [flag_lsm_glacier] standard_name = flag_for_calling_land_surface_model_glacier long_name = flag for calling land surface model over glacier units = flag dimensions = (horizontal_loop_extent) type = logical - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [ffmm_water] standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water long_name = Monin-Obukhov similarity function for momentum over water @@ -8540,7 +8536,7 @@ kind = kind_phys [gamma] standard_name = anisotropy_of_subgrid_orography - long_name = anisotropy of subgrid orography + long_name = anisotropy of subgrid height_above_mean_sea_level units = none dimensions = (horizontal_loop_extent) type = real @@ -8560,72 +8556,72 @@ type = real kind = kind_phys [gasvmr(:,:,1)] - standard_name = volume_mixing_ratio_co2 + standard_name = volume_mixing_ratio_of_co2 long_name = volume mixing ratio co2 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,2)] - standard_name = volume_mixing_ratio_n2o + standard_name = volume_mixing_ratio_of_n2o long_name = volume mixing ratio no2 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,3)] - standard_name = volume_mixing_ratio_ch4 + standard_name = volume_mixing_ratio_of_ch4 long_name = volume mixing ratio ch4 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,4)] - standard_name = volume_mixing_ratio_o2 + standard_name = volume_mixing_ratio_of_o2 long_name = volume mixing ratio o2 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,5)] - standard_name = volume_mixing_ratio_co + standard_name = volume_mixing_ratio_of_co long_name = volume mixing ratio co - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,6)] - standard_name = volume_mixing_ratio_cfc11 + standard_name = volume_mixing_ratio_of_cfc11 long_name = volume mixing ratio cfc11 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,7)] - standard_name = volume_mixing_ratio_cfc12 + standard_name = volume_mixing_ratio_of_cfc12 long_name = volume mixing ratio cfc12 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,8)] - standard_name = volume_mixing_ratio_cfc22 + standard_name = volume_mixing_ratio_of_cfc22 long_name = volume mixing ratio cfc22 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,9)] - standard_name = volume_mixing_ratio_ccl4 + standard_name = volume_mixing_ratio_of_ccl4 long_name = volume mixing ratio ccl4 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys [gasvmr(:,:,10)] - standard_name = volume_mixing_ratio_cfc113 + standard_name = volume_mixing_ratio_of_cfc113 long_name = volume mixing ratio cfc113 - units = kg kg-1 + units = m3 m-3 dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) type = real kind = kind_phys @@ -8664,19 +8660,19 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_gfdl_microphysics_scheme .or. flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme) [gwdcu] standard_name = tendency_of_x_wind_due_to_convective_gravity_wave_drag long_name = zonal wind tendency due to convective gravity wave drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [gwdcv] standard_name = tendency_of_y_wind_due_to_convective_gravity_wave_drag long_name = meridional wind tendency due to convective gravity wave drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [zvfun] @@ -8756,7 +8752,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_gfdl_microphysics_scheme .or. flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme) [dry] standard_name = flag_nonzero_land_surface_fraction long_name = flag indicating presence of some land surface area fraction @@ -8878,7 +8874,7 @@ dimensions = () type = integer [levi] - standard_name = vertical_interface_dimension + standard_name = vertical_interface_dimension_interstitial long_name = vertical interface dimension units = count dimensions = () @@ -8929,15 +8925,15 @@ standard_name = local_graupel_number_concentration long_name = number concentration of graupel local to physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [ncpi] standard_name = local_ice_number_concentration long_name = number concentration of ice local to physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_shoc) @@ -8945,7 +8941,7 @@ standard_name = local_condesed_water_number_concentration long_name = number concentration of condensed water local to physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_shoc) @@ -8953,18 +8949,18 @@ standard_name = local_rain_number_concentration long_name = number concentration of rain local to physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [ncps] standard_name = local_snow_number_concentration long_name = number concentration of snow local to physics units = kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [ncstrac] standard_name = number_of_tracers_for_CS long_name = number of convectively transported tracers in Chikira-Sugiyama deep convection scheme @@ -9013,6 +9009,12 @@ units = count dimensions = () type = integer +[ntcwx] + standard_name = index_for_liquid_cloud_condensate_vertical_diffusion_tracer + long_name = index for liquid cloud condensate in the vertically diffused tracer array + units = index + dimensions = () + type = integer [ntiwx] standard_name = index_for_ice_cloud_condensate_vertical_diffusion_tracer long_name = index for ice cloud condensate in the vertically diffused tracer array @@ -9039,42 +9041,42 @@ type = integer [oa4] standard_name = asymmetry_of_subgrid_orography - long_name = asymmetry of subgrid orography + long_name = asymmetry of subgrid height_above_mean_sea_level units = none dimensions = (horizontal_loop_extent,4) type = real kind = kind_phys [varss] standard_name = standard_deviation_of_subgrid_orography_small_scale - long_name = standard deviation of subgrid orography small scale + long_name = standard deviation of subgrid height_above_mean_sea_level small scale units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (gwd_opt == 3 .or. gwd_opt == 33) + active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33) [oa4ss] standard_name = asymmetry_of_subgrid_orography_small_scale - long_name = asymmetry of subgrid orography small scale + long_name = asymmetry of subgrid height_above_mean_sea_level small scale units = none dimensions = (horizontal_loop_extent,4) type = real kind = kind_phys - active = (gwd_opt == 3 .or. gwd_opt == 33) + active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33) [oc] standard_name = convexity_of_subgrid_orography - long_name = convexity of subgrid orography + long_name = convexity of subgrid height_above_mean_sea_level units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys [ocss] standard_name = convexity_of_subgrid_orography_small_scale - long_name = convexity of subgrid orography small scale + long_name = convexity of subgrid height_above_mean_sea_level small scale units = none dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (gwd_opt == 3 .or. gwd_opt == 33) + active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33) [olyr] standard_name = ozone_concentration_at_layer_for_radiation long_name = ozone concentration layer @@ -9118,7 +9120,7 @@ standard_name = prandtl_number long_name = turbulent Prandtl number units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [q2mp] @@ -9128,31 +9130,31 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [qgl] standard_name = local_graupel_mixing_ratio long_name = ratio of mass of graupel to mass of dry air plus vapor (without condensates) local to physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) [qicn] standard_name = mass_fraction_of_convective_cloud_ice long_name = mass fraction of convective cloud ice water units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [qlcn] standard_name = mass_fraction_of_convective_cloud_liquid_water long_name = mass fraction of convective cloud liquid water units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [qlyr] standard_name = water_vapor_specific_humidity_at_layer_for_radiation long_name = specific humidity layer @@ -9164,18 +9166,18 @@ standard_name = local_rain_water_mixing_ratio long_name = ratio of mass of rain water to mass of dry air plus vapor (without condensates) local to physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) [qsnw] standard_name = local_snow_water_mixing_ratio long_name = ratio of mass of snow water to mass of dry air plus vapor (without condensates) local to physics units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme .or. flag_for_shoc) [prcpmp] standard_name = lwe_thickness_of_explicit_precipitation_amount long_name = explicit precipitation (rain, ice, snow, graupel, ...) on physics timestep @@ -9211,7 +9213,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [qv1] standard_name = bounded_specific_humidity_at_lowest_model_layer_over_land long_name = specific humidity at lowest model layer over land bounded between a nonzero epsilon and saturation @@ -9219,7 +9221,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [radar_reset] standard_name = flag_for_resetting_radar_reflectivity_calculation long_name = flag for resetting radar reflectivity calculation @@ -9261,12 +9263,12 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_gfdl_microphysics_scheme .or. flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme) [rainp] standard_name = tendency_of_rain_water_mixing_ratio_due_to_microphysics long_name = tendency of rain water mixing ratio due to microphysics units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [rb] @@ -9313,7 +9315,7 @@ standard_name = critical_relative_humidity long_name = critical relative humidity units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [rho1] @@ -9337,89 +9339,89 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) -[save_q(:,:,index_for_ozone)] + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) +[save_q(:,:,index_of_ozone_mixing_ratio_in_tracer_concentration_array)] standard_name = ozone_mixing_ratio_save long_name = ozone mixing ratio before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_turbulent_kinetic_energy)] +[save_q(:,:,index_of_turbulent_kinetic_energy_in_tracer_concentration_array)] standard_name = turbulent_kinetic_energy_save long_name = turbulent kinetic energy before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_liquid_cloud_condensate)] +[save_q(:,:,index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array)] standard_name = cloud_condensed_water_mixing_ratio_save long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_ice_cloud_condensate)] +[save_q(:,:,index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array)] standard_name = ice_water_mixing_ratio_save long_name = cloud ice water mixing ratio before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_water_vapor)] +[save_q(:,:,index_of_specific_humidity_in_tracer_concentration_array)] standard_name = water_vapor_specific_humidity_save long_name = water vapor specific humidity before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_liquid_cloud_number_concentration)] +[save_q(:,:,index_of_mass_number_concentration_of_cloud_droplets_in_tracer_concentration_array)] standard_name = liquid_cloud_number_concentration_save long_name = liquid cloud number concentration before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys -[save_q(:,:,index_for_ice_cloud_number_concentration)] +[save_q(:,:,index_of_mass_number_concentration_of_cloud_ice_in_tracer_concentration_array)] standard_name = ice_cloud_number_concentration_save long_name = ice cloud number concentration before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [save_q] standard_name = tracer_concentration_save long_name = tracer concentration before entering a physics scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys [save_t] standard_name = air_temperature_save long_name = air temperature before entering a physics scheme units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [save_tcp] standard_name = air_temperature_save_from_convective_parameterization long_name = air temperature after cumulus parameterization units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [save_u] standard_name = x_wind_save long_name = x-wind before entering a physics scheme units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [save_v] standard_name = y_wind_save long_name = y-wind before entering a physics scheme units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [sbsno] @@ -9472,7 +9474,7 @@ kind = kind_phys [sigma] standard_name = slope_of_subgrid_orography - long_name = slope of subgrid orography + long_name = slope of subgrid height_above_mean_sea_level units = none dimensions = (horizontal_loop_extent) type = real @@ -9488,14 +9490,14 @@ standard_name = convective_updraft_area_fraction long_name = convective updraft area fraction units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [sigmatot] standard_name = convective_updraft_area_fraction_at_model_interfaces long_name = convective updraft area fraction at model interfaces units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [skip_macro] @@ -9508,10 +9510,10 @@ standard_name = volume_fraction_of_unfrozen_soil_moisture_save long_name = liquid soil moisture before entering a physics scheme units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [slopetype] standard_name = surface_slope_classification long_name = surface slope type at each grid cell @@ -9525,15 +9527,15 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [smc_save] standard_name = volume_fraction_of_soil_moisture_save long_name = total soil moisture before entering a physics scheme units = frac - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snowc] standard_name = surface_snow_area_fraction long_name = surface snow area fraction @@ -9555,7 +9557,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snow_depth] standard_name = actual_snow_depth long_name = actual snow depth @@ -9563,7 +9565,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snohf] standard_name = snow_freezing_rain_upward_latent_heat_flux long_name = latent heat flux due to snow and frz rain @@ -9578,7 +9580,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snohf_frzgra] standard_name = latent_heat_flux_from_freezing_rain long_name = latent heat flux due to freezing rain @@ -9586,7 +9588,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snohf_snowmelt] standard_name = latent_heat_flux_due_to_snowmelt long_name = latent heat flux due to snowmelt phase change @@ -9594,7 +9596,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [snowmp] standard_name = lwe_thickness_of_snow_amount long_name = explicit snow fall on physics timestep @@ -9602,7 +9604,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_gfdl_microphysics_scheme .or. flag_for_microphysics_scheme == flag_for_thompson_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme) [snowmt] standard_name = surface_snow_melt long_name = snow melt during timestep @@ -9617,7 +9619,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [soiltype] standard_name = soil_type_classification long_name = soil type at each grid cell @@ -9628,10 +9630,10 @@ standard_name = soil_temperature_save long_name = soil temperature before entering a physics scheme units = K - dimensions = (horizontal_loop_extent,soil_vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_dimension_of_soil) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [stress] standard_name = surface_wind_stress long_name = surface wind stress @@ -9667,7 +9669,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noahmp_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme) [theta] standard_name = angle_from_east_of_maximum_subgrid_orographic_variations long_name = angle with_respect to east of maximum subgrid orographic variations @@ -9682,7 +9684,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [tice] standard_name = sea_ice_temperature_interstitial long_name = sea ice surface skin temperature use as interstitial @@ -9732,7 +9734,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [tracers_start_index] standard_name = start_index_of_other_tracers long_name = beginning index of the non-water tracer species @@ -9793,7 +9795,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [tsfc_ice] standard_name = surface_skin_temperature_over_ice_interstitial long_name = surface skin temperature over ice (temporary use as interstitial) @@ -9839,7 +9841,7 @@ standard_name = instantaneous_atmosphere_updraft_convective_mass_flux long_name = (updraft mass flux) * delt units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [uustar_water] @@ -9867,7 +9869,7 @@ standard_name = vertically_diffused_tracer_concentration long_name = tracer concentration diffused by PBL scheme units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_vertical_diffusion_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) type = real kind = kind_phys [lndp_vgf] @@ -9894,10 +9896,10 @@ standard_name = vertical_velocity_for_updraft long_name = vertical velocity for updraft units = m s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_microphysics_scheme == flag_for_morrison_gettelman_microphysics_scheme) + active = (control_for_microphysics_scheme == identifier_for_morrison_gettelman_microphysics_scheme) [wcbmax] standard_name = maximum_updraft_velocity_at_cloud_base long_name = maximum updraft velocity at cloud base @@ -9912,7 +9914,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_land_surface_scheme == flag_for_noah_wrfv4_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [weasd_ice] standard_name = water_equivalent_accumulated_snow_depth_over_ice long_name = water equiv of acc snow depth over ice @@ -10015,34 +10017,34 @@ standard_name = tendency_of_x_wind_due_to_nonorographic_gravity_wave_drag long_name = zonal wind tendency due to non-stationary GWs units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dvdt_ngw] standard_name = tendency_of_y_wind_due_to_nonorographic_gravity_wave_drag long_name = meridional wind tendency due to non-stationary GWs units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [dtdt_ngw] standard_name = tendency_of_air_temperature_due_to_nonorographic_gravity_wave_drag long_name = air temperature tendency due to non-stationary GWs units = K s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [kdis_ngw] standard_name = atmosphere_momentum_diffusivity_due_to_nonorographic_gravity_wave_drag long_name = eddy mixing due to non-stationary GWs units = m2 s-1 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (flag_for_ugwp_version_1 .or. gwd_opt==33 .or. gwd_opt==22 .or. gwd_opt==3 .or. gwd_opt==2) + active = (flag_for_ugwp_version_1 .or. control_for_drag_suite_gravity_wave_drag==33 .or. control_for_drag_suite_gravity_wave_drag==22 .or. control_for_drag_suite_gravity_wave_drag==3 .or. control_for_drag_suite_gravity_wave_drag==2) [zlwb] standard_name = height_of_low_level_wave_breaking long_name = height of low level wave breaking @@ -10103,21 +10105,21 @@ standard_name = instantaneous_change_in_x_wind_due_to_mountain_blocking_drag long_name = instantaneous change in x wind due to mountain blocking drag units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [dudt_tms] standard_name = tendency_of_x_wind_due_to_turbulent_orographic_form_drag long_name = instantaneous change in x wind due to TOFD units = m s-2 - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [qs_lay] standard_name = saturation_vapor_pressure long_name = saturation vapor pressure units = Pa - dimensions = (horizontal_dimension,vertical_dimension) + dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys optional = F @@ -10126,7 +10128,7 @@ standard_name = water_vapor_mixing_ratio long_name = water vaport mixing ratio units = kg/kg - dimensions = (horizontal_dimension,vertical_dimension) + dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys optional = F @@ -10135,7 +10137,7 @@ standard_name = air_pressure_at_layer_for_RRTMGP_in_hPa long_name = air pressure layer units = hPa - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10143,7 +10145,7 @@ standard_name = air_pressure_at_interface_for_RRTMGP_in_hPa long_name = air pressure level units = hPa - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10151,7 +10153,7 @@ standard_name = air_temperature_at_layer_for_RRTMGP long_name = air temperature layer units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10159,7 +10161,7 @@ standard_name = air_temperature_at_interface_for_RRTMGP long_name = air temperature layer units = K - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10167,7 +10169,7 @@ standard_name = virtual_temperature long_name = layer virtual temperature units = K - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10175,7 +10177,7 @@ standard_name = relative_humidity long_name = layer relative humidity units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10183,7 +10185,7 @@ standard_name = layer_thickness long_name = layer_thickness units = m - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10191,7 +10193,7 @@ standard_name = chemical_tracers long_name = chemical tracers units = g g-1 - dimensions = (horizontal_loop_extent,vertical_dimension,number_of_tracers) + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10199,7 +10201,7 @@ standard_name = cloud_overlap_param long_name = cloud overlap parameter for RRTMGP (but not for RRTMG) units = km - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10207,7 +10209,7 @@ standard_name = precip_overlap_param long_name = precipitation overlap parameter units = km - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10227,21 +10229,21 @@ standard_name = RRTMGP_cloud_optical_depth_layers_at_0_55mu_band long_name = approx .55mu band layer cloud optical depth units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [cldtaulw] standard_name = RRTMGP_cloud_optical_depth_layers_at_10mu_band long_name = approx 10mu band layer cloud optical depth units = none - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys [fluxlwUP_clrsky] standard_name = RRTMGP_lw_flux_profile_upward_clrsky long_name = RRTMGP upward longwave clr-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10249,7 +10251,7 @@ standard_name = RRTMGP_lw_flux_profile_downward_clrsky long_name = RRTMGP downward longwave clr-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10257,7 +10259,7 @@ standard_name = RRTMGP_sw_flux_profile_upward_allsky long_name = RRTMGP upward shortwave all-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10265,7 +10267,7 @@ standard_name = RRTMGP_sw_flux_profile_downward_allsky long_name = RRTMGP downward shortwave all-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10273,7 +10275,7 @@ standard_name = RRTMGP_sw_flux_profile_upward_clrsky long_name = RRTMGP upward shortwave clr-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10281,7 +10283,7 @@ standard_name = RRTMGP_sw_flux_profile_downward_clrsky long_name = RRTMGP downward shortwave clr-sky flux profile units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10289,21 +10291,21 @@ standard_name = RRTMGP_lw_fluxes long_name = lw fluxes total sky / csk and up / down at levels units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = proflw_type active = (flag_for_rrtmgp_radiation_scheme) [flxprf_sw] standard_name = RRTMGP_sw_fluxes long_name = sw fluxes total sky / csk and up / down at levels units = W m-2 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) + dimensions = (horizontal_loop_extent,vertical_interface_dimension) type = profsw_type active = (flag_for_rrtmgp_radiation_scheme) [aerosolslw] standard_name = RRTMGP_aerosol_optical_properties_for_longwave_bands_01_16 long_name = aerosol optical properties for longwave bands 01-16 units = various - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_lw_bands_rrtmgp,number_of_aerosol_output_fields_for_longwave_radiation) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_longwave_bands,number_of_aerosol_output_fields_for_longwave_radiation) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10311,28 +10313,28 @@ standard_name = RRTMGP_aerosol_optical_depth_for_longwave_bands_01_16 long_name = aerosol optical depth for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_lw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_longwave_bands) type = real kind = kind_phys [aerosolslw(:,:,:,2)] standard_name = RRTMGP_aerosol_single_scattering_albedo_for_longwave_bands_01_16 long_name = aerosol single scattering albedo for longwave bands 01-16 units = frac - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_lw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_longwave_bands) type = real kind = kind_phys [aerosolslw(:,:,:,3)] standard_name = RRTMGP_aerosol_asymmetry_parameter_for_longwave_bands_01_16 long_name = aerosol asymmetry parameter for longwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_lw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_longwave_bands) type = real kind = kind_phys [aerosolssw] standard_name = RRTMGP_aerosol_optical_properties_for_shortwave_bands_01_16 long_name = aerosol optical properties for shortwave bands 01-16 units = various - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_sw_bands_rrtmgp, number_of_aerosol_output_fields_for_shortwave_radiation) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands, number_of_aerosol_output_fields_for_shortwave_radiation) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10340,21 +10342,21 @@ standard_name = RRTMGP_aerosol_optical_depth_for_shortwave_bands_01_16 long_name = aerosol optical depth for shortwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_sw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands) type = real kind = kind_phys [aerosolssw(:,:,:,2)] standard_name = RRTMGP_aerosol_single_scattering_albedo_for_shortwave_bands_01_16 long_name = aerosol single scattering albedo for shortwave bands 01-16 units = frac - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_sw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands) type = real kind = kind_phys [aerosolssw(:,:,:,3)] standard_name = RRTMGP_aerosol_asymmetry_parameter_for_shortwave_bands_01_16 long_name = aerosol asymmetry parameter for shortwave bands 01-16 units = none - dimensions = (horizontal_loop_extent,vertical_dimension, number_of_sw_bands_rrtmgp) + dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands) type = real kind = kind_phys [icseed_lw] @@ -10375,7 +10377,7 @@ standard_name = precipitation_fraction_by_layer long_name = precipitation fraction in each layer units = frac - dimensions = (horizontal_loop_extent,vertical_dimension) + dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10481,7 +10483,7 @@ standard_name = surface_emissivity_in_each_RRTMGP_LW_band long_name = surface emissivity in each RRTMGP LW band units = none - dimensions = (number_of_lw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_longwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10489,7 +10491,7 @@ standard_name = secant_of_diffusivity_angle_each_RRTMGP_LW_band long_name = secant of diffusivity angle in each RRTMGP LW band units = none - dimensions = (number_of_lw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_longwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10497,7 +10499,7 @@ standard_name = surface_albedo_nearIR_direct long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) units = none - dimensions = (number_of_sw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10505,7 +10507,7 @@ standard_name = surface_albedo_nearIR_diffuse long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) units = none - dimensions = (number_of_sw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10513,7 +10515,7 @@ standard_name = surface_albedo_uvvis_dir long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) units = none - dimensions = (number_of_sw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10521,7 +10523,7 @@ standard_name = surface_albedo_uvvis_dif long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) units = none - dimensions = (number_of_sw_bands_rrtmgp,horizontal_loop_extent) + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10529,7 +10531,7 @@ standard_name = toa_incident_lw_flux_by_spectral_point long_name = TOA longwave incident flux at each spectral points units = W m-2 - dimensions = (horizontal_loop_extent,number_of_lw_spectral_points_rrtmgp) + dimensions = (horizontal_loop_extent,number_of_longwave_spectral_points) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10537,7 +10539,7 @@ standard_name = toa_incident_sw_flux_by_spectral_point long_name = TOA shortwave incident flux at each spectral points units = W m-2 - dimensions = (horizontal_loop_extent,number_of_sw_spectral_points_rrtmgp) + dimensions = (horizontal_loop_extent,number_of_shortwave_spectral_points) type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) @@ -10830,7 +10832,7 @@ type = real kind = kind_phys [con_rd] - standard_name = gas_constant_dry_air + standard_name = gas_constant_of_dry_air long_name = ideal gas constant for dry air units = J kg-1 K-1 dimensions = () @@ -10907,7 +10909,7 @@ type = real kind = kind_phys [rhowater] - standard_name = liquid_water_density + standard_name = fresh_liquid_water_density_at_0c long_name = density of liquid water units = kg m-3 dimensions = () diff --git a/ccpp/physics b/ccpp/physics index 610fbcb9c..5f0f192b6 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 610fbcb9cda926b4a734e9479784f79bdae85c15 +Subproject commit 5f0f192b65cf8f1619f6644b66e8312c401e75f5 From c52bb0b2ce698caf62d14411e51cc11737cbb649 Mon Sep 17 00:00:00 2001 From: Bin Liu Date: Thu, 5 Aug 2021 09:19:48 -0400 Subject: [PATCH 05/14] Merge HAFS coupling (#355) Add HAFS HYCOM/WW3/CDEPS coupling A. More details about the HAFS coupling related changes (from @danrosen25) - gfs_physics_nml namelist modification (inpunt.nml file) - added cpl_imp_mrg used in assign_importdata - added cpl_imp_dbg used in assign_importdata - assign_importdata subroutine modification - added argument jdat, which is used to timestamp cpl_imp_dbg output - if cpl_imp_mrg then assign_importdata will compare import data to missing_value (9.99e20). If import data equals missing value and import field is 'sea_surface_temperature' then Sfcprop%tsfco is set to Sfcprop%tsfc instead of import data. merged data is then stored in datar8, which is a local copy of the import data. - if cpl_imp_dbg then the merged data stored in datar8 is written out to netcdf files - realizeConnectedCplFields - added optional argument fill_value, which is used to fill completed ESMF_Field, defaults to 0.0 - fv3_cap - import data realized with 9.99e20 fill_value - module_fcst_grid_comp - removed commented out code in regional grid creation - fixed grid alignment for regional fcstGrid - added corner coordinates (edges) to regional fcstGrid, using internal ATM%lon_bnd and ATM%lat_bnd - writes forecast grid to NetCDF if DumpFields = true in nems.configure B. Added the following HAFS development related namelist options: cplice, rlmx, elmax, sfc_rlm (more details can be seen from ncar/ccpp-physics/pull/701) C. Renamed and added HAFS related ccpp suites Co-authored-by: Jun.Wang Co-authored-by: Jili Dong Co-authored-by: Chunxi.Zhang-NOAA Co-authored-by: andrew.hazelton Co-authored-by: ZhanZhang-NOAA Co-authored-by: Daniel Rosen Co-authored-by: Grant Firl Co-authored-by: Dom Heinzeller Co-authored-by: Man.Zhang Co-authored-by: Ufuk Turuncoglu --- atmos_model.F90 | 49 +++- ccpp/data/GFS_typedefs.F90 | 30 ++- ccpp/data/GFS_typedefs.meta | 38 +++ ccpp/physics | 2 +- .../suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml | 95 ++++++++ .../suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml | 93 ++++++++ ...v0_hwrf.xml => suite_FV3_HAFS_v0_hwrf.xml} | 2 +- ...ml => suite_FV3_HAFS_v0_hwrf_thompson.xml} | 2 +- cpl/module_cap_cpl.F90 | 16 +- fv3_cap.F90 | 4 +- io/module_write_netcdf.F90 | 2 +- module_fcst_grid_comp.F90 | 219 +++++++++++++++++- 12 files changed, 524 insertions(+), 28 deletions(-) create mode 100644 ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml create mode 100644 ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml rename ccpp/suites/{suite_HAFS_v0_hwrf.xml => suite_FV3_HAFS_v0_hwrf.xml} (98%) rename ccpp/suites/{suite_HAFS_v0_hwrf_thompson.xml => suite_FV3_HAFS_v0_hwrf_thompson.xml} (98%) diff --git a/atmos_model.F90 b/atmos_model.F90 index bd2c1c887..512c263ad 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -275,7 +275,7 @@ subroutine update_atmos_radiation_physics (Atmos) !--- if coupled, assign coupled fields if (.not. GFS_control%cplchm) then - call assign_importdata(rc) + call assign_importdata(jdat(:),rc) endif ! Calculate total non-physics tendencies by substracting old GFS Stateout @@ -1621,13 +1621,14 @@ subroutine dealloc_atmos_data_type (Atmos) Atmos%lat ) end subroutine dealloc_atmos_data_type - subroutine assign_importdata(rc) + subroutine assign_importdata(jdat, rc) use module_cplfields, only: importFields, nImportFields, queryImportFields, & importFieldsValid use ESMF ! implicit none + integer, intent(in) :: jdat(8) integer, intent(out) :: rc !--- local variables @@ -1639,9 +1640,15 @@ subroutine assign_importdata(rc) real(kind=ESMF_KIND_R8), dimension(:,:), pointer :: datar82d real(kind=ESMF_KIND_R8), dimension(:,:,:), pointer:: datar83d real(kind=GFS_kind_phys), dimension(:,:), pointer :: datar8 + logical, dimension(:,:), pointer :: mergeflg real(kind=GFS_kind_phys) :: tem, ofrac logical found, isFieldCreated, lcpl_fice + real(ESMF_KIND_R8), parameter :: missing_value = 9.99e20_ESMF_KIND_R8 + type(ESMF_Grid) :: grid + type(ESMF_Field) :: dbgField + character(19) :: currtimestring real (kind=GFS_kind_phys), parameter :: z0ice=1.1 ! (in cm) + ! real(kind=GFS_kind_phys), parameter :: himax = 8.0 !< maximum ice thickness allowed ! real(kind=GFS_kind_phys), parameter :: himin = 0.1 !< minimum ice thickness required @@ -1660,6 +1667,7 @@ subroutine assign_importdata(rc) lcpl_fice = .false. allocate(datar8(isc:iec,jsc:jec)) + allocate(mergeflg(isc:iec,jsc:jec)) ! if (mpp_pe() == mpp_root_pe() .and. debug) print *,'in cplImp,dim=',isc,iec,jsc,jec ! if (mpp_pe() == mpp_root_pe() .and. debug) print *,'in cplImp,GFS_data, size', size(GFS_data) @@ -1676,6 +1684,7 @@ subroutine assign_importdata(rc) if (isFieldCreated) then ! put the data from local cubed sphere grid to column grid for phys datar8 = -99999.0 + mergeflg = .false. call ESMF_FieldGet(importFields(n), dimCount=dimCount ,typekind=datatype, & name=impfield_name, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return @@ -1685,6 +1694,9 @@ subroutine assign_importdata(rc) call ESMF_FieldGet(importFields(n),farrayPtr=datar82d,localDE=0, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return datar8 = datar82d + if (GFS_control%cpl_imp_mrg) then + mergeflg(:,:) = datar82d(:,:).eq.missing_value + endif if (mpp_pe() == mpp_root_pe() .and. debug) print *,'in cplIMP,atmos gets ',trim(impfield_name),' datar8=', & datar8(isc,jsc), maxval(datar8), minval(datar8) found = .true. @@ -1779,9 +1791,17 @@ subroutine assign_importdata(rc) do i=isc,iec nb = Atm_block%blkno(i,j) ix = Atm_block%ixp(i,j) - if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero .and. datar8(i,j) > 150.0) then -! GFS_data(nb)%Coupling%tseain_cpl(ix) = datar8(i,j) - GFS_data(nb)%Sfcprop%tsfco(ix) = datar8(i,j) + if (GFS_Data(nb)%Sfcprop%oceanfrac(ix) > zero .and. datar8(i,j) > 150.0) then + if(mergeflg(i,j)) then +! GFS_Data(nb)%Coupling%tseain_cpl(ix) = & +! GFS_Data(nb)%Sfcprop%tsfc(ix) + GFS_Data(nb)%Sfcprop%tsfco(ix) = & + GFS_Data(nb)%Sfcprop%tsfc(ix) + datar8(i,j) = GFS_Data(nb)%Sfcprop%tsfc(ix) + else +! GFS_Data(nb)%Coupling%tseain_cpl(ix) = datar8(i,j) + GFS_Data(nb)%Sfcprop%tsfco(ix) = datar8(i,j) + endif endif enddo enddo @@ -2436,10 +2456,29 @@ subroutine assign_importdata(rc) endif endif + ! write post merge import data to NetCDF file. + if (GFS_control%cpl_imp_dbg) then + call ESMF_FieldGet(importFields(n), grid=grid, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + + dbgField = ESMF_FieldCreate(grid=grid, farrayPtr=datar8, name=impfield_name, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + + write (currtimestring, "(I4.4,'-',I2.2,'-',I2.2,'T',I2.2,':',I2.2,':',I2.2)") & + jdat(1), jdat(2), jdat(3), jdat(5), jdat(6), jdat(7) + call ESMF_FieldWrite(dbgField, fileName='fv3_merge_'//trim(impfield_name)//'_'// & + trim(currtimestring)//'.nc', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + + call ESMF_FieldDestroy(dbgField, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + endif + endif ! if (found) then endif ! if (isFieldCreated) then enddo ! + deallocate(mergeflg) deallocate(datar8) ! update sea ice related fields: diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index d9c89bd71..f44dabb7b 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -628,9 +628,12 @@ module GFS_typedefs !--- coupling parameters logical :: cplflx !< default no cplflx collection + logical :: cplice !< default yes cplice collection (used together with cplflx) logical :: cplwav !< default no cplwav collection logical :: cplwav2atm !< default no wav->atm coupling logical :: cplchm !< default no cplchm collection + logical :: cpl_imp_mrg !< default no merge import with internal forcings + logical :: cpl_imp_dbg !< default no write import data to file post merge !--- integrated dynamics through earth's atmosphere logical :: lsidea @@ -1093,6 +1096,9 @@ module GFS_typedefs real(kind=kind_phys) :: dspfac !< tke dissipative heating factor real(kind=kind_phys) :: bl_upfr !< updraft fraction in boundary layer mass flux scheme real(kind=kind_phys) :: bl_dnfr !< downdraft fraction in boundary layer mass flux scheme + real(kind=kind_phys) :: rlmx !< maximum allowed mixing length in boundary layer mass flux scheme + real(kind=kind_phys) :: elmx !< maximum allowed dissipation mixing length in boundary layer mass flux scheme + integer :: sfc_rlm !< choice of near surface mixing length in boundary layer mass flux scheme !--- parameters for canopy heat storage (CHS) parameterization real(kind=kind_phys) :: h0facu !< CHS factor for sensible heat flux in unstable surface layer @@ -3103,9 +3109,12 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- coupling parameters logical :: cplflx = .false. !< default no cplflx collection + logical :: cplice = .true. !< default yes cplice collection (used together with cplflx) logical :: cplwav = .false. !< default no cplwav collection logical :: cplwav2atm = .false. !< default no cplwav2atm coupling logical :: cplchm = .false. !< default no cplchm collection + logical :: cpl_imp_mrg = .false. !< default no merge import with internal forcings + logical :: cpl_imp_dbg = .false. !< default no write import data to file post merge !--- integrated dynamics through earth's atmosphere logical :: lsidea = .false. @@ -3496,6 +3505,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys) :: dspfac = 1.0 !< tke dissipative heating factor real(kind=kind_phys) :: bl_upfr = 0.13 !< updraft fraction in boundary layer mass flux scheme real(kind=kind_phys) :: bl_dnfr = 0.1 !< downdraft fraction in boundary layer mass flux scheme + real(kind=kind_phys) :: rlmx = 300. !< maximum allowed mixing length in boundary layer mass flux scheme + real(kind=kind_phys) :: elmx = 300. !< maximum allowed dissipation mixing length in boundary layer mass flux scheme + integer :: sfc_rlm = 0 !< choice of near surface mixing length in boundary layer mass flux scheme !--- parameters for canopy heat storage (CHS) parameterization real(kind=kind_phys) :: h0facu = 0.25 @@ -3565,7 +3577,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & naux3d, aux2d_time_avg, aux3d_time_avg, fhcyc, & thermodyn_id, sfcpress_id, & !--- coupling parameters - cplflx, cplwav, cplwav2atm, cplchm, lsidea, & + cplflx, cplice, cplwav, cplwav2atm, cplchm, & + cpl_imp_mrg, cpl_imp_dbg, & + lsidea, & !--- radiation parameters fhswr, fhlwr, levr, nfxr, iaerclm, iflip, isol, ico2, ialb, & isot, iems, iaer, icliq_sw, iovr, ictm, isubc_sw, & @@ -3650,7 +3664,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & thsfc_loc, & ! vertical diffusion xkzm_m, xkzm_h, xkzm_s, xkzminv, moninq_fac, dspfac, & - bl_upfr, bl_dnfr, & + bl_upfr, bl_dnfr, rlmx, elmx, sfc_rlm, & !--- canopy heat storage parameterization h0facu, h0facs, & !--- cellular automata @@ -3840,9 +3854,12 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- coupling parameters Model%cplflx = cplflx + Model%cplice = cplice Model%cplwav = cplwav Model%cplwav2atm = cplwav2atm Model%cplchm = cplchm + Model%cpl_imp_mrg = cpl_imp_mrg + Model%cpl_imp_dbg = cpl_imp_dbg !--- integrated dynamics through earth's atmosphere Model%lsidea = lsidea @@ -4360,6 +4377,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%dspfac = dspfac Model%bl_upfr = bl_upfr Model%bl_dnfr = bl_dnfr + Model%rlmx = rlmx + Model%elmx = elmx + Model%sfc_rlm = sfc_rlm !--- canopy heat storage parametrization Model%h0facu = h0facu @@ -5423,9 +5443,12 @@ subroutine control_print(Model) print *, ' ' print *, 'coupling parameters' print *, ' cplflx : ', Model%cplflx + print *, ' cplice : ', Model%cplice print *, ' cplwav : ', Model%cplwav print *, ' cplwav2atm : ', Model%cplwav2atm print *, ' cplchm : ', Model%cplchm + print *, ' cpl_imp_mrg : ', Model%cpl_imp_mrg + print *, ' cpl_imp_dbg : ', Model%cpl_imp_dbg print *, ' ' print *, 'integrated dynamics through earth atmosphere' print *, ' lsidea : ', Model%lsidea @@ -5712,6 +5735,9 @@ subroutine control_print(Model) print *, ' dspfac : ', Model%dspfac print *, ' bl_upfr : ', Model%bl_upfr print *, ' bl_dnfr : ', Model%bl_dnfr + print *, ' rlmx : ', Model%rlmx + print *, ' elmx : ', Model%elmx + print *, ' sfc_rlm : ', Model%sfc_rlm print *, ' ' print *, 'parameters for canopy heat storage parametrization' print *, ' h0facu : ', Model%h0facu diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 36c729fe8..81592b886 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2588,6 +2588,12 @@ units = flag dimensions = () type = logical +[cplice] + standard_name = flag_for_sea_ice_coupling + long_name = flag controlling cplice collection (default on) + units = flag + dimensions = () + type = logical [cplwav] standard_name = flag_for_ocean_wave_coupling long_name = flag controlling cplwav collection (default off) @@ -2606,6 +2612,18 @@ units = flag dimensions = () type = logical +[cpl_imp_mrg] + standard_name = flag_for_merging_imported_data + long_name = flag controlling cpl_imp_mrg for imported data (default off) + units = flag + dimensions = () + type = logical +[cpl_imp_dbg] + standard_name = flag_for_debugging_merged_imported_data + long_name = flag controlling cpl_imp_dbg for imported data (default off) + units = flag + dimensions = () + type = logical [lsidea] standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics @@ -4371,6 +4389,26 @@ dimensions = () type = real kind = kind_phys +[rlmx] + standard_name = maximum_allowed_mixing_length_in_boundary_layer_mass_flux_scheme + long_name = maximum allowed mixing length in boundary layer mass flux scheme + units = m + dimensions = () + type = real + kind = kind_phys +[elmx] + standard_name = maximum_allowed_dissipation_mixing_length_in_boundary_layer_mass_flux_scheme + long_name = maximum allowed dissipation mixing length in boundary layer mass flux scheme + units = m + dimensions = () + type = real + kind = kind_phys +[sfc_rlm] + standard_name = choice_of_near_surface_mixing_length_in_boundary_layer_mass_flux_scheme + long_name = choice of near surface mixing length in boundary layer mass flux scheme + units = none + dimensions = () + type = integer [h0facu] standard_name = multiplicative_tuning_parameter_for_reduced_surface_heat_fluxes_due_to_canopy_heat_storage long_name = canopy heat storage factor for sensible heat flux in unstable surface layer diff --git a/ccpp/physics b/ccpp/physics index 5f0f192b6..4960c9a08 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 5f0f192b65cf8f1619f6644b66e8312c401e75f5 +Subproject commit 4960c9a0873d4e5045b13caaba01d4d9a78ceef1 diff --git a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml new file mode 100644 index 000000000..12eb779d0 --- /dev/null +++ b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml @@ -0,0 +1,95 @@ + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml new file mode 100644 index 000000000..068da3e1b --- /dev/null +++ b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml @@ -0,0 +1,93 @@ + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_ocean + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/ccpp/suites/suite_HAFS_v0_hwrf.xml b/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml similarity index 98% rename from ccpp/suites/suite_HAFS_v0_hwrf.xml rename to ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml index 6d5b4565b..80f3a8f1c 100644 --- a/ccpp/suites/suite_HAFS_v0_hwrf.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml @@ -1,6 +1,6 @@ - + diff --git a/ccpp/suites/suite_HAFS_v0_hwrf_thompson.xml b/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml similarity index 98% rename from ccpp/suites/suite_HAFS_v0_hwrf_thompson.xml rename to ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml index 28bfa5fca..6240bb687 100644 --- a/ccpp/suites/suite_HAFS_v0_hwrf_thompson.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml @@ -1,6 +1,6 @@ - + diff --git a/cpl/module_cap_cpl.F90 b/cpl/module_cap_cpl.F90 index f74ae1a9c..47f48ce4d 100644 --- a/cpl/module_cap_cpl.F90 +++ b/cpl/module_cap_cpl.F90 @@ -139,7 +139,7 @@ end subroutine realizeConnectedInternCplField subroutine realizeConnectedCplFields(state, grid, & numLevels, numSoilLayers, numTracers, & - fields_info, state_tag, fieldList, rc) + fields_info, state_tag, fieldList, fill_value, rc) use field_manager_mod, only: MODEL_ATMOS use tracer_manager_mod, only: get_number_tracers, get_tracer_names @@ -152,18 +152,28 @@ subroutine realizeConnectedCplFields(state, grid, & type(FieldInfo), dimension(:), intent(in) :: fields_info character(len=*), intent(in) :: state_tag !< Import or export. type(ESMF_Field), dimension(:), intent(out) :: fieldList + real(ESMF_KIND_R8), optional , intent(in) :: fill_value integer, intent(out) :: rc ! local variables + integer :: item, pos, tracerCount logical :: isConnected type(ESMF_Field) :: field + real(ESMF_KIND_R8) :: l_fill_value + real(ESMF_KIND_R8), parameter :: d_fill_value = 0._ESMF_KIND_R8 type(ESMF_StateIntent_Flag) :: stateintent character(len=32), allocatable, dimension(:) :: tracerNames, tracerUnits ! begin rc = ESMF_SUCCESS + if (present(fill_value)) then + l_fill_value = fill_value + else + l_fill_value = d_fill_value + end if + ! attach list of tracer names to exported tracer field as metadata call ESMF_StateGet(state, stateintent=stateintent, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return @@ -221,8 +231,8 @@ subroutine realizeConnectedCplFields(state, grid, & call NUOPC_Realize(state, field=field, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - ! -- zero out field - call ESMF_FieldFill(field, dataFillScheme="const", const1=0._ESMF_KIND_R8, rc=rc) + ! -- initialize field value + call ESMF_FieldFill(field, dataFillScheme="const", const1=l_fill_value, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return ! -- save field diff --git a/fv3_cap.F90 b/fv3_cap.F90 index 1477f3bbc..eca8cf686 100644 --- a/fv3_cap.F90 +++ b/fv3_cap.F90 @@ -819,7 +819,7 @@ subroutine InitializeRealize(gcomp, rc) ! -- realize connected fields in exportState call realizeConnectedCplFields(exportState, fcstGrid, & numLevels, numSoilLayers, numTracers, & - exportFieldsInfo, 'FV3 Export', exportFields, rc) + exportFieldsInfo, 'FV3 Export', exportFields, 0.0_ESMF_KIND_R8, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return ! -- initialize export fields if applicable @@ -829,7 +829,7 @@ subroutine InitializeRealize(gcomp, rc) ! -- realize connected fields in importState call realizeConnectedCplFields(importState, fcstGrid, & numLevels, numSoilLayers, numTracers, & - importFieldsInfo, 'FV3 Import', importFields, rc) + importFieldsInfo, 'FV3 Import', importFields, 9.99e20_ESMF_KIND_R8, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return end if diff --git a/io/module_write_netcdf.F90 b/io/module_write_netcdf.F90 index d15d646a6..30959e625 100644 --- a/io/module_write_netcdf.F90 +++ b/io/module_write_netcdf.F90 @@ -398,7 +398,7 @@ subroutine write_netcdf(fieldbundle, wrtfb, filename, mpi_comm, mype, im, jm, ic end if end subroutine write_netcdf - +! !---------------------------------------------------------------------------------------- subroutine get_global_attr(fldbundle, ncid, rc) type(ESMF_FieldBundle), intent(in) :: fldbundle diff --git a/module_fcst_grid_comp.F90 b/module_fcst_grid_comp.F90 index a02744058..9ff27b1a6 100644 --- a/module_fcst_grid_comp.F90 +++ b/module_fcst_grid_comp.F90 @@ -204,6 +204,7 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) logical :: freq_restart, fexist integer, allocatable, dimension(:) :: isl, iel, jsl, jel integer, allocatable, dimension(:,:,:) :: deBlockList + integer :: tlb(2), tub(2) type(ESMF_Decomp_Flag) :: decompflagPTile(2,6) @@ -466,8 +467,7 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) fcstGrid = ESMF_GridCreateNoPeriDim(regDecomp=(/atm_int_state%Atm%layout(1),atm_int_state%Atm%layout(2)/), & minIndex=(/1,1/), & maxIndex=(/atm_int_state%Atm%mlon,atm_int_state%Atm%mlat/), & - gridEdgeLWidth=(/0,0/), & - gridEdgeUWidth=(/0,0/), & + gridAlign=(/-1,-1/), & decompflag=(/ESMF_DECOMP_SYMMEDGEMAX,ESMF_DECOMP_SYMMEDGEMAX/), & name="fcst_grid", & indexflag=ESMF_INDEX_DELOCAL, & @@ -488,16 +488,18 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) enddo ! add and define "corner" coordinate values - !call ESMF_GridAddCoord(fcstGrid, staggerLoc=ESMF_STAGGERLOC_CORNER, staggerAlign=(/1,1/), rc=rc); ESMF_ERR_ABORT(rc) - !call ESMF_GridGetCoord(fcstGrid, coordDim=1, staggerLoc=ESMF_STAGGERLOC_CORNER, farrayPtr=glonPtr, rc=rc); ESMF_ERR_ABORT(rc) - !call ESMF_GridGetCoord(fcstGrid, coordDim=2, staggerLoc=ESMF_STAGGERLOC_CORNER, farrayPtr=glatPtr, rc=rc); ESMF_ERR_ABORT(rc) - - !do j = jsc, jec - !do i = isc, iec - ! glonPtr(i,j) = atm_int_state%Atm%gridstruct%agrid_64(i,j,1) - ! glatPtr(i,j) = atm_int_state%Atm%gridstruct%agrid_64(i,j,2) - !enddo - !enddo + call ESMF_GridAddCoord(fcstGrid, staggerLoc=ESMF_STAGGERLOC_CORNER, & + rc=rc); ESMF_ERR_ABORT(rc) + call ESMF_GridGetCoord(fcstGrid, coordDim=1, staggerLoc=ESMF_STAGGERLOC_CORNER, & + totalLBound=tlb, totalUBound=tub, & + farrayPtr=glonPtr, rc=rc); ESMF_ERR_ABORT(rc) + glonPtr(tlb(1):tub(1),tlb(2):tub(2)) = & + atm_int_state%Atm%lon_bnd(tlb(1):tub(1),tlb(2):tub(2)) * dtor + call ESMF_GridGetCoord(fcstGrid, coordDim=2, staggerLoc=ESMF_STAGGERLOC_CORNER, & + totalLBound=tlb, totalUBound=tub, & + farrayPtr=glatPtr, rc=rc); ESMF_ERR_ABORT(rc) + glatPtr(tlb(1):tub(1),tlb(2):tub(2)) = & + atm_int_state%Atm%lat_bnd(tlb(1):tub(1),tlb(2):tub(2)) * dtor else ! not regional @@ -580,6 +582,13 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) ! if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return ! endif ! +! Write grid to netcdf file + if( cplprint_flag ) then + call wrt_fcst_grid(fcstGrid, "diagnostic_FV3_fcstGrid.nc", & + regridArea=.TRUE., rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + endif + ! Add gridfile Attribute to the exportState call ESMF_AttributeAdd(exportState, convention="NetCDF", purpose="FV3", & attrList=(/"gridfile"/), rc=rc) @@ -990,6 +999,192 @@ subroutine wrt_atmres_timestamp(atm_int_state,timestamp) endif end subroutine wrt_atmres_timestamp ! +!####################################################################### +!-- write forecast grid to NetCDF file for diagnostics +! + subroutine wrt_fcst_grid(grid, fileName, relaxedflag, regridArea, rc) + type(ESMF_Grid), intent(in) :: grid + character(len=*), intent(in), optional :: fileName + logical, intent(in), optional :: relaxedflag + logical, intent(in), optional :: regridArea + integer, intent(out) :: rc +! +!----------------------------------------------------------------------- +!*** local variables +! + logical :: ioCapable + logical :: doItFlag + character(len=64) :: lfileName + character(len=64) :: gridName + type(ESMF_Array) :: array + type(ESMF_ArrayBundle) :: arraybundle + logical :: isPresent + integer :: stat + logical :: hasCorners + logical :: lRegridArea + type(ESMF_Field) :: areaField + type(ESMF_FieldStatus_Flag) :: areaFieldStatus + + ioCapable = (ESMF_IO_PIO_PRESENT .and. & + (ESMF_IO_NETCDF_PRESENT .or. ESMF_IO_PNETCDF_PRESENT)) + doItFlag = .true. + if (present(relaxedFlag)) then + doItFlag = .not.relaxedflag .or. (relaxedflag.and.ioCapable) + endif + + if (doItFlag) then + ! Process optional arguments + if (present(fileName)) then + lfileName = trim(fileName) + else + call ESMF_GridGet(grid, name=gridName, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + lfileName = trim(gridName)//".nc" + endif + if (present(regridArea)) then + lRegridArea = regridArea + else + lRegridArea = .FALSE. + endif + + ! Create bundle for storing output + arraybundle = ESMF_ArrayBundleCreate(rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + + ! -- Centers -- + call ESMF_GridGetCoord(grid, staggerLoc=ESMF_STAGGERLOC_CENTER, & + isPresent=isPresent, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + if (isPresent) then + call ESMF_GridGetCoord(grid, coordDim=1, & + staggerLoc=ESMF_STAGGERLOC_CENTER, array=array, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArraySet(array, name="lon_center", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_GridGetCoord(grid, coordDim=2, & + staggerLoc=ESMF_STAGGERLOC_CENTER, array=array, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArraySet(array, name="lat_center", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + + ! -- Corners -- + call ESMF_GridGetCoord(grid, staggerLoc=ESMF_STAGGERLOC_CORNER, & + isPresent=hasCorners, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + if (hasCorners) then + call ESMF_GridGetCoord(grid, coordDim=1, & + staggerLoc=ESMF_STAGGERLOC_CORNER, array=array, rc=rc) + if (.not. ESMF_LogFoundError(rc, line=__LINE__, file=__FILE__)) then + call ESMF_ArraySet(array, name="lon_corner", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + call ESMF_GridGetCoord(grid, coordDim=2, & + staggerLoc=ESMF_STAGGERLOC_CORNER, array=array, rc=rc) + if (.not. ESMF_LogFoundError(rc, line=__LINE__, file=__FILE__)) then + call ESMF_ArraySet(array, name="lat_corner", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + if (lRegridArea) then + areaField = ESMF_FieldCreate(grid=grid, & + typekind=ESMF_TYPEKIND_R8, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_FieldRegridGetArea(areaField, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_FieldGet(areaField, array=array, rc=rc) + if (.not. ESMF_LogFoundError(rc, line=__LINE__, file=__FILE__)) then + call ESMF_ArraySet(array, name="regrid_area", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + endif + endif + + ! -- Mask -- + call ESMF_GridGetItem(grid, itemflag=ESMF_GRIDITEM_MASK, & + staggerLoc=ESMF_STAGGERLOC_CENTER, isPresent=isPresent, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + if (isPresent) then + call ESMF_GridGetItem(grid, staggerLoc=ESMF_STAGGERLOC_CENTER, & + itemflag=ESMF_GRIDITEM_MASK, array=array, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArraySet(array, name="mask", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + + ! -- Area -- + call ESMF_GridGetItem(grid, itemflag=ESMF_GRIDITEM_AREA, & + staggerLoc=ESMF_STAGGERLOC_CENTER, isPresent=isPresent, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + if (isPresent) then + call ESMF_GridGetItem(grid, staggerLoc=ESMF_STAGGERLOC_CENTER, & + itemflag=ESMF_GRIDITEM_AREA, array=array, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArraySet(array, name="area", rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + call ESMF_ArrayBundleAdd(arraybundle,(/array/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + + ! Write array bundle to grid file + call ESMF_ArrayBundleWrite(arraybundle, fileName=trim(lfileName), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + + ! Clean-up + if (lRegridArea) then + call ESMF_FieldGet(areaField, status=areaFieldStatus, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + if (areaFieldStatus.eq.ESMF_FIELDSTATUS_COMPLETE) then + call ESMF_FieldDestroy(areaField, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + endif + call ESMF_ArrayBundleDestroy(arraybundle,rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + endif + end subroutine wrt_fcst_grid +! !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- ! From c332edef13d1b23a99f62aa1f5f89eb5fabaf415 Mon Sep 17 00:00:00 2001 From: Jun Wang <37633869+junwang-noaa@users.noreply.github.com> Date: Fri, 6 Aug 2021 10:07:23 -0400 Subject: [PATCH 06/14] fix the grid definition for inline post lambert conformal (#365) --- io/post_regional.F90 | 6 ------ 1 file changed, 6 deletions(-) diff --git a/io/post_regional.F90 b/io/post_regional.F90 index 6d047fb41..44ea99b2e 100644 --- a/io/post_regional.F90 +++ b/io/post_regional.F90 @@ -296,13 +296,7 @@ subroutine post_getattr_regional(wrt_int_state) else lonstart = nint(lon1*gdsdegr) endif - if( lon2<0 ) then - lonlast = nint((lon2+360.)*gdsdegr) - else - lonlast = nint(lon2*gdsdegr) - endif latstart = nint(lat1*gdsdegr) - latlast = nint(lat2*gdsdegr) truelat1 = nint(stdlat1*gdsdegr) truelat2 = nint(stdlat2*gdsdegr) From 29787d5e629865122f40abc97f36a19537635a91 Mon Sep 17 00:00:00 2001 From: SMoorthi-emc <47667426+SMoorthi-emc@users.noreply.github.com> Date: Tue, 10 Aug 2021 09:02:41 -0400 Subject: [PATCH 07/14] Sm jul272021 cice alb (#359) Add option to use sea-ice albedo provided by the sea-ice model CICE in atmospheric radiation calculation. Add write_nsflip option. Co-authored-by: Jun.Wang --- atmos_model.F90 | 133 ++++++----- ccpp/data/GFS_typedefs.F90 | 120 ++++++---- ccpp/data/GFS_typedefs.meta | 78 ++----- ccpp/physics | 2 +- .../suite_FV3_GFS_cpld_rasmgshocnsst_ugwp.xml | 91 ++++++++ ..._FV3_GFS_cpld_rasmgshocnsstnoahmp_ugwp.xml | 91 ++++++++ ...suite_FV3_GFSv17alpha_cpldnsstras_ugwp.xml | 95 ++++++++ .../suites/suite_FV3_GFSv17alpha_ras_ugwp.xml | 94 ++++++++ io/FV3GFS_io.F90 | 219 ++++++++++++------ io/module_wrt_grid_comp.F90 | 42 +++- 10 files changed, 723 insertions(+), 242 deletions(-) create mode 100644 ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsst_ugwp.xml create mode 100644 ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsstnoahmp_ugwp.xml create mode 100644 ccpp/suites/suite_FV3_GFSv17alpha_cpldnsstras_ugwp.xml create mode 100644 ccpp/suites/suite_FV3_GFSv17alpha_ras_ugwp.xml diff --git a/atmos_model.F90 b/atmos_model.F90 index 512c263ad..07732294f 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -696,7 +696,7 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step) call atmosphere_nggps_diag (Time, init=.true.) call FV3GFS_diag_register (GFS_Diag, Time, Atm_block, GFS_control, Atmos%lon, Atmos%lat, Atmos%axes) call GFS_restart_populate (GFS_restart_var, GFS_control, GFS_data%Statein, GFS_data%Stateout, GFS_data%Sfcprop, & - GFS_data%Coupling, GFS_data%Grid, GFS_data%Tbd, GFS_data%Cldprop, GFS_data%Radtend, & + GFS_data%Coupling, GFS_data%Grid, GFS_data%Tbd, GFS_data%Cldprop, GFS_data%Radtend, & GFS_data%IntDiag, Init_parm, GFS_Diag) call FV3GFS_restart_read (GFS_data, GFS_restart_var, Atm_block, GFS_control, Atmos%domain, Atm(mygrid)%flagstruct%warm_start) if(GFS_control%ca_sgs)then @@ -1650,9 +1650,11 @@ subroutine assign_importdata(jdat, rc) real (kind=GFS_kind_phys), parameter :: z0ice=1.1 ! (in cm) ! - real(kind=GFS_kind_phys), parameter :: himax = 8.0 !< maximum ice thickness allowed +! real(kind=GFS_kind_phys), parameter :: himax = 8.0 !< maximum ice thickness allowed ! real(kind=GFS_kind_phys), parameter :: himin = 0.1 !< minimum ice thickness required - real(kind=GFS_kind_phys), parameter :: hsmax = 100.0 !< maximum snow depth (m) allowed +! real(kind=GFS_kind_phys), parameter :: hsmax = 100.0 !< maximum snow depth (m) allowed + real(kind=GFS_kind_phys), parameter :: himax = 1.0e12 !< maximum ice thickness allowed + real(kind=GFS_kind_phys), parameter :: hsmax = 1.0e12 !< maximum snow depth (m) allowed ! !------------------------------------------------------------------------------ ! @@ -1992,85 +1994,92 @@ subroutine assign_importdata(jdat, rc) if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get snow_volume from mediator' endif endif + + if (GFS_control%use_cice_alb) then ! ! get instantaneous near IR albedo for diffuse radiation: for sea ice covered area !--------------------------------------------------------------------------------- - fldname = 'inst_ice_ir_dif_albedo' - if (trim(impfield_name) == trim(fldname)) then - findex = queryImportFields(fldname) - if (importFieldsValid(findex)) then + fldname = 'inst_ice_ir_dif_albedo' + if (trim(impfield_name) == trim(fldname)) then + findex = queryImportFields(fldname) + if (importFieldsValid(findex)) then !$omp parallel do default(shared) private(i,j,nb,ix) - do j=jsc,jec - do i=isc,iec - nb = Atm_block%blkno(i,j) - ix = Atm_block%ixp(i,j) - if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then - GFS_data(nb)%Coupling%sfc_alb_nir_dif_cpl(ix) = datar8(i,j) - endif + do j=jsc,jec + do i=isc,iec + nb = Atm_block%blkno(i,j) + ix = Atm_block%ixp(i,j) + if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then +! GFS_data(nb)%Coupling%sfc_alb_nir_dif_cpl(ix) = datar8(i,j) + GFS_data(nb)%Sfcprop%albdifnir_ice(ix) = datar8(i,j) + endif + enddo enddo - enddo - if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_nir_dif_cpl from mediator' + if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_nir_dif_cpl from mediator' + endif endif - endif ! ! get instantaneous near IR albedo for direct radiation: for sea ice covered area !--------------------------------------------------------------------------------- - fldname = 'inst_ice_ir_dir_albedo' - if (trim(impfield_name) == trim(fldname)) then - findex = queryImportFields(fldname) - if (importFieldsValid(findex)) then + fldname = 'inst_ice_ir_dir_albedo' + if (trim(impfield_name) == trim(fldname)) then + findex = queryImportFields(fldname) + if (importFieldsValid(findex)) then !$omp parallel do default(shared) private(i,j,nb,ix) - do j=jsc,jec - do i=isc,iec - nb = Atm_block%blkno(i,j) - ix = Atm_block%ixp(i,j) - if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then - GFS_data(nb)%Coupling%sfc_alb_nir_dir_cpl(ix) = datar8(i,j) - endif + do j=jsc,jec + do i=isc,iec + nb = Atm_block%blkno(i,j) + ix = Atm_block%ixp(i,j) + if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then +! GFS_data(nb)%Coupling%sfc_alb_nir_dir_cpl(ix) = datar8(i,j) + GFS_data(nb)%Sfcprop%albdirnir_ice(ix) = datar8(i,j) + endif + enddo enddo - enddo - if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_nir_dir_cpl from mediator' + if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_nir_dir_cpl from mediator' + endif endif - endif ! ! get instantaneous visible albedo for diffuse radiation: for sea ice covered area !--------------------------------------------------------------------------------- - fldname = 'inst_ice_vis_dif_albedo' - if (trim(impfield_name) == trim(fldname)) then - findex = queryImportFields(fldname) - if (importFieldsValid(findex)) then + fldname = 'inst_ice_vis_dif_albedo' + if (trim(impfield_name) == trim(fldname)) then + findex = queryImportFields(fldname) + if (importFieldsValid(findex)) then !$omp parallel do default(shared) private(i,j,nb,ix) - do j=jsc,jec - do i=isc,iec - nb = Atm_block%blkno(i,j) - ix = Atm_block%ixp(i,j) - if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then - GFS_data(nb)%Coupling%sfc_alb_vis_dif_cpl(ix) = datar8(i,j) - endif + do j=jsc,jec + do i=isc,iec + nb = Atm_block%blkno(i,j) + ix = Atm_block%ixp(i,j) + if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then +! GFS_data(nb)%Coupling%sfc_alb_vis_dif_cpl(ix) = datar8(i,j) + GFS_data(nb)%Sfcprop%albdifvis_ice(ix) = datar8(i,j) + endif + enddo enddo - enddo - if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_vis_dif_cpl from mediator' + if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get sfc_alb_vis_dif_cpl from mediator' + endif endif - endif ! ! get instantaneous visible IR albedo for direct radiation: for sea ice covered area !--------------------------------------------------------------------------------- - fldname = 'inst_ice_vis_dir_albedo' - if (trim(impfield_name) == trim(fldname)) then - findex = queryImportFields(fldname) - if (importFieldsValid(findex)) then + fldname = 'inst_ice_vis_dir_albedo' + if (trim(impfield_name) == trim(fldname)) then + findex = queryImportFields(fldname) + if (importFieldsValid(findex)) then !$omp parallel do default(shared) private(i,j,nb,ix) - do j=jsc,jec - do i=isc,iec - nb = Atm_block%blkno(i,j) - ix = Atm_block%ixp(i,j) - if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then - GFS_data(nb)%Coupling%sfc_alb_vis_dir_cpl(ix) = datar8(i,j) - endif + do j=jsc,jec + do i=isc,iec + nb = Atm_block%blkno(i,j) + ix = Atm_block%ixp(i,j) + if (GFS_data(nb)%Sfcprop%oceanfrac(ix) > zero) then +! GFS_data(nb)%Coupling%sfc_alb_vis_dir_cpl(ix) = datar8(i,j) + GFS_data(nb)%Sfcprop%albdirvis_ice(ix) = datar8(i,j) + endif + enddo enddo - enddo - if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get inst_ice_vis_dir_albedo from mediator' + if (mpp_pe() == mpp_root_pe() .and. debug) print *,'fv3 assign_import: get inst_ice_vis_dir_albedo from mediator' + endif endif endif @@ -2465,9 +2474,9 @@ subroutine assign_importdata(jdat, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return write (currtimestring, "(I4.4,'-',I2.2,'-',I2.2,'T',I2.2,':',I2.2,':',I2.2)") & - jdat(1), jdat(2), jdat(3), jdat(5), jdat(6), jdat(7) + jdat(1), jdat(2), jdat(3), jdat(5), jdat(6), jdat(7) call ESMF_FieldWrite(dbgField, fileName='fv3_merge_'//trim(impfield_name)//'_'// & - trim(currtimestring)//'.nc', rc=rc) + trim(currtimestring)//'.nc', rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return call ESMF_FieldDestroy(dbgField, rc=rc) @@ -2506,6 +2515,10 @@ subroutine assign_importdata(jdat, rc) GFS_data(nb)%Coupling%dvsfcin_cpl(ix) = -99999.0 ! ,, GFS_data(nb)%Coupling%dtsfcin_cpl(ix) = -99999.0 ! ,, GFS_data(nb)%Coupling%ulwsfcin_cpl(ix) = -99999.0 ! ,, +! GFS_data(nb)%Sfcprop%albdirvis_ice(ix) = -9999.0 ! ,, +! GFS_data(nb)%Sfcprop%albdirnir_ice(ix) = -9999.0 ! ,, +! GFS_data(nb)%Sfcprop%albdifvis_ice(ix) = -9999.0 ! ,, +! GFS_data(nb)%Sfcprop%albdifnir_ice(ix) = -9999.0 ! ,, if (abs(one-GFS_data(nb)%Sfcprop%oceanfrac(ix)) < epsln) then ! 100% open water GFS_data(nb)%Coupling%slimskin_cpl(ix) = zero GFS_data(nb)%Sfcprop%slmsk(ix) = zero diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index f44dabb7b..20700bf36 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -327,14 +327,16 @@ module GFS_typedefs real (kind=kind_phys), pointer :: smcwtdxy(:) => null() !< real (kind=kind_phys), pointer :: deeprechxy(:)=> null() !< real (kind=kind_phys), pointer :: rechxy (:) => null() !< - real (kind=kind_phys), pointer :: albdvis_lnd (:) => null() !< - real (kind=kind_phys), pointer :: albdnir_lnd (:) => null() !< - real (kind=kind_phys), pointer :: albivis_lnd (:) => null() !< - real (kind=kind_phys), pointer :: albinir_lnd (:) => null() !< - real (kind=kind_phys), pointer :: albdvis_ice (:) => null() !< - real (kind=kind_phys), pointer :: albdnir_ice (:) => null() !< - real (kind=kind_phys), pointer :: albivis_ice (:) => null() !< - real (kind=kind_phys), pointer :: albinir_ice (:) => null() !< + real (kind=kind_phys), pointer :: albdirvis_lnd (:) => null() !< + real (kind=kind_phys), pointer :: albdirnir_lnd (:) => null() !< + real (kind=kind_phys), pointer :: albdifvis_lnd (:) => null() !< + real (kind=kind_phys), pointer :: albdifnir_lnd (:) => null() !< + + real (kind=kind_phys), pointer :: albdirvis_ice (:) => null() !< + real (kind=kind_phys), pointer :: albdifvis_ice (:) => null() !< + real (kind=kind_phys), pointer :: albdirnir_ice (:) => null() !< + real (kind=kind_phys), pointer :: albdifnir_ice (:) => null() !< +! real (kind=kind_phys), pointer :: sfalb_ice (:) => null() !< real (kind=kind_phys), pointer :: snicexy (:,:) => null() !< real (kind=kind_phys), pointer :: snliqxy (:,:) => null() !< @@ -456,10 +458,10 @@ module GFS_typedefs ! real (kind=kind_phys), pointer :: ficein_cpl(:) => null() !< aoi_fld%ficein(item,lan) ! real (kind=kind_phys), pointer :: hicein_cpl(:) => null() !< aoi_fld%hicein(item,lan) real (kind=kind_phys), pointer :: hsnoin_cpl(:) => null() !< aoi_fld%hsnoin(item,lan) - real (kind=kind_phys), pointer :: sfc_alb_nir_dir_cpl(:) => null() !< sfc nir albedo for direct rad - real (kind=kind_phys), pointer :: sfc_alb_nir_dif_cpl(:) => null() !< sfc nir albedo for diffuse rad - real (kind=kind_phys), pointer :: sfc_alb_vis_dir_cpl(:) => null() !< sfc vis albedo for direct rad - real (kind=kind_phys), pointer :: sfc_alb_vis_dif_cpl(:) => null() !< sfc vis albedo for diffuse rad +! real (kind=kind_phys), pointer :: sfc_alb_nir_dir_cpl(:) => null() !< sfc nir albedo for direct rad +! real (kind=kind_phys), pointer :: sfc_alb_nir_dif_cpl(:) => null() !< sfc nir albedo for diffuse rad +! real (kind=kind_phys), pointer :: sfc_alb_vis_dir_cpl(:) => null() !< sfc vis albedo for direct rad +! real (kind=kind_phys), pointer :: sfc_alb_vis_dif_cpl(:) => null() !< sfc vis albedo for diffuse rad !--- only variable needed for cplwav2atm=.TRUE. ! real (kind=kind_phys), pointer :: zorlwav_cpl(:) => null() !< roughness length from wave model !--- also needed for ice/ocn coupling @@ -632,6 +634,7 @@ module GFS_typedefs logical :: cplwav !< default no cplwav collection logical :: cplwav2atm !< default no wav->atm coupling logical :: cplchm !< default no cplchm collection + logical :: use_cice_alb !< default .false. - i.e. don't use albedo imported from the ice model logical :: cpl_imp_mrg !< default no merge import with internal forcings logical :: cpl_imp_dbg !< default no write import data to file post merge @@ -1101,8 +1104,8 @@ module GFS_typedefs integer :: sfc_rlm !< choice of near surface mixing length in boundary layer mass flux scheme !--- parameters for canopy heat storage (CHS) parameterization - real(kind=kind_phys) :: h0facu !< CHS factor for sensible heat flux in unstable surface layer - real(kind=kind_phys) :: h0facs !< CHS factor for sensible heat flux in stable surface layer + real(kind=kind_phys) :: h0facu !< CHS factor for sensible heat flux in unstable surface layer + real(kind=kind_phys) :: h0facs !< CHS factor for sensible heat flux in stable surface layer !---cellular automata control parameters integer :: nca !< number of independent cellular automata @@ -1150,10 +1153,10 @@ module GFS_typedefs ! we'd need to make this dim(6,5). !--- tracer handling character(len=32), pointer :: tracer_names(:) !< array of initialized tracers from dynamic core - integer :: ntrac !< number of tracers - integer :: ntracp1 !< number of tracers plus one - integer :: ntracp100 !< number of tracers plus one hundred - integer :: nqrimef !< tracer index for mass weighted rime factor + integer :: ntrac !< number of tracers + integer :: ntracp1 !< number of tracers plus one + integer :: ntracp100 !< number of tracers plus one hundred + integer :: nqrimef !< tracer index for mass weighted rime factor integer, pointer :: dtidx(:,:) => null() !< index in outermost dimension of dtend integer :: ndtend !< size of outermost dimension of dtend @@ -2379,10 +2382,10 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate (Sfcprop%weasdl (IM)) ! allocate (Sfcprop%hprim (IM)) allocate (Sfcprop%hprime (IM,Model%nmtvr)) - allocate(Sfcprop%albdvis_lnd (IM)) - allocate(Sfcprop%albdnir_lnd (IM)) - allocate(Sfcprop%albivis_lnd (IM)) - allocate(Sfcprop%albinir_lnd (IM)) + allocate(Sfcprop%albdirvis_lnd (IM)) + allocate(Sfcprop%albdirnir_lnd (IM)) + allocate(Sfcprop%albdifvis_lnd (IM)) + allocate(Sfcprop%albdifnir_lnd (IM)) allocate (Sfcprop%emis_lnd (IM)) Sfcprop%slmsk = clear_val @@ -2406,10 +2409,10 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%weasdl = clear_val ! Sfcprop%hprim = clear_val Sfcprop%hprime = clear_val - Sfcprop%albdvis_lnd = clear_val - Sfcprop%albdnir_lnd = clear_val - Sfcprop%albivis_lnd = clear_val - Sfcprop%albinir_lnd = clear_val + Sfcprop%albdirvis_lnd = clear_val + Sfcprop%albdirnir_lnd = clear_val + Sfcprop%albdifvis_lnd = clear_val + Sfcprop%albdifnir_lnd = clear_val Sfcprop%emis_lnd = clear_val !--- In (radiation only) @@ -2465,17 +2468,24 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate (Sfcprop%hice (IM)) allocate (Sfcprop%weasd (IM)) allocate (Sfcprop%sncovr (IM)) + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + allocate (Sfcprop%albdirvis_ice (IM)) + allocate (Sfcprop%albdifvis_ice (IM)) + allocate (Sfcprop%albdirnir_ice (IM)) + allocate (Sfcprop%albdifnir_ice (IM)) +! allocate (Sfcprop%sfalb_ice (IM)) + endif if (Model%lsm == Model%lsm_ruc) then allocate (Sfcprop%sncovr_ice (IM)) allocate (Sfcprop%emis_ice (IM)) - allocate (Sfcprop%albdvis_ice (IM)) - allocate (Sfcprop%albdnir_ice (IM)) - allocate (Sfcprop%albivis_ice (IM)) - allocate (Sfcprop%albinir_ice (IM)) +! allocate (Sfcprop%albdirvis_ice (IM)) +! allocate (Sfcprop%albdirnir_ice (IM)) +! allocate (Sfcprop%albdifvis_ice (IM)) +! allocate (Sfcprop%albdifnir_ice (IM)) allocate (Sfcprop%sfalb_lnd (IM)) allocate (Sfcprop%sfalb_ice (IM)) allocate (Sfcprop%sfalb_lnd_bck (IM)) - end if + endif allocate (Sfcprop%canopy (IM)) allocate (Sfcprop%ffmm (IM)) allocate (Sfcprop%ffhh (IM)) @@ -2489,17 +2499,24 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%hice = clear_val Sfcprop%weasd = clear_val Sfcprop%sncovr = clear_val + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + Sfcprop%albdirvis_ice = clear_val + Sfcprop%albdifvis_ice = clear_val + Sfcprop%albdirnir_ice = clear_val + Sfcprop%albdifnir_ice = clear_val +! Sfcprop%sfalb_ice = clear_val + endif if (Model%lsm == Model%lsm_ruc) then Sfcprop%sncovr_ice = clear_val Sfcprop%emis_ice = clear_val - Sfcprop%albdvis_ice = clear_val - Sfcprop%albdnir_ice = clear_val - Sfcprop%albivis_ice = clear_val - Sfcprop%albinir_ice = clear_val +! Sfcprop%albdirvis_ice = clear_val +! Sfcprop%albdirnir_ice = clear_val +! Sfcprop%albdifvis_ice = clear_val +! Sfcprop%albdifnir_ice = clear_val Sfcprop%sfalb_lnd = clear_val Sfcprop%sfalb_ice = clear_val Sfcprop%sfalb_lnd_bck = clear_val - end if + endif Sfcprop%canopy = clear_val Sfcprop%ffmm = clear_val Sfcprop%ffhh = clear_val @@ -2843,10 +2860,10 @@ subroutine coupling_create (Coupling, IM, Model) ! allocate (Coupling%ficein_cpl (IM)) ! allocate (Coupling%hicein_cpl (IM)) allocate (Coupling%hsnoin_cpl (IM)) - allocate (Coupling%sfc_alb_nir_dir_cpl (IM)) - allocate (Coupling%sfc_alb_nir_dif_cpl (IM)) - allocate (Coupling%sfc_alb_vis_dir_cpl (IM)) - allocate (Coupling%sfc_alb_vis_dif_cpl (IM)) +! allocate (Coupling%sfc_alb_nir_dir_cpl (IM)) +! allocate (Coupling%sfc_alb_nir_dif_cpl (IM)) +! allocate (Coupling%sfc_alb_vis_dir_cpl (IM)) +! allocate (Coupling%sfc_alb_vis_dif_cpl (IM)) Coupling%slimskin_cpl = clear_val Coupling%dusfcin_cpl = clear_val @@ -2859,10 +2876,10 @@ subroutine coupling_create (Coupling, IM, Model) ! Coupling%ficein_cpl = clear_val ! Coupling%hicein_cpl = clear_val Coupling%hsnoin_cpl = clear_val - Coupling%sfc_alb_nir_dir_cpl = clear_val - Coupling%sfc_alb_nir_dif_cpl = clear_val - Coupling%sfc_alb_vis_dir_cpl = clear_val - Coupling%sfc_alb_vis_dif_cpl = clear_val +! Coupling%sfc_alb_nir_dir_cpl = clear_val +! Coupling%sfc_alb_nir_dif_cpl = clear_val +! Coupling%sfc_alb_vis_dir_cpl = clear_val +! Coupling%sfc_alb_vis_dif_cpl = clear_val !--- accumulated quantities allocate (Coupling%dusfc_cpl (IM)) @@ -3113,6 +3130,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: cplwav = .false. !< default no cplwav collection logical :: cplwav2atm = .false. !< default no cplwav2atm coupling logical :: cplchm = .false. !< default no cplchm collection + logical :: use_cice_alb = .false. !< default no cice albedo logical :: cpl_imp_mrg = .false. !< default no merge import with internal forcings logical :: cpl_imp_dbg = .false. !< default no write import data to file post merge @@ -3579,7 +3597,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- coupling parameters cplflx, cplice, cplwav, cplwav2atm, cplchm, & cpl_imp_mrg, cpl_imp_dbg, & - lsidea, & + use_cice_alb, lsidea, & !--- radiation parameters fhswr, fhlwr, levr, nfxr, iaerclm, iflip, isol, ico2, ialb, & isot, iems, iaer, icliq_sw, iovr, ictm, isubc_sw, & @@ -3858,6 +3876,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%cplwav = cplwav Model%cplwav2atm = cplwav2atm Model%cplchm = cplchm + Model%use_cice_alb = use_cice_alb Model%cpl_imp_mrg = cpl_imp_mrg Model%cpl_imp_dbg = cpl_imp_dbg @@ -4114,7 +4133,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & write(0,*) 'Error in GFS_typedefs.F90, number of soil layers must be 9 for RUC' stop end if - end if + end if ! Set number of ice model layers Model%kice = kice @@ -4990,8 +5009,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & if (Model%do_gwd) then if (Model%do_ugwp) then print *,' Unified gravity wave drag parameterization used' + elseif (Model%gwd_opt == 2) then + print *,'GSL unified oragraphic gravity wave drag parameterization used' else - print *,' Original mountain blocking and oragraphic gravity wave drag parameterization used' + print *,' Original mountain blocking and oragraphic gravity wave drag parameterization used' if (cdmbgwd(3) > 0.0) print *,' non-statioary gravity wave drag parameterization used' endif print *,' do_gwd=',Model%do_gwd @@ -5447,6 +5468,7 @@ subroutine control_print(Model) print *, ' cplwav : ', Model%cplwav print *, ' cplwav2atm : ', Model%cplwav2atm print *, ' cplchm : ', Model%cplchm + print *, ' use_cice_alb : ', Model%use_cice_alb print *, ' cpl_imp_mrg : ', Model%cpl_imp_mrg print *, ' cpl_imp_dbg : ', Model%cpl_imp_dbg print *, ' ' @@ -7217,7 +7239,7 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate(Interstitial%gas_concentrations%concs(iGas)%conc(IM, Model%levs)) enddo ! - ! lw_optical_props_clrsky (ty_optical_props_1scl) + ! lw_optical_props_clrsky (ty_optical_props_1scl) ! allocate(Interstitial%lw_optical_props_clrsky%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) allocate(Interstitial%lw_optical_props_clrsky%band2gpt (2, Model%rrtmgp_nBandsLW )) @@ -7231,7 +7253,7 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate(Interstitial%lw_optical_props_aerosol%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) allocate(Interstitial%lw_optical_props_aerosol%gpt2band( Model%rrtmgp_nBandsLW )) ! - ! lw_optical_props_cloudsByBand (ty_optical_props_2str) + ! lw_optical_props_cloudsByBand (ty_optical_props_2str) ! allocate(Interstitial%lw_optical_props_cloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) allocate(Interstitial%lw_optical_props_cloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 81592b886..931fb6bce 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -1296,66 +1296,66 @@ type = real kind = kind_phys active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) -[albdvis_lnd] +[albdirvis_lnd] standard_name = surface_albedo_direct_visible_over_land long_name = direct surface albedo visible band over land units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[albdnir_lnd] +[albdirnir_lnd] standard_name = surface_albedo_direct_NIR_over_land long_name = direct surface albedo NIR band over land units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[albivis_lnd] +[albdifvis_lnd] standard_name = surface_albedo_diffuse_visible_over_land long_name = diffuse surface albedo visible band over land units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[albinir_lnd] +[albdifnir_lnd] standard_name = surface_albedo_diffuse_NIR_over_land long_name = diffuse surface albedo NIR band over land units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[albdvis_ice] +[albdirvis_ice] standard_name = surface_albedo_direct_visible_over_ice long_name = direct surface albedo visible band over ice units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) -[albdnir_ice] - standard_name = surface_albedo_direct_NIR_over_ice - long_name = direct surface albedo NIR band over ice + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.) +[albdifvis_ice] + standard_name = surface_albedo_diffuse_visible_over_ice + long_name = diffuse surface albedo visible band over ice units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) -[albivis_ice] - standard_name = surface_albedo_diffuse_visible_over_ice - long_name = diffuse surface albedo visible band over ice + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.) +[albdirnir_ice] + standard_name = surface_albedo_direct_NIR_over_ice + long_name = direct surface albedo NIR band over ice units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) -[albinir_ice] + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.) +[albdifnir_ice] standard_name = surface_albedo_diffuse_NIR_over_ice long_name = diffuse surface albedo NIR band over ice units = frac dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = ( control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) + active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.) [wetness] standard_name = normalized_soil_wetness_for_land_surface_model long_name = normalized soil wetness for lsm @@ -2177,40 +2177,8 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[sfc_alb_nir_dir_cpl] - standard_name = surface_nir_albedo_direct_rad_for_coupling - long_name = sfc near IR albedo for direct radiation for coupling - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_surface_flux_coupling) -[sfc_alb_nir_dif_cpl] - standard_name = surface_nir_albedo_diffuse_rad_for_coupling - long_name = sfc near IR albedo for diffuse radiation for coupling - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_surface_flux_coupling) -[sfc_alb_vis_dir_cpl] - standard_name = surface_vis_albedo_direct_rad_for_coupling - long_name = sfc visible albedo for direct radiation for coupling - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_surface_flux_coupling) -[sfc_alb_vis_dif_cpl] - standard_name = surface_vis_albedo_diffuse_rad_for_coupling - long_name = sfc visible albedo for diffuse radiation for coupling - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_surface_flux_coupling) [slimskin_cpl] - standard_name = area_type_from_coupled_process + standard_name = area_type_from_coupled_process long_name = sea/land/ice mask input (=0/1/2) units = flag dimensions = (horizontal_loop_extent) @@ -2624,6 +2592,12 @@ units = flag dimensions = () type = logical +[use_cice_alb] + standard_name = flag_for_cice_albedo + long_name = flag for using ice albedos form CICE when coupled (default false) + units = flag + dimensions = () + type = logical [lsidea] standard_name = flag_for_integrated_dynamics_through_earths_atmosphere long_name = flag for idealized physics @@ -3030,12 +3004,6 @@ dimensions = () type = real kind = kind_phys -[ncld] - standard_name = number_of_hydrometeors - long_name = choice of cloud scheme / number of hydrometeors - units = count - dimensions = () - type = integer [convert_dry_rho] standard_name = flag_for_converting_hydrometeors_from_moist_to_dry_air long_name = flag for converting hydrometeors from moist to dry air diff --git a/ccpp/physics b/ccpp/physics index 4960c9a08..09655156c 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4960c9a0873d4e5045b13caaba01d4d9a78ceef1 +Subproject commit 09655156c1dd295932242117da5e9903bdd30ef5 diff --git a/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsst_ugwp.xml b/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsst_ugwp.xml new file mode 100644 index 000000000..2c844d67a --- /dev/null +++ b/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsst_ugwp.xml @@ -0,0 +1,91 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + lsm_noah + sfc_nst_pre + sfc_nst + sfc_nst_post + sfc_cice + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + moninshoc + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + shoc + GFS_DCNV_generic_pre + GFS_suite_interstitial_5 + rascnv + GFS_DCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + m_micro_pre + m_micro + m_micro_post + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsstnoahmp_ugwp.xml b/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsstnoahmp_ugwp.xml new file mode 100644 index 000000000..7a4ac83b5 --- /dev/null +++ b/ccpp/suites/suite_FV3_GFS_cpld_rasmgshocnsstnoahmp_ugwp.xml @@ -0,0 +1,91 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + noahmpdrv + sfc_cice + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + moninshoc + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + shoc + GFS_DCNV_generic_pre + GFS_suite_interstitial_5 + rascnv + GFS_DCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + m_micro_pre + m_micro + m_micro_post + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/ccpp/suites/suite_FV3_GFSv17alpha_cpldnsstras_ugwp.xml b/ccpp/suites/suite_FV3_GFSv17alpha_cpldnsstras_ugwp.xml new file mode 100644 index 000000000..69ab6dc53 --- /dev/null +++ b/ccpp/suites/suite_FV3_GFSv17alpha_cpldnsstras_ugwp.xml @@ -0,0 +1,95 @@ + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + lsm_noah + sfc_nst_pre + sfc_nst + sfc_nst_post + sfc_cice + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + rascnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/ccpp/suites/suite_FV3_GFSv17alpha_ras_ugwp.xml b/ccpp/suites/suite_FV3_GFSv17alpha_ras_ugwp.xml new file mode 100644 index 000000000..786cbb074 --- /dev/null +++ b/ccpp/suites/suite_FV3_GFSv17alpha_ras_ugwp.xml @@ -0,0 +1,94 @@ + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + lsm_noah + sfc_nst_pre + sfc_nst + sfc_nst_post + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + rascnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + phys_tend + + + + + GFS_stochastics + + + + diff --git a/io/FV3GFS_io.F90 b/io/FV3GFS_io.F90 index 03c9ebfda..adc3c9b03 100644 --- a/io/FV3GFS_io.F90 +++ b/io/FV3GFS_io.F90 @@ -305,13 +305,21 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,84) = GFS_Data(nb)%Radtend%sfcflw(ix)%dnfx0 temp2d(i,j,85) = GFS_Data(nb)%Sfcprop%tiice(ix,1) temp2d(i,j,86) = GFS_Data(nb)%Sfcprop%tiice(ix,2) - temp2d(i,j,87) = GFS_Data(nb)%Sfcprop%albdvis_lnd(ix) - temp2d(i,j,88) = GFS_Data(nb)%Sfcprop%albdnir_lnd(ix) - temp2d(i,j,89) = GFS_Data(nb)%Sfcprop%albivis_lnd(ix) - temp2d(i,j,90) = GFS_Data(nb)%Sfcprop%albinir_lnd(ix) + temp2d(i,j,87) = GFS_Data(nb)%Sfcprop%albdirvis_lnd(ix) + temp2d(i,j,88) = GFS_Data(nb)%Sfcprop%albdirnir_lnd(ix) + temp2d(i,j,89) = GFS_Data(nb)%Sfcprop%albdifvis_lnd(ix) + temp2d(i,j,90) = GFS_Data(nb)%Sfcprop%albdifnir_lnd(ix) temp2d(i,j,91) = GFS_Data(nb)%Sfcprop%emis_lnd(ix) idx_opt = 92 + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + temp2d(i,j,idx_opt+1) = GFS_Data(nb)%Sfcprop%albdirvis_ice(ix) + temp2d(i,j,idx_opt+2) = GFS_Data(nb)%Sfcprop%albdirnir_ice(ix) + temp2d(i,j,idx_opt+3) = GFS_Data(nb)%Sfcprop%albdifvis_ice(ix) + temp2d(i,j,idx_opt+4) = GFS_Data(nb)%Sfcprop%albdifnir_ice(ix) + endif + idx_opt = idx_opt + 5 + if (Model%lsm == Model%lsm_noahmp) then temp2d(i,j,idx_opt) = GFS_Data(nb)%Sfcprop%snowxy(ix) temp2d(i,j,idx_opt+1) = GFS_Data(nb)%Sfcprop%tvxy(ix) @@ -363,7 +371,7 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,idx_opt+46) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,2) temp2d(i,j,idx_opt+47) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,3) temp2d(i,j,idx_opt+48) = GFS_Data(nb)%Sfcprop%zsnsoxy(ix,4) - idx_opt = 141 + idx_opt = idx_opt + 49 elseif (Model%lsm == Model%lsm_ruc) then temp2d(i,j,idx_opt) = GFS_Data(nb)%Sfcprop%wetness(ix) temp2d(i,j,idx_opt+1) = GFS_Data(nb)%Sfcprop%clw_surf_land(ix) @@ -377,13 +385,13 @@ subroutine FV3GFS_GFS_checksum (Model, GFS_Data, Atm_block) temp2d(i,j,idx_opt+9) = GFS_Data(nb)%Sfcprop%sncovr_ice(ix) temp2d(i,j,idx_opt+10) = GFS_Data(nb)%Sfcprop%sfalb_lnd(ix) temp2d(i,j,idx_opt+11) = GFS_Data(nb)%Sfcprop%sfalb_lnd_bck(ix) - temp2d(i,j,idx_opt+12) = GFS_Data(nb)%Sfcprop%albdvis_ice(ix) - temp2d(i,j,idx_opt+13) = GFS_Data(nb)%Sfcprop%albdnir_ice(ix) - temp2d(i,j,idx_opt+14) = GFS_Data(nb)%Sfcprop%albivis_ice(ix) - temp2d(i,j,idx_opt+15) = GFS_Data(nb)%Sfcprop%albinir_ice(ix) - temp2d(i,j,idx_opt+16) = GFS_Data(nb)%Sfcprop%sfalb_ice(ix) - temp2d(i,j,idx_opt+17) = GFS_Data(nb)%Sfcprop%emis_ice(ix) - idx_opt = 110 +! temp2d(i,j,idx_opt+16) = GFS_Data(nb)%Sfcprop%albdirvis_ice(ix) +! temp2d(i,j,idx_opt+17) = GFS_Data(nb)%Sfcprop%albdirnir_ice(ix) +! temp2d(i,j,idx_opt+18) = GFS_Data(nb)%Sfcprop%albdifvis_ice(ix) +! temp2d(i,j,idx_opt+19) = GFS_Data(nb)%Sfcprop%albdifnir_ice(ix) + temp2d(i,j,idx_opt+12) = GFS_Data(nb)%Sfcprop%sfalb_ice(ix) + temp2d(i,j,idx_opt+13) = GFS_Data(nb)%Sfcprop%emis_ice(ix) + idx_opt = idx_opt + 14 if (Model%rdlai) then temp2d(i,j,idx_opt+23) = GFS_Data(nb)%Sfcprop%xlaixy(ix) idx_opt = idx_opt + 1 @@ -514,9 +522,9 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta if (Model%lsm == Model%lsm_ruc .and. warm_start) then if(Model%rdlai) then - nvar_s2r = 19 + nvar_s2r = 15 else - nvar_s2r = 18 + nvar_s2r = 14 end if nvar_s3 = 5 else @@ -629,6 +637,10 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta enddo nvar_s2m = 44 + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + nvar_s2m = nvar_s2m + 4 +! nvar_s2m = nvar_s2m + 5 + endif if (Model%cplwav) then nvar_s2m = nvar_s2m + 1 endif @@ -786,11 +798,20 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(37) = 'zorlw' !zorl on water portion of a cell sfc_name2(38) = 'zorll' !zorl on land portion of a cell sfc_name2(39) = 'zorli' !zorl on ice portion of a cell - sfc_name2(40) = 'albdvis_lnd' - sfc_name2(41) = 'albdnir_lnd' - sfc_name2(42) = 'albivis_lnd' - sfc_name2(43) = 'albinir_lnd' + sfc_name2(40) = 'albdirvis_lnd' + sfc_name2(41) = 'albdirnir_lnd' + sfc_name2(42) = 'albdifvis_lnd' + sfc_name2(43) = 'albdifnir_lnd' sfc_name2(44) = 'emis_lnd' + + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + sfc_name2(45) = 'albdirvis_ice' + sfc_name2(46) = 'albdifvis_ice' + sfc_name2(47) = 'albdirnir_ice' + sfc_name2(48) = 'albdifnir_ice' +! sfc_name2(49) = 'sfalb_ice' + endif + if(Model%cplwav) then sfc_name2(nvar_s2m) = 'zorlwav' !zorl from wave component endif @@ -860,14 +881,14 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta sfc_name2(nvar_s2m+28) = 'sncovr_ice' sfc_name2(nvar_s2m+29) = 'sfalb_lnd' sfc_name2(nvar_s2m+30) = 'sfalb_lnd_bck' - sfc_name2(nvar_s2m+31) = 'albdvis_ice' - sfc_name2(nvar_s2m+32) = 'albdnir_ice' - sfc_name2(nvar_s2m+33) = 'albivis_ice' - sfc_name2(nvar_s2m+34) = 'albinir_ice' - sfc_name2(nvar_s2m+35) = 'sfalb_ice' - sfc_name2(nvar_s2m+36) = 'emis_ice' +! sfc_name2(nvar_s2m+31) = 'albdirvis_ice' +! sfc_name2(nvar_s2m+32) = 'albdirnir_ice' +! sfc_name2(nvar_s2m+33) = 'albdifvis_ice' +! sfc_name2(nvar_s2m+34) = 'albdifnir_ice' + sfc_name2(nvar_s2m+31) = 'sfalb_ice' + sfc_name2(nvar_s2m+32) = 'emis_ice' if (Model%rdlai) then - sfc_name2(nvar_s2m+37) = 'lai' + sfc_name2(nvar_s2m+33) = 'lai' endif else if (Model%lsm == Model%lsm_ruc .and. Model%rdlai) then sfc_name2(nvar_s2m+19) = 'lai' @@ -880,8 +901,10 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta .or. trim(sfc_name2(num)) == 'zorli' .or. trim(sfc_name2(num)) == 'zorlwav' & .or. trim(sfc_name2(num)) == 'snodl' .or. trim(sfc_name2(num)) == 'weasdl' & .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorlw' & - .or. trim(sfc_name2(num)) == 'albdvis_lnd' .or. trim(sfc_name2(num)) == 'albdnir_lnd' & - .or. trim(sfc_name2(num)) == 'albivis_lnd' .or. trim(sfc_name2(num)) == 'albinir_lnd' & + .or. trim(sfc_name2(num)) == 'albdirvis_lnd' .or. trim(sfc_name2(num)) == 'albdirnir_lnd' & + .or. trim(sfc_name2(num)) == 'albdifvis_lnd' .or. trim(sfc_name2(num)) == 'albdifnir_lnd' & + .or. trim(sfc_name2(num)) == 'albdirvis_ice' .or. trim(sfc_name2(num)) == 'albdifvis_ice' & + .or. trim(sfc_name2(num)) == 'albdirnir_ice' .or. trim(sfc_name2(num)) == 'albdifnir_ice' & .or. trim(sfc_name2(num)) == 'emis_lnd' ) then id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain, mandatory=.false.) else @@ -1034,20 +1057,37 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%zorlw(ix) = sfc_var2(i,j,37) !--- zorlw (zorl on water portion of a cell) Sfcprop(nb)%zorll(ix) = sfc_var2(i,j,38) !--- zorll (zorl on land portion of a cell) Sfcprop(nb)%zorli(ix) = sfc_var2(i,j,39) !--- zorli (zorl on ice portion of a cell) - Sfcprop(nb)%albdvis_lnd(ix)= sfc_var2(i,j,40) - Sfcprop(nb)%albdnir_lnd(ix)= sfc_var2(i,j,41) - Sfcprop(nb)%albivis_lnd(ix)= sfc_var2(i,j,42) - Sfcprop(nb)%albinir_lnd(ix)= sfc_var2(i,j,43) + Sfcprop(nb)%albdirvis_lnd(ix) = sfc_var2(i,j,40) + Sfcprop(nb)%albdirnir_lnd(ix) = sfc_var2(i,j,41) + Sfcprop(nb)%albdifvis_lnd(ix) = sfc_var2(i,j,42) + Sfcprop(nb)%albdifnir_lnd(ix) = sfc_var2(i,j,43) Sfcprop(nb)%emis_lnd(ix) = sfc_var2(i,j,44) + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + Sfcprop(nb)%albdirvis_ice(ix) = sfc_var2(i,j,45) + Sfcprop(nb)%albdifvis_ice(ix) = sfc_var2(i,j,46) + Sfcprop(nb)%albdirnir_ice(ix) = sfc_var2(i,j,47) + Sfcprop(nb)%albdifnir_ice(ix) = sfc_var2(i,j,48) +! Sfcprop(nb)%sfalb_ice(ix) = sfc_var2(i,j,49) + endif if(Model%cplwav) then Sfcprop(nb)%zorlwav(ix) = sfc_var2(i,j,nvar_s2m) !--- (zorl from wave model) else - Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorl(ix) + Sfcprop(nb)%zorlwav(ix) = Sfcprop(nb)%zorlw(ix) + endif + + if (nint(Sfcprop(nb)%stype(ix)) == 14 .or. int(Sfcprop(nb)%stype(ix)+0.5) <= 0) then + Sfcprop(nb)%landfrac(ix) = zero + Sfcprop(nb)%stype(ix) = 0 + if (Sfcprop(nb)%lakefrac(ix) > zero) then + Sfcprop(nb)%lakefrac(ix) = one + endif endif if (Model%frac_grid) then if (Sfcprop(nb)%landfrac(ix) > -999.0_r8) then Sfcprop(nb)%slmsk(ix) = ceiling(Sfcprop(nb)%landfrac(ix)-1.0e-6) + if (Sfcprop(nb)%slmsk(ix) == 1 .and. nint(Sfcprop(nb)%stype(ix)) == 14) & + Sfcprop(nb)%slmsk(ix) = 0 if (Sfcprop(nb)%lakefrac(ix) > zero) then Sfcprop(nb)%oceanfrac(ix) = zero ! lake & ocean don't coexist in a cell if (nint(Sfcprop(nb)%slmsk(ix)) /= 1) then @@ -1097,7 +1137,8 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta if (Sfcprop(nb)%fice(ix) >= Model%min_lakeice) Sfcprop(nb)%slmsk(ix) = 2.0 else Sfcprop(nb)%slmsk(ix) = nint(Sfcprop(nb)%landfrac(ix)) - if (Sfcprop(nb)%stype(ix) <= 0) Sfcprop(nb)%slmsk(ix) = zero + if (Sfcprop(nb)%stype(ix) <= 0 .or. nint(Sfcprop(nb)%stype(ix)) == 14) & + Sfcprop(nb)%slmsk(ix) = zero if (nint(Sfcprop(nb)%slmsk(ix)) == 0) then Sfcprop(nb)%oceanfrac(ix) = one Sfcprop(nb)%landfrac(ix) = zero @@ -1110,7 +1151,8 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta endif endif else - if (nint(Sfcprop(nb)%slmsk(ix)) == 1 .and. Sfcprop(nb)%stype(ix) > 0) then + if (nint(Sfcprop(nb)%slmsk(ix)) == 1 .and. Sfcprop(nb)%stype(ix) > 0 & + .and. nint(Sfcprop(nb)%stype(ix)) /= 14) then Sfcprop(nb)%landfrac(ix) = one Sfcprop(nb)%lakefrac(ix) = zero Sfcprop(nb)%oceanfrac(ix) = zero @@ -1193,14 +1235,14 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta Sfcprop(nb)%sncovr_ice(ix) = sfc_var2(i,j,nvar_s2m+28) Sfcprop(nb)%sfalb_lnd(ix) = sfc_var2(i,j,nvar_s2m+29) Sfcprop(nb)%sfalb_lnd_bck(ix) = sfc_var2(i,j,nvar_s2m+30) - Sfcprop(nb)%albdvis_ice(ix) = sfc_var2(i,j,nvar_s2m+31) - Sfcprop(nb)%albdnir_ice(ix) = sfc_var2(i,j,nvar_s2m+32) - Sfcprop(nb)%albivis_ice(ix) = sfc_var2(i,j,nvar_s2m+33) - Sfcprop(nb)%albinir_ice(ix) = sfc_var2(i,j,nvar_s2m+34) - Sfcprop(nb)%sfalb_ice(ix) = sfc_var2(i,j,nvar_s2m+35) - Sfcprop(nb)%emis_ice(ix) = sfc_var2(i,j,nvar_s2m+36) +! Sfcprop(nb)%albdirvis_ice(ix) = sfc_var2(i,j,nvar_s2m+31) +! Sfcprop(nb)%albdirnir_ice(ix) = sfc_var2(i,j,nvar_s2m+32) +! Sfcprop(nb)%albdifvis_ice(ix) = sfc_var2(i,j,nvar_s2m+33) +! Sfcprop(nb)%albdifnir_ice(ix) = sfc_var2(i,j,nvar_s2m+34) + Sfcprop(nb)%sfalb_ice(ix) = sfc_var2(i,j,nvar_s2m+31) + Sfcprop(nb)%emis_ice(ix) = sfc_var2(i,j,nvar_s2m+32) if (Model%rdlai) then - Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+37) + Sfcprop(nb)%xlaixy(ix) = sfc_var2(i,j,nvar_s2m+33) endif else if (Model%lsm == Model%lsm_ruc) then ! Initialize RUC snow cover on ice from snow cover @@ -1368,6 +1410,24 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain, warm_sta enddo endif + if (Model%use_cice_alb) then + if (sfc_var2(i,j,45) < -9990.0_r8) then +!$omp parallel do default(shared) private(nb, ix) + do nb = 1, Atm_block%nblks + do ix = 1, Atm_block%blksz(nb) + if (Sfcprop(nb)%oceanfrac(ix) > zero .and. & + Sfcprop(nb)%fice(ix) >= Model%min_seaice) then + Sfcprop(nb)%albdirvis_ice(ix) = 0.6_kind_phys + Sfcprop(nb)%albdifvis_ice(ix) = 0.6_kind_phys + Sfcprop(nb)%albdirnir_ice(ix) = 0.6_kind_phys + Sfcprop(nb)%albdifnir_ice(ix) = 0.6_kind_phys + endif + enddo + enddo + endif + + endif + ! Fill in composite tsfc for coldstart runs - must happen after tsfcl is computed compute_tsfc_for_colstart: if (sfc_var2(i,j,35) < -9990.0_r8) then if (Model%me == Model%master ) call mpp_error(NOTE, 'gfs_driver::surface_props_input - computing composite tsfc') @@ -1454,13 +1514,17 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta real(kind=kind_phys), pointer, dimension(:,:,:) :: var3_p3 => NULL() nvar2m = 44 + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + nvar2m = nvar2m + 4 +! nvar2m = nvar2m + 5 + endif if (Model%cplwav) nvar2m = nvar2m + 1 nvar2o = 18 if (Model%lsm == Model%lsm_ruc) then if (Model%rdlai) then - nvar2r = 19 + nvar2r = 15 else - nvar2r = 18 + nvar2r = 14 endif nvar3 = 5 else @@ -1562,11 +1626,20 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_name2(37) = 'zorlw' !zorl on water portion of a cell sfc_name2(38) = 'zorll' !zorl on land portion of a cell sfc_name2(39) = 'zorli' !zorl on ice portion of a cell - sfc_name2(40) = 'albdvis_lnd' - sfc_name2(41) = 'albdnir_lnd' - sfc_name2(42) = 'albivis_lnd' - sfc_name2(43) = 'albinir_lnd' + sfc_name2(40) = 'albdirvis_lnd' + sfc_name2(41) = 'albdirnir_lnd' + sfc_name2(42) = 'albdifvis_lnd' + sfc_name2(43) = 'albdifnir_lnd' sfc_name2(44) = 'emis_lnd' + + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + sfc_name2(45) = 'albdirvis_ice' + sfc_name2(46) = 'albdifvis_ice' + sfc_name2(47) = 'albdirnir_ice' + sfc_name2(48) = 'albdifnir_ice' +! sfc_name2(49) = 'sfalb_ice' + endif + if (Model%cplwav) then sfc_name2(nvar2m) = 'zorlwav' !zorl from wave component endif @@ -1602,14 +1675,14 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_name2(nvar2m+28) = 'sncovr_ice' sfc_name2(nvar2m+29) = 'sfalb_lnd' sfc_name2(nvar2m+30) = 'sfalb_lnd_bck' - sfc_name2(nvar2m+31) = 'albdvis_ice' - sfc_name2(nvar2m+32) = 'albdnir_ice' - sfc_name2(nvar2m+33) = 'albivis_ice' - sfc_name2(nvar2m+34) = 'albinir_ice' - sfc_name2(nvar2m+35) = 'sfalb_ice' - sfc_name2(nvar2m+36) = 'emis_ice' +! sfc_name2(nvar2m+31) = 'albdirvis_ice' +! sfc_name2(nvar2m+32) = 'albdirnir_ice' +! sfc_name2(nvar2m+33) = 'albdifvis_ice' +! sfc_name2(nvar2m+34) = 'albdifnir_ice' + sfc_name2(nvar2m+31) = 'sfalb_ice' + sfc_name2(nvar2m+32) = 'emis_ice' if (Model%rdlai) then - sfc_name2(nvar2m+37) = 'lai' + sfc_name2(nvar2m+33) = 'lai' endif else if(Model%lsm == Model%lsm_noahmp) then ! Only needed when Noah MP LSM is used - 29 2D @@ -1651,8 +1724,11 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta .or. trim(sfc_name2(num)) == 'zorli' .or.trim(sfc_name2(num)) == 'zorlwav' & .or. trim(sfc_name2(num)) == 'snodl' .or. trim(sfc_name2(num)) == 'weasdl' & .or. trim(sfc_name2(num)) == 'tsfc' .or. trim(sfc_name2(num)) == 'zorlw' & - .or. trim(sfc_name2(num)) == 'albdvis_lnd' .or. trim(sfc_name2(num)) == 'albdnir_lnd' & - .or. trim(sfc_name2(num)) == 'albivis_lnd' .or. trim(sfc_name2(num)) == 'albinir_lnd' & + .or. trim(sfc_name2(num)) == 'albdirvis_lnd' .or. trim(sfc_name2(num)) == 'albdirnir_lnd' & + .or. trim(sfc_name2(num)) == 'albdifvis_lnd' .or. trim(sfc_name2(num)) == 'albdifnir_lnd' & + .or. trim(sfc_name2(num)) == 'albdirvis_ice' .or. trim(sfc_name2(num)) == 'albdifvis_ice' & + .or. trim(sfc_name2(num)) == 'albdirnir_ice' .or. trim(sfc_name2(num)) == 'albdifnir_ice' & +! .or. trim(sfc_name2(num)) == 'sfalb_ice' & .or. trim(sfc_name2(num)) == 'emis_lnd' ) then id_restart = register_restart_field(Sfc_restart, fn_srf, sfc_name2(num), var2_p, domain=fv_domain, mandatory=.false.) else @@ -1781,11 +1857,18 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_var2(i,j,37) = Sfcprop(nb)%zorlw(ix) !--- zorl (zorl on water) sfc_var2(i,j,38) = Sfcprop(nb)%zorll(ix) !--- zorll (zorl on land) sfc_var2(i,j,39) = Sfcprop(nb)%zorli(ix) !--- zorli (zorl on ice) - sfc_var2(i,j,40) = Sfcprop(nb)%albdvis_lnd(ix) - sfc_var2(i,j,41) = Sfcprop(nb)%albdnir_lnd(ix) - sfc_var2(i,j,42) = Sfcprop(nb)%albivis_lnd(ix) - sfc_var2(i,j,43) = Sfcprop(nb)%albinir_lnd(ix) + sfc_var2(i,j,40) = Sfcprop(nb)%albdirvis_lnd(ix) + sfc_var2(i,j,41) = Sfcprop(nb)%albdirnir_lnd(ix) + sfc_var2(i,j,42) = Sfcprop(nb)%albdifvis_lnd(ix) + sfc_var2(i,j,43) = Sfcprop(nb)%albdifnir_lnd(ix) sfc_var2(i,j,44) = Sfcprop(nb)%emis_lnd(ix) + if (Model%use_cice_alb .or. Model%lsm == Model%lsm_ruc) then + sfc_var2(i,j,45) = Sfcprop(nb)%albdirvis_ice(ix) + sfc_var2(i,j,46) = Sfcprop(nb)%albdifvis_ice(ix) + sfc_var2(i,j,47) = Sfcprop(nb)%albdirnir_ice(ix) + sfc_var2(i,j,48) = Sfcprop(nb)%albdifnir_ice(ix) +! sfc_var2(i,j,49) = Sfcprop(nb)%sfalb_ice(ix) + endif if (Model%cplwav) then sfc_var2(i,j,nvar2m) = Sfcprop(nb)%zorlwav(ix) !--- zorlwav (zorl from wav) endif @@ -1825,14 +1908,14 @@ subroutine sfc_prop_restart_write (Sfcprop, Atm_block, Model, fv_domain, timesta sfc_var2(i,j,nvar2m+28) = Sfcprop(nb)%sncovr_ice(ix) sfc_var2(i,j,nvar2m+29) = Sfcprop(nb)%sfalb_lnd(ix) sfc_var2(i,j,nvar2m+30) = Sfcprop(nb)%sfalb_lnd_bck(ix) - sfc_var2(i,j,nvar2m+31) = Sfcprop(nb)%albdvis_ice(ix) - sfc_var2(i,j,nvar2m+32) = Sfcprop(nb)%albdnir_ice(ix) - sfc_var2(i,j,nvar2m+33) = Sfcprop(nb)%albivis_ice(ix) - sfc_var2(i,j,nvar2m+34) = Sfcprop(nb)%albinir_ice(ix) - sfc_var2(i,j,nvar2m+35) = Sfcprop(nb)%sfalb_ice(ix) - sfc_var2(i,j,nvar2m+36) = Sfcprop(nb)%emis_ice(ix) +! sfc_var2(i,j,nvar2m+31) = Sfcprop(nb)%albdirvis_ice(ix) +! sfc_var2(i,j,nvar2m+32) = Sfcprop(nb)%albdirnir_ice(ix) +! sfc_var2(i,j,nvar2m+33) = Sfcprop(nb)%albdifvis_ice(ix) +! sfc_var2(i,j,nvar2m+34) = Sfcprop(nb)%albdifnir_ice(ix) + sfc_var2(i,j,nvar2m+31) = Sfcprop(nb)%sfalb_ice(ix) + sfc_var2(i,j,nvar2m+32) = Sfcprop(nb)%emis_ice(ix) if (Model%rdlai) then - sfc_var2(i,j,nvar2m+37) = Sfcprop(nb)%xlaixy(ix) + sfc_var2(i,j,nvar2m+33) = Sfcprop(nb)%xlaixy(ix) endif else if (Model%lsm == Model%lsm_noahmp) then !--- Extra Noah MP variables @@ -2034,7 +2117,7 @@ end subroutine phys_restart_read !---------------------------------------------------------------------- ! routine to write out GFS surface restarts via the GFDL FMS restart ! subsystem. -! takes an optional argument to append timestamps for intermediate +! takes an optional argument to append timestamps for intermediate ! restarts. ! ! calls: register_restart_field, save_restart diff --git a/io/module_wrt_grid_comp.F90 b/io/module_wrt_grid_comp.F90 index 3a8a30426..f3d366ff8 100644 --- a/io/module_wrt_grid_comp.F90 +++ b/io/module_wrt_grid_comp.F90 @@ -66,6 +66,7 @@ module module_wrt_grid_comp integer,save :: mytile !<-- the tile number in write task integer,save :: wrt_mpi_comm !<-- the mpi communicator in the write comp integer,save :: idate(7) + logical,save :: write_nsflip logical,save :: first_init=.false. logical,save :: first_run=.false. logical,save :: first_getlatlon=.true. @@ -259,6 +260,11 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) return + call ESMF_ConfigGetAttribute(config=CF,value=write_nsflip,default=.false., & + label='write_nsflip:',rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=__FILE__)) return + ! chunksizes for netcdf_parallel call ESMF_ConfigGetAttribute(config=CF,value=ichunk2d,default=0,label ='ichunk2d:',rc=rc) @@ -432,9 +438,15 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) ! allocate(slat(jmo), lat(jmo), lon(imo)) call splat(4, jmo, slat) - do j=1,jmo - lat(jmo-j+1) = asin(slat(j)) * radi - enddo + if(write_nsflip) then + do j=1,jmo + lat(j) = asin(slat(j)) * radi + enddo + else + do j=1,jmo + lat(jmo-j+1) = asin(slat(j)) * radi + enddo + endif wrt_int_state%latstart = lat(1) wrt_int_state%latlast = lat(jmo) do j=1,imo @@ -501,15 +513,27 @@ subroutine wrt_initialize(wrt_comp, imp_state_write, exp_state_write, clock, rc) if (mod(jmo,2) == 0) then ! if jmo even, lats do not include poles and equator delat = 180.d0/real(jmo,8) - do j=1,jmo - lat(j) = -90.d0 + 0.5*delat + real(j-1,8)*delat - enddo + if(write_nsflip) then + do j=1,jmo + lat(j) = 90.d0 - 0.5*delat - real(j-1,8)*delat + enddo + else + do j=1,jmo + lat(j) = -90.d0 + 0.5*delat + real(j-1,8)*delat + enddo + endif else ! if jmo odd, lats include poles and equator delat = 180.d0/real(jmo-1,8) - do j=1,jmo - lat(j) = -90.d0 + real(j-1,8)*delat - enddo + if(write_nsflip) then + do j=1,jmo + lat(j) = 90.d0 - real(j-1,8)*delat + enddo + else + do j=1,jmo + lat(j) = -90.d0 + real(j-1,8)*delat + enddo + endif endif wrt_int_state%latstart = lat(1) wrt_int_state%latlast = lat(jmo) From 949656b71d33e968a8d10fc7e1ff5a10e552fac3 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 11 Aug 2021 21:10:50 -0600 Subject: [PATCH 08/14] Cleanup grandfathered-in constants in CCPP - round 1 (#360) Add metadata for three constants that are required for the changes in PR NCAR/ccpp-physics#525. The motivation behind these changes is that physical parameterizations should receive constants (e.g. gravitational acceleration) from the host model via the argument list instead of importing them from some Fortran module or defining them locally. This ensures consistency and enhances interoperability. --- ccpp/data/GFS_typedefs.F90 | 2 +- ccpp/data/GFS_typedefs.meta | 21 +++++++++++++++++++++ ccpp/physics | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 20700bf36..2cd4839e6 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -9,7 +9,7 @@ module GFS_typedefs con_epsm1, con_ttp, rlapse, con_jcal, con_rhw0, & con_sbc, con_tice, cimin, con_p0, rhowater, & con_csol, con_epsqs, con_rocp, con_rog, & - con_omega, con_rerth + con_omega, con_rerth, con_psat, karman, rainmin use module_radsw_parameters, only: topfsw_type, sfcfsw_type, profsw_type, cmpfsw_type, NBDSW use module_radlw_parameters, only: topflw_type, sfcflw_type, proflw_type, NBDLW diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 931fb6bce..a484301b4 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -10928,3 +10928,24 @@ dimensions = () type = real kind = kind_phys +[con_psat] + standard_name = saturation_pressure_at_triple_point_of_water + long_name = saturation pressure at triple point of water + units = Pa + dimensions = () + type = real + kind = kind_phys +[karman] + standard_name = von_karman_constant + long_name = Von Karman constant + units = none + dimensions = () + type = real + kind = kind_phys +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = liquid water equivalent thickness of minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys diff --git a/ccpp/physics b/ccpp/physics index 09655156c..aaa479215 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 09655156c1dd295932242117da5e9903bdd30ef5 +Subproject commit aaa479215babac5fcbbdd9fb8e0566145c56279c From 83aa1eea587469eb6ee6c44972f9bea68b6dbdb4 Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Fri, 13 Aug 2021 10:07:38 -0500 Subject: [PATCH 09/14] Enable UFS-Aerosols in P7 configurations (#362) Add changes to support fully-coupled UFS configurations (P7) that include prognostic aerosols (UFS-Aerosols) --- atmos_model.F90 | 14 ++++++-------- ccpp/data/GFS_typedefs.meta | 6 +++--- ccpp/physics | 2 +- cpl/module_cplfields.F90 | 28 ++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/atmos_model.F90 b/atmos_model.F90 index 07732294f..83cd09373 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -273,10 +273,8 @@ subroutine update_atmos_radiation_physics (Atmos) endif !--- if coupled, assign coupled fields - - if (.not. GFS_control%cplchm) then - call assign_importdata(jdat(:),rc) - endif + call assign_importdata(jdat(:),rc) + if (rc/=0) call mpp_error(FATAL, 'Call to assign_importdata failed') ! Calculate total non-physics tendencies by substracting old GFS Stateout ! variables from new/updated GFS Statein variables (gives the tendencies @@ -2557,7 +2555,7 @@ subroutine setup_exportdata(rc) use ESMF - use module_cplfields, only: exportFields + use module_cplfields, only: exportFields, chemistryFieldNames !--- arguments integer, optional, intent(out) :: rc @@ -2584,9 +2582,6 @@ subroutine setup_exportdata(rc) !--- begin if (present(rc)) rc = ESMF_SUCCESS - !--- disable if coupling with chemistry - if (GFS_control%cplchm) return - isc = Atm_block%isc iec = Atm_block%iec jsc = Atm_block%jsc @@ -2636,6 +2631,9 @@ subroutine setup_exportdata(rc) end if end if + !--- skip field if only required for chemistry + if (isFound .and. GFS_control%cplchm) isFound = .not.any(trim(fieldname) == chemistryFieldNames) + if (isFound) then !$omp parallel do default(shared) private(nb) reduction(max:localrc) do nb = 1, Atm_block%nblks diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index a484301b4..277d0a325 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -8814,9 +8814,9 @@ dimensions = (horizontal_loop_extent) type = integer [itc] - standard_name = number_of_aerosol_tracers_for_convection - long_name = number of aerosol tracers transported/scavenged by convection - units = count + standard_name = index_of_first_chemical_tracer_for_convection + long_name = index of first chemical tracer transported/scavenged by convection + units = index dimensions = () type = integer [wet] diff --git a/ccpp/physics b/ccpp/physics index aaa479215..55e081490 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit aaa479215babac5fcbbdd9fb8e0566145c56279c +Subproject commit 55e0814905d849be0cc103288522122aa6f55afc diff --git a/cpl/module_cplfields.F90 b/cpl/module_cplfields.F90 index 4a9abc6c1..380c49c77 100644 --- a/cpl/module_cplfields.F90 +++ b/cpl/module_cplfields.F90 @@ -193,6 +193,34 @@ module module_cplfields FieldInfo("zorl ", "s"), & FieldInfo("t2m ", "s") ] +! Fields exported exclusively for coupling with chemistry + character(*), public, parameter :: chemistryFieldNames(*) = [ & + "inst_pres_interface ", & + "inst_pres_levels ", & + "inst_geop_interface ", & + "inst_geop_levels ", & + "inst_temp_levels ", & + "inst_zonal_wind_levels ", & + "inst_merid_wind_levels ", & + "inst_tracer_mass_frac ", & + "inst_pbl_height ", & + "surface_cell_area ", & + "inst_convective_rainfall_amount ", & + "inst_friction_velocity ", & + "inst_rainfall_amount ", & + "inst_up_sensi_heat_flx ", & + "inst_surface_roughness ", & + "inst_soil_moisture_content ", & + "inst_liq_nonconv_tendency_levels", & + "inst_ice_nonconv_tendency_levels", & + "inst_cloud_frac_levels ", & + "inst_surface_soil_wetness ", & + "ice_fraction_in_atm ", & + "lake_fraction ", & + "ocean_fraction ", & + "surface_snow_area_fraction " & + ] + ! Methods public queryImportFields, queryExportFields public cplFieldGet From 6bad820cd7703334888ee50fe27298f0bdaae939 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 17 Aug 2021 10:17:25 -0600 Subject: [PATCH 10/14] Wrapper PR for #366 (remove redundant surface variables) and #363 (send correct pointers to JEDI) (#368) * clean up redundant surface variables * Updates to send correct pointers to JEDI Co-authored-by: man.zhang Co-authored-by: Mark Potts --- atmos_model.F90 | 28 ++++++++++++------------- ccpp/data/GFS_typedefs.F90 | 8 ------- ccpp/data/GFS_typedefs.meta | 42 +++++++++++++------------------------ ccpp/physics | 2 +- 4 files changed, 29 insertions(+), 51 deletions(-) diff --git a/atmos_model.F90 b/atmos_model.F90 index 83cd09373..0730a886a 100644 --- a/atmos_model.F90 +++ b/atmos_model.F90 @@ -2791,35 +2791,35 @@ subroutine setup_exportdata(rc) call block_data_copy_or_fill(datar82d, DYCORE_data(nb)%coupling%z_bot, zeror8, Atm_block, nb, rc=localrc) !--- JEDI fields case ('u') - call block_atmos_copy(datar83d, Atm(mygrid)%u, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%u(isc:iec,jsc:jec,:), Atm_block, nb, rc=localrc) case ('v') - call block_atmos_copy(datar83d, Atm(mygrid)%v, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%v(isc:iec,jsc:jec,:), Atm_block, nb, rc=localrc) case ('ua') - call block_atmos_copy(datar83d, Atm(mygrid)%ua, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%ua(isc:iec,jsc:jec,:),Atm_block, nb, rc=localrc) case ('va') - call block_atmos_copy(datar83d, Atm(mygrid)%va, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%va(isc:iec,jsc:jec,:), Atm_block, nb, rc=localrc) case ('t') - call block_atmos_copy(datar83d, Atm(mygrid)%pt, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%pt(isc:iec,jsc:jec,:), Atm_block, nb, rc=localrc) case ('delp') - call block_atmos_copy(datar83d, Atm(mygrid)%delp, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%delp(isc:iec,jsc:jec,:), Atm_block, nb, rc=localrc) case ('sphum') sphum = get_tracer_index(MODEL_ATMOS, 'sphum') - call block_atmos_copy(datar83d, Atm(mygrid)%q, sphum, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%q(isc:iec,jsc:jec,:,:), sphum, Atm_block, nb, rc=localrc) case ('ice_wat') ice_wat = get_tracer_index(MODEL_ATMOS, 'ice_wat') - call block_atmos_copy(datar83d, Atm(mygrid)%q, ice_wat, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%q(isc:iec,jsc:jec,:,:), ice_wat, Atm_block, nb, rc=localrc) case ('liq_wat') liq_wat = get_tracer_index(MODEL_ATMOS, 'liq_wat') - call block_atmos_copy(datar83d, Atm(mygrid)%q, liq_wat, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%q(isc:iec,jsc:jec,:,:), liq_wat, Atm_block, nb, rc=localrc) case ('o3mr') o3mr = get_tracer_index(MODEL_ATMOS, 'o3mr') - call block_atmos_copy(datar83d, Atm(mygrid)%q, o3mr, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar83d, Atm(mygrid)%q(isc:iec,jsc:jec,:,:), o3mr, Atm_block, nb, rc=localrc) case ('phis') - call block_atmos_copy(datar82d, Atm(mygrid)%phis, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar82d, Atm(mygrid)%phis(isc:iec,jsc:jec), Atm_block, nb, rc=localrc) case ('u_srf') - call block_atmos_copy(datar82d, Atm(mygrid)%u_srf, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar82d, Atm(mygrid)%u_srf(isc:iec,jsc:jec), Atm_block, nb, rc=localrc) case ('v_srf') - call block_atmos_copy(datar82d, Atm(mygrid)%v_srf, Atm_block, nb, rc=localrc) + call block_atmos_copy(datar82d, Atm(mygrid)%v_srf(isc:iec,jsc:jec), Atm_block, nb, rc=localrc) case ('weasd') call block_data_copy(datar82d, GFS_data(nb)%sfcprop%weasd, Atm_block, nb, rc=localrc) case ('tsea') @@ -2847,7 +2847,7 @@ subroutine setup_exportdata(rc) end select enddo if (ESMF_LogFoundError(rcToCheck=localrc, msg="Failure to populate exported field: "//trim(fieldname), & - line=__LINE__, file=__FILE__, rcToReturn=rc)) return + line=__LINE__, file=__FILE__, rcToReturn=rc)) return endif enddo ! exportFields diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 2cd4839e6..9bb68da10 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -2065,7 +2065,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: t2mmp(:) => null() !< real (kind=kind_phys), pointer :: theta(:) => null() !< real (kind=kind_phys), pointer :: th1(:) => null() !< - real (kind=kind_phys), pointer :: tice(:) => null() !< real (kind=kind_phys), pointer :: tlvl(:,:) => null() !< real (kind=kind_phys), pointer :: tlyr(:,:) => null() !< real (kind=kind_phys), pointer :: tprcp_ice(:) => null() !< @@ -2080,7 +2079,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: tseal(:) => null() !< real (kind=kind_phys), pointer :: tsfa(:) => null() !< real (kind=kind_phys), pointer :: tsfc_ice(:) => null() !< - real (kind=kind_phys), pointer :: tsfc_land(:) => null() !< real (kind=kind_phys), pointer :: tsfc_land_save(:) => null() !< real (kind=kind_phys), pointer :: tsfc_water(:) => null() !< real (kind=kind_phys), pointer :: tsfg(:) => null() !< @@ -7143,7 +7141,6 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate (Interstitial%stress_land (IM)) allocate (Interstitial%stress_water (IM)) allocate (Interstitial%theta (IM)) - allocate (Interstitial%tice (IM)) allocate (Interstitial%tlvl (IM,Model%levr+1+LTP)) allocate (Interstitial%tlyr (IM,Model%levr+LTP)) allocate (Interstitial%tprcp_ice (IM)) @@ -7153,7 +7150,6 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate (Interstitial%tseal (IM)) allocate (Interstitial%tsfa (IM)) allocate (Interstitial%tsfc_ice (IM)) - allocate (Interstitial%tsfc_land (IM)) allocate (Interstitial%tsfc_water (IM)) allocate (Interstitial%tsfg (IM)) allocate (Interstitial%tsurf_ice (IM)) @@ -7881,14 +7877,12 @@ subroutine interstitial_phys_reset (Interstitial, Model) Interstitial%stress_land = huge Interstitial%stress_water = huge Interstitial%theta = clear_val - Interstitial%tice = clear_val Interstitial%tprcp_ice = huge Interstitial%tprcp_land = huge Interstitial%tprcp_water = huge Interstitial%trans = clear_val Interstitial%tseal = clear_val Interstitial%tsfc_ice = huge - Interstitial%tsfc_land = huge Interstitial%tsfc_water = huge Interstitial%tsurf_ice = huge Interstitial%tsurf_land = huge @@ -8268,7 +8262,6 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'sum(Interstitial%stress_land ) = ', sum(Interstitial%stress_land ) write (0,*) 'sum(Interstitial%stress_water ) = ', sum(Interstitial%stress_water ) write (0,*) 'sum(Interstitial%theta ) = ', sum(Interstitial%theta ) - write (0,*) 'sum(Interstitial%tice ) = ', sum(Interstitial%tice ) write (0,*) 'sum(Interstitial%tlvl ) = ', sum(Interstitial%tlvl ) write (0,*) 'sum(Interstitial%tlyr ) = ', sum(Interstitial%tlyr ) write (0,*) 'sum(Interstitial%tprcp_ice ) = ', sum(Interstitial%tprcp_ice ) @@ -8278,7 +8271,6 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'sum(Interstitial%tseal ) = ', sum(Interstitial%tseal ) write (0,*) 'sum(Interstitial%tsfa ) = ', sum(Interstitial%tsfa ) write (0,*) 'sum(Interstitial%tsfc_ice ) = ', sum(Interstitial%tsfc_ice ) - write (0,*) 'sum(Interstitial%tsfc_land ) = ', sum(Interstitial%tsfc_land ) write (0,*) 'sum(Interstitial%tsfc_water ) = ', sum(Interstitial%tsfc_water ) write (0,*) 'sum(Interstitial%tsfg ) = ', sum(Interstitial%tsfg ) write (0,*) 'sum(Interstitial%tsurf_ice ) = ', sum(Interstitial%tsurf_ice ) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 277d0a325..0d83e687b 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -7499,22 +7499,22 @@ kind = kind_phys active = (control_for_microphysics_scheme == identifier_for_fer_hires_microphysics_scheme) [adjsfculw_water] - standard_name = surface_upwelling_longwave_flux_over_water_interstitial - long_name = surface upwelling longwave flux at current time over water (temporary use as interstitial) + standard_name = surface_upwelling_longwave_flux_over_water + long_name = surface upwelling longwave flux at current time over water units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [adjsfculw_land] - standard_name = surface_upwelling_longwave_flux_over_land_interstitial - long_name = surface upwelling longwave flux at current time over land (temporary use as interstitial) + standard_name = surface_upwelling_longwave_flux_over_land + long_name = surface upwelling longwave flux at current time over land units = W m-2 dimensions = (horizontal_loop_extent) type = real kind = kind_phys [adjsfculw_ice] - standard_name = surface_upwelling_longwave_flux_over_ice_interstitial - long_name = surface upwelling longwave flux at current time over ice (temporary use as interstitial) + standard_name = surface_upwelling_longwave_flux_over_ice + long_name = surface upwelling longwave flux at current time over ice units = W m-2 dimensions = (horizontal_loop_extent) type = real @@ -8215,8 +8215,8 @@ type = real kind = kind_phys [semis_water] - standard_name = surface_longwave_emissivity_over_water_interstitial - long_name = surface lw emissivity in fraction over water (temporary use as interstitial) + standard_name = surface_longwave_emissivity_over_water + long_name = surface lw emissivity in fraction over water units = frac dimensions = (horizontal_loop_extent) type = real @@ -9691,13 +9691,6 @@ type = real kind = kind_phys active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) -[tice] - standard_name = sea_ice_temperature_interstitial - long_name = sea ice surface skin temperature use as interstitial - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys [tlvl] standard_name = air_temperature_at_interface_for_radiation long_name = air temperature at vertical interface for radiation calculation @@ -9781,30 +9774,23 @@ type = real kind = kind_phys [tsfc_water] - standard_name = surface_skin_temperature_over_water_interstitial - long_name = surface skin temperature over water (temporary use as interstitial) - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsfc_land] - standard_name = surface_skin_temperature_over_land_interstitial - long_name = surface skin temperature over land (temporary use as interstitial) + standard_name = surface_skin_temperature_over_water + long_name = surface skin temperature over water units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys [tsfc_land_save] - standard_name = surface_skin_temperature_over_land_interstitial_save - long_name = surface skin temperature over land before entering a physics scheme (temporary use as interstitial) + standard_name = surface_skin_temperature_over_land_save + long_name = surface skin temperature over land before entering a physics scheme units = K dimensions = (horizontal_loop_extent) type = real kind = kind_phys active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme) [tsfc_ice] - standard_name = surface_skin_temperature_over_ice_interstitial - long_name = surface skin temperature over ice (temporary use as interstitial) + standard_name = surface_skin_temperature_over_ice + long_name = surface skin temperature over ice units = K dimensions = (horizontal_loop_extent) type = real diff --git a/ccpp/physics b/ccpp/physics index 55e081490..8e670b00f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 55e0814905d849be0cc103288522122aa6f55afc +Subproject commit 8e670b00fcd8b62a20a20d5a4db7512c72a61efe From 16a51fc4f914a1ba699467e1391a2bc6d5786725 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 18 Aug 2021 12:29:36 -0600 Subject: [PATCH 11/14] CCPP framework update and metadata bug fixes (#367) * Update order of variable definition files in ccpp/config/ccpp_prebuild_config.py * Remove duplicate variables in ccpp/data/GFS_typedefs.meta --- ccpp/config/ccpp_prebuild_config.py | 11 ++++++----- ccpp/data/GFS_typedefs.meta | 21 --------------------- ccpp/framework | 2 +- ccpp/physics | 2 +- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 956004d2b..771e53b04 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -15,26 +15,27 @@ # dependencies of these files to the list. VARIABLE_DEFINITION_FILES = [ # actual variable definition files + 'framework/src/ccpp_types.F90', 'physics/physics/machine.F', 'physics/physics/radsw_param.f', + 'physics/physics/radlw_param.f', 'physics/physics/h2o_def.f', 'physics/physics/ozne_def.f', - 'physics/physics/radlw_param.f', 'physics/physics/radiation_surface.f', - 'data/CCPP_typedefs.F90', - 'data/GFS_typedefs.F90', - 'data/CCPP_data.F90', 'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90', 'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90', 'physics/physics/rte-rrtmgp/rte/mo_optical_props.F90', 'physics/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90', 'physics/physics/rte-rrtmgp/rte/mo_source_functions.F90', + 'data/CCPP_typedefs.F90', + 'data/GFS_typedefs.F90', + 'data/CCPP_data.F90', ] TYPEDEFS_NEW_METADATA = { 'ccpp_types' : { - 'ccpp_types' : '', 'ccpp_t' : 'cdata', + 'ccpp_types' : '', }, 'machine' : { 'machine' : '', diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 0d83e687b..dc1be40e2 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2381,13 +2381,6 @@ units = none dimensions = () type = integer -[fhzero] - standard_name = frequency_for_diagnostic_clearing - long_name = frequency for clearing diagnostic fields - units = h - dimensions = () - type = real - kind = kind_phys [ldiag3d] standard_name = flag_for_diagnostics_3D long_name = flag for 3d diagnostic fields @@ -10217,20 +10210,6 @@ units = none dimensions = () type = integer -[cldtausw] - standard_name = RRTMGP_cloud_optical_depth_layers_at_0_55mu_band - long_name = approx .55mu band layer cloud optical depth - units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[cldtaulw] - standard_name = RRTMGP_cloud_optical_depth_layers_at_10mu_band - long_name = approx 10mu band layer cloud optical depth - units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys [fluxlwUP_clrsky] standard_name = RRTMGP_lw_flux_profile_upward_clrsky long_name = RRTMGP upward longwave clr-sky flux profile diff --git a/ccpp/framework b/ccpp/framework index 075e08e28..922fe4494 160000 --- a/ccpp/framework +++ b/ccpp/framework @@ -1 +1 @@ -Subproject commit 075e08e2887d1dbd4fe95003689eac69aca5f32c +Subproject commit 922fe44948acddaec6bc08d2392beaa047fe2587 diff --git a/ccpp/physics b/ccpp/physics index 8e670b00f..cabe68f4a 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 8e670b00fcd8b62a20a20d5a4db7512c72a61efe +Subproject commit cabe68f4a933f72276c12c557a5d6b4a0d909d7d From 862fe8099be2169512c1e5e08eb823f8ed2b3052 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 19 Aug 2021 11:51:45 -0600 Subject: [PATCH 12/14] Fix stochastic physics restart runs, remove rayleigh damping from all suite definition files (#371) * address error entered in stochastic_physics_wrapper.F90 that broke the ca restart reproducibility * Remove scheme rayleigh_damp from all remaining suite definition files Co-authored-by: Lisa Bengtsson --- ccpp/suites/suite_FV3_CPT_v0.xml | 1 - ccpp/suites/suite_FV3_GFS_2017.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_coupled.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_couplednsst.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_csawmg.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_csawmgshoc.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_gfdlmp.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional_c768.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_h2ophys.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_myj.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_ntiedtke.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_ozphys_2015.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_sas.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_satmedmf.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_satmedmfq.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_shinhong.xml | 1 - ccpp/suites/suite_FV3_GFS_2017_ysu.xml | 1 - ccpp/suites/suite_FV3_GFS_v15.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_gf.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_gf_thompson.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_mynn.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_thompson.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_thompson_mynn.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml | 1 - ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml | 1 - ccpp/suites/suite_FV3_GFS_v15p2.xml | 1 - ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml | 1 - ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml | 1 - ccpp/suites/suite_FV3_GFS_v15p2_couplednsst.xml | 1 - ccpp/suites/suite_FV3_GFS_v15p2_no_nsst.xml | 1 - ccpp/suites/suite_FV3_GFS_v15plus.xml | 1 - ccpp/suites/suite_FV3_GFS_v16.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_coupled.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_couplednsst.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_csawmg.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_flake.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_no_nsst.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_noahmp.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_thompson.xml | 1 - ccpp/suites/suite_FV3_GFS_v16_ugwpv1.xml | 1 - ccpp/suites/suite_FV3_GSD_SAR.xml | 1 - ccpp/suites/suite_FV3_GSD_noah.xml | 1 - ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml | 1 - ccpp/suites/suite_FV3_GSD_v0.xml | 1 - ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml | 1 - ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml | 1 - ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml | 1 - ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml | 1 - ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite_noah.xml | 1 - ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml | 1 - ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml | 1 - ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml | 1 - ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml | 1 - ccpp/suites/suite_FV3_HRRR.xml | 1 - ccpp/suites/suite_FV3_RAP.xml | 1 - ccpp/suites/suite_FV3_RRFS_v1alpha.xml | 1 - ccpp/suites/suite_FV3_RRFS_v1beta.xml | 1 - stochastic_physics/stochastic_physics_wrapper.F90 | 7 +++---- 65 files changed, 3 insertions(+), 68 deletions(-) diff --git a/ccpp/suites/suite_FV3_CPT_v0.xml b/ccpp/suites/suite_FV3_CPT_v0.xml index 10921d8e7..97780d609 100644 --- a/ccpp/suites/suite_FV3_CPT_v0.xml +++ b/ccpp/suites/suite_FV3_CPT_v0.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017.xml b/ccpp/suites/suite_FV3_GFS_2017.xml index 579f4ce88..e9a558052 100644 --- a/ccpp/suites/suite_FV3_GFS_2017.xml +++ b/ccpp/suites/suite_FV3_GFS_2017.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_coupled.xml b/ccpp/suites/suite_FV3_GFS_2017_coupled.xml index 32af44444..55e20f8e3 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_coupled.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_coupled.xml @@ -59,7 +59,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_couplednsst.xml b/ccpp/suites/suite_FV3_GFS_2017_couplednsst.xml index 1ae57a5fa..3c45e5b0e 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_couplednsst.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_couplednsst.xml @@ -61,7 +61,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_csawmg.xml b/ccpp/suites/suite_FV3_GFS_2017_csawmg.xml index cb670f777..634b6f1bc 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_csawmg.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_csawmg.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_csawmgshoc.xml b/ccpp/suites/suite_FV3_GFS_2017_csawmgshoc.xml index a4ea0b8f0..3cf427182 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_csawmgshoc.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_csawmgshoc.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml b/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml index c60de0529..7769613a2 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml @@ -58,7 +58,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp.xml b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp.xml index 5381bc907..fc50b260d 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml index 8693fd58f..77ffb364b 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional.xml b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional.xml index de3e17c33..b68ae6324 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional_c768.xml b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional_c768.xml index a14e1ffbb..d9b253972 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional_c768.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_regional_c768.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_h2ophys.xml b/ccpp/suites/suite_FV3_GFS_2017_h2ophys.xml index ab38042b5..0f74901cb 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_h2ophys.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_h2ophys.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_myj.xml b/ccpp/suites/suite_FV3_GFS_2017_myj.xml index aab459059..44fbc8e8b 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_myj.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_myj.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_2017_ntiedtke.xml b/ccpp/suites/suite_FV3_GFS_2017_ntiedtke.xml index 556307c47..5f7e38fc6 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_ntiedtke.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_ntiedtke.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_ozphys_2015.xml b/ccpp/suites/suite_FV3_GFS_2017_ozphys_2015.xml index 3599c38bc..8cadb634c 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_ozphys_2015.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_ozphys_2015.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_sas.xml b/ccpp/suites/suite_FV3_GFS_2017_sas.xml index d3199a8f9..2a3c81ce8 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_sas.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_sas.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_satmedmf.xml b/ccpp/suites/suite_FV3_GFS_2017_satmedmf.xml index 5e85b453a..554a8e27a 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_satmedmf.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_satmedmf.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml b/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml index 67daf00d8..bf53393e0 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml @@ -59,7 +59,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_satmedmfq.xml b/ccpp/suites/suite_FV3_GFS_2017_satmedmfq.xml index 71c9c86d0..665b592d1 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_satmedmfq.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_satmedmfq.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_shinhong.xml b/ccpp/suites/suite_FV3_GFS_2017_shinhong.xml index 556ae4bf3..8e97dcff7 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_shinhong.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_shinhong.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_2017_ysu.xml b/ccpp/suites/suite_FV3_GFS_2017_ysu.xml index a9c06287c..b5421d98e 100644 --- a/ccpp/suites/suite_FV3_GFS_2017_ysu.xml +++ b/ccpp/suites/suite_FV3_GFS_2017_ysu.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys get_phi_fv3 diff --git a/ccpp/suites/suite_FV3_GFS_v15.xml b/ccpp/suites/suite_FV3_GFS_v15.xml index 496bee7ef..e2910d586 100644 --- a/ccpp/suites/suite_FV3_GFS_v15.xml +++ b/ccpp/suites/suite_FV3_GFS_v15.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_gf.xml b/ccpp/suites/suite_FV3_GFS_v15_gf.xml index e6daf3577..ac4d30e09 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_gf.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_gf.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_gf_thompson.xml b/ccpp/suites/suite_FV3_GFS_v15_gf_thompson.xml index e54d98c69..333a9f966 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_gf_thompson.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_gf_thompson.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_mynn.xml b/ccpp/suites/suite_FV3_GFS_v15_mynn.xml index 2b16dd46a..765911524 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_mynn.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_mynn.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson.xml index 152b87cf1..a26ec33fd 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn.xml index d4a9e8b5c..882f4ada0 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml index f58576648..87459ed65 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml @@ -70,7 +70,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml index c528363d7..f5da59232 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml @@ -59,7 +59,6 @@ GFS_GWD_generic_pre cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15p2.xml b/ccpp/suites/suite_FV3_GFS_v15p2.xml index aa9a38f00..10c8e363a 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml index 916111c2b..4628d385f 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml @@ -75,7 +75,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml b/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml index 5160f6fae..727f85120 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_couplednsst.xml b/ccpp/suites/suite_FV3_GFS_v15p2_couplednsst.xml index 8bbf1141d..55f7e31f2 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_couplednsst.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_couplednsst.xml @@ -66,7 +66,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_no_nsst.xml b/ccpp/suites/suite_FV3_GFS_v15p2_no_nsst.xml index 8ba6e524a..d5c965ccb 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_no_nsst.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_no_nsst.xml @@ -63,7 +63,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v15plus.xml b/ccpp/suites/suite_FV3_GFS_v15plus.xml index ce691bbc7..ef91b9a8b 100644 --- a/ccpp/suites/suite_FV3_GFS_v15plus.xml +++ b/ccpp/suites/suite_FV3_GFS_v15plus.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16.xml b/ccpp/suites/suite_FV3_GFS_v16.xml index 91c1d967a..2f76cee2b 100644 --- a/ccpp/suites/suite_FV3_GFS_v16.xml +++ b/ccpp/suites/suite_FV3_GFS_v16.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml index 4166a8e64..d161e34b1 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml @@ -75,7 +75,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_coupled.xml b/ccpp/suites/suite_FV3_GFS_v16_coupled.xml index cd80dca84..b529bf27f 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_coupled.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_coupled.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml b/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml index c3fc2ed06..306b37656 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml b/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml index 5060faa26..ccc58c0a5 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml @@ -66,7 +66,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_couplednsst.xml b/ccpp/suites/suite_FV3_GFS_v16_couplednsst.xml index 0aaaf1163..df4c32414 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_couplednsst.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_couplednsst.xml @@ -66,7 +66,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml b/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml index 0b1fe8b3c..3f782047f 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_flake.xml b/ccpp/suites/suite_FV3_GFS_v16_flake.xml index 9e3fc7545..60d245402 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_flake.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_flake.xml @@ -66,7 +66,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_no_nsst.xml b/ccpp/suites/suite_FV3_GFS_v16_no_nsst.xml index 4231029ee..ff5408de5 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_no_nsst.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_no_nsst.xml @@ -63,7 +63,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_noahmp.xml b/ccpp/suites/suite_FV3_GFS_v16_noahmp.xml index 43b1a7279..d2594fb48 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_noahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_noahmp.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_thompson.xml b/ccpp/suites/suite_FV3_GFS_v16_thompson.xml index 4cb2e54a9..43283b636 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_thompson.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_thompson.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GFS_v16_ugwpv1.xml b/ccpp/suites/suite_FV3_GFS_v16_ugwpv1.xml index 2d8ece51c..915e0b837 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_ugwpv1.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_ugwpv1.xml @@ -65,7 +65,6 @@ ugwpv1_gsldrag ugwpv1_gsldrag_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_SAR.xml b/ccpp/suites/suite_FV3_GSD_SAR.xml index 092ef907e..f2b38d577 100644 --- a/ccpp/suites/suite_FV3_GSD_SAR.xml +++ b/ccpp/suites/suite_FV3_GSD_SAR.xml @@ -59,7 +59,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_noah.xml b/ccpp/suites/suite_FV3_GSD_noah.xml index c4e4e5b06..ad30ae4c2 100644 --- a/ccpp/suites/suite_FV3_GSD_noah.xml +++ b/ccpp/suites/suite_FV3_GSD_noah.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml b/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml index 3d6ff40a6..2dc671612 100644 --- a/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml +++ b/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0.xml b/ccpp/suites/suite_FV3_GSD_v0.xml index d1b76b3a8..1a0857422 100644 --- a/ccpp/suites/suite_FV3_GSD_v0.xml +++ b/ccpp/suites/suite_FV3_GSD_v0.xml @@ -59,7 +59,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml index 8aa9e5a99..a9056b6fa 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml @@ -69,7 +69,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml b/ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml index 7e49d3b3d..d8547ff19 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml @@ -58,7 +58,6 @@ GFS_GWD_generic_pre drag_suite GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml b/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml index 3a1a65e85..2f59d0671 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml @@ -59,7 +59,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml b/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml index 7082e799e..04e987eb7 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml @@ -59,7 +59,6 @@ unified_ugwp unified_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite_noah.xml b/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite_noah.xml index 63090be3c..1fabc9e50 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite_noah.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite_noah.xml @@ -60,7 +60,6 @@ unified_ugwp unified_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml index 12eb779d0..3285f72a6 100644 --- a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf.xml @@ -65,7 +65,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml index 068da3e1b..97437e886 100644 --- a/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_gfdlmp_tedmf_nonsst.xml @@ -63,7 +63,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml b/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml index 80f3a8f1c..fbe105f67 100644 --- a/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_hwrf.xml @@ -62,7 +62,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml b/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml index 6240bb687..5d894c2f2 100644 --- a/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml +++ b/ccpp/suites/suite_FV3_HAFS_v0_hwrf_thompson.xml @@ -64,7 +64,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_HRRR.xml b/ccpp/suites/suite_FV3_HRRR.xml index 8e178dfef..6fd18617d 100644 --- a/ccpp/suites/suite_FV3_HRRR.xml +++ b/ccpp/suites/suite_FV3_HRRR.xml @@ -58,7 +58,6 @@ GFS_GWD_generic_pre drag_suite GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_RAP.xml b/ccpp/suites/suite_FV3_RAP.xml index 024ba5c87..66fab81d6 100644 --- a/ccpp/suites/suite_FV3_RAP.xml +++ b/ccpp/suites/suite_FV3_RAP.xml @@ -58,7 +58,6 @@ GFS_GWD_generic_pre drag_suite GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_RRFS_v1alpha.xml b/ccpp/suites/suite_FV3_RRFS_v1alpha.xml index 367c23dd2..b3622828e 100644 --- a/ccpp/suites/suite_FV3_RRFS_v1alpha.xml +++ b/ccpp/suites/suite_FV3_RRFS_v1alpha.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/ccpp/suites/suite_FV3_RRFS_v1beta.xml b/ccpp/suites/suite_FV3_RRFS_v1beta.xml index 09b86ba32..51e0f03cb 100644 --- a/ccpp/suites/suite_FV3_RRFS_v1beta.xml +++ b/ccpp/suites/suite_FV3_RRFS_v1beta.xml @@ -60,7 +60,6 @@ cires_ugwp cires_ugwp_post GFS_GWD_generic_post - rayleigh_damp GFS_suite_stateout_update ozphys_2015 h2ophys diff --git a/stochastic_physics/stochastic_physics_wrapper.F90 b/stochastic_physics/stochastic_physics_wrapper.F90 index bfe0ad874..f0e476d5b 100644 --- a/stochastic_physics/stochastic_physics_wrapper.F90 +++ b/stochastic_physics/stochastic_physics_wrapper.F90 @@ -294,9 +294,7 @@ subroutine stochastic_physics_wrapper (GFS_Control, GFS_Data, Atm_block, ierr) endif ! lndp block end if - endif initalize_stochastic_physics - - if (GFS_Control%do_ca .and. is_initialized) then + if (GFS_Control%do_ca) then if(GFS_Control%ca_sgs)then ! Allocate contiguous arrays; copy in as needed @@ -376,8 +374,9 @@ subroutine stochastic_physics_wrapper (GFS_Control, GFS_Data, Atm_block, ierr) deallocate(ca3_diag) endif + endif !do_ca - endif !do_ca + endif initalize_stochastic_physics end subroutine stochastic_physics_wrapper From ba66748b71b2522fb5ef547220b5e01ae9efc866 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 23 Aug 2021 10:17:42 -0600 Subject: [PATCH 13/14] Update to ccpp/data/GFS_typedefs.meta following CCPP standard names update --- ccpp/data/GFS_typedefs.meta | 2 +- ccpp/physics | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 8c9cc9c5b..f4e709757 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -5738,7 +5738,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block diff --git a/ccpp/physics b/ccpp/physics index 4ec7d99a2..163f82d69 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4ec7d99a2e2a8b119019dba14cb71afe57425bf7 +Subproject commit 163f82d69d431a58f95d87e4f22af118bbeb12c2 From ced5cde772a5e657110f30e3ff0d3aab33ef5b98 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 26 Aug 2021 15:40:19 -0600 Subject: [PATCH 14/14] Revert change to .gitmodules and update submodule pointers for ccpp-physics and ccpp-framework --- .gitmodules | 12 ++++-------- ccpp/framework | 2 +- ccpp/physics | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.gitmodules b/.gitmodules index 917c6bd3c..6d2d19bb4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,13 +4,9 @@ branch = dev/emc [submodule "ccpp/framework"] path = ccpp/framework - #url = https://github.com/NOAA-GSL/ccpp-framework - #branch = gsl/develop - url = https://github.com/climbfuji/ccpp-framework - branch = update_gsl_develop_from_main_20210819 + url = https://github.com/NOAA-GSL/ccpp-framework + branch = gsl/develop [submodule "ccpp/physics"] path = ccpp/physics - #url = https://github.com/NOAA-GSL/ccpp-physics - #branch = gsl/develop - url = https://github.com/climbfuji/ccpp-physics - branch = update_gsl_develop_from_main_20210819 + url = https://github.com/NOAA-GSL/ccpp-physics + branch = gsl/develop diff --git a/ccpp/framework b/ccpp/framework index 3fb21e693..5e410f3c6 160000 --- a/ccpp/framework +++ b/ccpp/framework @@ -1 +1 @@ -Subproject commit 3fb21e693c278a4afdef74e2c7b0c8d11913e1f7 +Subproject commit 5e410f3c65e55172e4e18ac0f964bfd3bd54e27c diff --git a/ccpp/physics b/ccpp/physics index ab779649f..1263361ce 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit ab779649f785f5298819601016d094c3113d3a99 +Subproject commit 1263361ce2411d5ff44910eb9666362a92db42f2