diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere index 0b040858b1..799d9432b8 160000 --- a/atmos_cubed_sphere +++ b/atmos_cubed_sphere @@ -1 +1 @@ -Subproject commit 0b040858b1b9b10d76bc9f4c93fbc9043efe269f +Subproject commit 799d9432b84370101feadb0df20c14a043ea11a8 diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 12fff0c013..634c3a9514 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -47,7 +47,8 @@ 'module_radlw_parameters' : '', }, 'CCPP_typedefs' : { - 'CCPP_interstitial_type' : 'CCPP_interstitial', + 'GFS_interstitial_type' : 'GFS_Interstitial(cdata%thrd_no)', + 'GFDL_interstitial_type' : 'GFDL_interstitial', 'CCPP_typedefs' : '', }, 'CCPP_data' : { @@ -55,7 +56,6 @@ }, 'GFS_typedefs' : { 'GFS_control_type' : 'GFS_Control', - 'GFS_interstitial_type' : 'GFS_Interstitial(cdata%thrd_no)', 'GFS_data_type' : 'GFS_Data(cdata%blk_no)', 'GFS_diag_type' : 'GFS_Data(cdata%blk_no)%Intdiag', 'GFS_tbd_type' : 'GFS_Data(cdata%blk_no)%Tbd', diff --git a/ccpp/data/CCPP_data.F90 b/ccpp/data/CCPP_data.F90 index dbb6460353..9bba446415 100644 --- a/ccpp/data/CCPP_data.F90 +++ b/ccpp/data/CCPP_data.F90 @@ -5,10 +5,10 @@ module CCPP_data !! use ccpp_types, only: ccpp_t - use CCPP_typedefs, only: CCPP_interstitial_type + use CCPP_typedefs, only: GFS_interstitial_type, & + GFDL_interstitial_type use GFS_typedefs, only: GFS_control_type, & - GFS_data_type, & - GFS_interstitial_type + GFS_data_type implicit none @@ -18,7 +18,7 @@ module CCPP_data cdata_domain, & cdata_block, & ccpp_suite, & - CCPP_interstitial, & + GFDL_interstitial, & GFS_control, & GFS_data, & GFS_interstitial @@ -34,7 +34,7 @@ module CCPP_data !------------------------------------------------------! ! CCPP data containers for dynamics (fast physics) ! !------------------------------------------------------! - type(CCPP_interstitial_type), save, target :: CCPP_interstitial + type(GFDL_interstitial_type), save, target :: GFDL_interstitial !------------------------------------------------------! ! CCPP containers for the six tiles used in dynamics, ! diff --git a/ccpp/data/CCPP_data.meta b/ccpp/data/CCPP_data.meta index 3541b47246..6029873da3 100644 --- a/ccpp/data/CCPP_data.meta +++ b/ccpp/data/CCPP_data.meta @@ -12,12 +12,12 @@ units = DDT dimensions = () type = ccpp_t -[CCPP_interstitial] - standard_name = CCPP_interstitial_type_instance - long_name = instance of derived type CCPP_interstitial_type +[GFDL_interstitial] + standard_name = GFDL_interstitial_type_instance + long_name = instance of derived type GFDL_interstitial_type units = DDT dimensions = () - type = CCPP_interstitial_type + type = GFDL_interstitial_type [GFS_Control] standard_name = GFS_control_type_instance long_name = instance of derived type GFS_control_type diff --git a/ccpp/data/CCPP_typedefs.F90 b/ccpp/data/CCPP_typedefs.F90 index 1e21718388..0f4e15d62b 100644 --- a/ccpp/data/CCPP_typedefs.F90 +++ b/ccpp/data/CCPP_typedefs.F90 @@ -4,18 +4,453 @@ module CCPP_typedefs !! \htmlinclude CCPP_typedefs.html !! - use machine, only: kind_grid, kind_dyn + ! Physics kind defininitions needed for interstitial DDTs + use machine, only: kind_grid, kind_dyn, kind_phys + + ! Constants/dimensions needed for interstitial DDTs + use ozne_def, only: oz_coeff + use GFS_typedefs, only: clear_val, LTP + + ! Physics type defininitions needed for interstitial DDTs + use module_radsw_parameters, only: profsw_type, cmpfsw_type, NBDSW + use module_radlw_parameters, only: proflw_type, NBDLW + use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp + use mo_optical_props, only: ty_optical_props_1scl,ty_optical_props_2str + use mo_cloud_optics, only: ty_cloud_optics + use mo_gas_concentrations, only: ty_gas_concs + use mo_source_functions, only: ty_source_func_lw + use GFS_typedefs, only: GFS_control_type implicit none private - public CCPP_interstitial_type + ! To ensure that these values match what's in the physics, array + ! sizes are compared in the auto-generated physics caps in debug mode + ! from module_radiation_aerosols + integer, parameter :: NF_AESW = 3 + integer, parameter :: NF_AELW = 3 + integer, parameter :: NSPC = 5 + integer, parameter :: NSPC1 = NSPC + 1 + ! from module_radiation_clouds + integer, parameter :: NF_CLDS = 9 + ! from module_radiation_gases + integer, parameter :: NF_VGAS = 10 + ! from module_radiation_surface + integer, parameter :: NF_ALBD = 4 + + ! GFS_interstitial_type !< fields required to replace interstitial code in GFS_{physics,radiation}_driver.F90 in CCPP + public GFS_interstitial_type -!! \section arg_table_CCPP_interstitial_type Argument Table -!! \htmlinclude CCPP_interstitial_type.html + ! GFDL_interstitial_type !< fields required to replace interstitial code in FV3 dycore (fv_mapz.F90) in CCPP + public GFDL_interstitial_type + +!! \section arg_table_GFS_interstitial_type +!! \htmlinclude GFS_interstitial_type.html !! - type CCPP_interstitial_type + type GFS_interstitial_type + + real (kind=kind_phys), pointer :: adjsfculw_land(:) => null() !< + real (kind=kind_phys), pointer :: adjsfculw_ice(:) => null() !< + real (kind=kind_phys), pointer :: adjsfculw_water(:) => null() !< + real (kind=kind_phys), pointer :: adjnirbmd(:) => null() !< + real (kind=kind_phys), pointer :: adjnirbmu(:) => null() !< + real (kind=kind_phys), pointer :: adjnirdfd(:) => null() !< + real (kind=kind_phys), pointer :: adjnirdfu(:) => null() !< + real (kind=kind_phys), pointer :: adjvisbmd(:) => null() !< + real (kind=kind_phys), pointer :: adjvisbmu(:) => null() !< + real (kind=kind_phys), pointer :: adjvisdfu(:) => null() !< + real (kind=kind_phys), pointer :: adjvisdfd(:) => null() !< + real (kind=kind_phys), pointer :: aerodp(:,:) => null() !< + real (kind=kind_phys), pointer :: alb1d(:) => null() !< + real (kind=kind_phys), pointer :: alpha(:,:) => null() !< + real (kind=kind_phys), pointer :: bexp1d(:) => null() !< + real (kind=kind_phys), pointer :: cd(:) => null() !< + real (kind=kind_phys), pointer :: cd_ice(:) => null() !< + real (kind=kind_phys), pointer :: cd_land(:) => null() !< + real (kind=kind_phys), pointer :: cd_water(:) => null() !< + real (kind=kind_phys), pointer :: cdq(:) => null() !< + real (kind=kind_phys), pointer :: cdq_ice(:) => null() !< + real (kind=kind_phys), pointer :: cdq_land(:) => null() !< + real (kind=kind_phys), pointer :: cdq_water(:) => null() !< + real (kind=kind_phys), pointer :: cf_upi(:,:) => null() !< + real (kind=kind_phys), pointer :: chh_ice(:) => null() !< + real (kind=kind_phys), pointer :: chh_land(:) => null() !< + real (kind=kind_phys), pointer :: chh_water(:) => null() !< + real (kind=kind_phys), pointer :: clcn(:,:) => null() !< + real (kind=kind_phys), pointer :: cldf(:) => null() !< + real (kind=kind_phys), pointer :: cldsa(:,:) => null() !< + real (kind=kind_phys), pointer :: cldtaulw(:,:) => null() !< + real (kind=kind_phys), pointer :: cldtausw(:,:) => null() !< + real (kind=kind_phys), pointer :: cld1d(:) => null() !< + real (kind=kind_phys), pointer :: clouds(:,:,:) => null() !< + real (kind=kind_phys), pointer :: clw(:,:,:) => null() !< + real (kind=kind_phys), pointer :: clx(:,:) => null() !< + real (kind=kind_phys), pointer :: cmm_ice(:) => null() !< + real (kind=kind_phys), pointer :: cmm_land(:) => null() !< + real (kind=kind_phys), pointer :: cmm_water(:) => null() !< + real (kind=kind_phys), pointer :: cnv_dqldt(:,:) => null() !< + real (kind=kind_phys), pointer :: cnv_fice(:,:) => null() !< + real (kind=kind_phys), pointer :: cnv_mfd(:,:) => null() !< + real (kind=kind_phys), pointer :: cnv_ndrop(:,:) => null() !< + real (kind=kind_phys), pointer :: cnv_nice(:,:) => null() !< + real (kind=kind_phys), pointer :: cnvc(:,:) => null() !< + real (kind=kind_phys), pointer :: cnvw(:,:) => null() !< + real (kind=kind_phys), pointer :: ctei_r(:) => null() !< + real (kind=kind_phys), pointer :: ctei_rml(:) => null() !< + real (kind=kind_phys), pointer :: cumabs(:) => null() !< + real (kind=kind_phys), pointer :: dd_mf(:,:) => null() !< + real (kind=kind_phys), pointer :: de_lgth(:) => null() !< + real (kind=kind_phys), pointer :: del(:,:) => null() !< + real (kind=kind_phys), pointer :: del_gz(:,:) => null() !< + real (kind=kind_phys), pointer :: delr(:,:) => null() !< + real (kind=kind_phys), pointer :: dlength(:) => null() !< + real (kind=kind_phys), pointer :: dqdt(:,:,:) => null() !< + real (kind=kind_phys), pointer :: dqsfc1(:) => null() !< + real (kind=kind_phys), pointer :: drain(:) => null() !< + real (kind=kind_phys), pointer :: dtdt(:,:) => null() !< + real (kind=kind_phys), pointer :: dtsfc1(:) => null() !< + real (kind=kind_phys), pointer :: dtzm(:) => null() !< + real (kind=kind_phys), pointer :: dt_mf(:,:) => null() !< + real (kind=kind_phys), pointer :: dudt(:,:) => null() !< + real (kind=kind_phys), pointer :: dusfcg(:) => null() !< + real (kind=kind_phys), pointer :: dusfc1(:) => null() !< + real (kind=kind_phys), pointer :: dvdftra(:,:,:) => null() !< + real (kind=kind_phys), pointer :: dvdt(:,:) => null() !< + real (kind=kind_phys), pointer :: dvsfcg(:) => null() !< + real (kind=kind_phys), pointer :: dvsfc1(:) => null() !< + real (kind=kind_phys), pointer :: dzlyr(:,:) => null() !< + real (kind=kind_phys), pointer :: elvmax(:) => null() !< + real (kind=kind_phys), pointer :: ep1d(:) => null() !< + real (kind=kind_phys), pointer :: ep1d_ice(:) => null() !< + real (kind=kind_phys), pointer :: ep1d_land(:) => null() !< + real (kind=kind_phys), pointer :: ep1d_water(:) => null() !< + real (kind=kind_phys), pointer :: evap_ice(:) => null() !< + real (kind=kind_phys), pointer :: evap_land(:) => null() !< + real (kind=kind_phys), pointer :: evap_water(:) => null() !< + real (kind=kind_phys), pointer :: evbs(:) => null() !< + real (kind=kind_phys), pointer :: evcw(:) => null() !< + real (kind=kind_phys), pointer :: pah(:) => null() !< + real (kind=kind_phys), pointer :: ecan(:) => null() !< + real (kind=kind_phys), pointer :: etran(:) => null() !< + real (kind=kind_phys), pointer :: edir(:) => null() !< + real (kind=kind_phys), pointer :: faerlw(:,:,:,:) => null() !< + real (kind=kind_phys), pointer :: faersw(:,:,:,:) => null() !< + real (kind=kind_phys), pointer :: ffhh_ice(:) => null() !< + real (kind=kind_phys), pointer :: ffhh_land(:) => null() !< + real (kind=kind_phys), pointer :: ffhh_water(:) => null() !< + real (kind=kind_phys), pointer :: fh2(:) => null() !< + real (kind=kind_phys), pointer :: fh2_ice(:) => null() !< + real (kind=kind_phys), pointer :: fh2_land(:) => null() !< + real (kind=kind_phys), pointer :: fh2_water(:) => null() !< + logical, pointer :: flag_cice(:) => null() !< + logical, pointer :: flag_guess(:) => null() !< + logical, pointer :: flag_iter(:) => null() !< + real (kind=kind_phys), pointer :: ffmm_ice(:) => null() !< + real (kind=kind_phys), pointer :: ffmm_land(:) => null() !< + real (kind=kind_phys), pointer :: ffmm_water(:) => null() !< + real (kind=kind_phys), pointer :: fm10(:) => null() !< + real (kind=kind_phys), pointer :: fm10_ice(:) => null() !< + real (kind=kind_phys), pointer :: fm10_land(:) => null() !< + real (kind=kind_phys), pointer :: fm10_water(:) => null() !< + real (kind=kind_phys) :: frain !< + real (kind=kind_phys), pointer :: frland(:) => null() !< + real (kind=kind_phys), pointer :: fscav(:) => null() !< + real (kind=kind_phys), pointer :: fswtr(:) => null() !< + real (kind=kind_phys), pointer :: gabsbdlw(:) => null() !< + real (kind=kind_phys), pointer :: gabsbdlw_ice(:) => null() !< + real (kind=kind_phys), pointer :: gabsbdlw_land(:) => null() !< + real (kind=kind_phys), pointer :: gabsbdlw_water(:) => null() !< + real (kind=kind_phys), pointer :: gamma(:) => null() !< + real (kind=kind_phys), pointer :: gamq(:) => null() !< + real (kind=kind_phys), pointer :: gamt(:) => null() !< + real (kind=kind_phys), pointer :: gasvmr(:,:,:) => null() !< + real (kind=kind_phys), pointer :: gflx(:) => null() !< + real (kind=kind_phys), pointer :: gflx_ice(:) => null() !< + real (kind=kind_phys), pointer :: gflx_land(:) => null() !< + real (kind=kind_phys), pointer :: gflx_water(:) => null() !< + real (kind=kind_phys), pointer :: graupelmp(:) => null() !< + real (kind=kind_phys), pointer :: gwdcu(:,:) => null() !< + real (kind=kind_phys), pointer :: gwdcv(:,:) => null() !< + real (kind=kind_phys), pointer :: zvfun(:) => null() !< + real (kind=kind_phys), pointer :: hffac(:) => null() !< + real (kind=kind_phys), pointer :: hflxq(:) => null() !< + real (kind=kind_phys), pointer :: hflx_ice(:) => null() !< + real (kind=kind_phys), pointer :: hflx_land(:) => null() !< + real (kind=kind_phys), pointer :: hflx_water(:) => null() !< + !--- radiation variables that need to be carried over from radiation to physics + real (kind=kind_phys), pointer :: htlwc(:,:) => null() !< + real (kind=kind_phys), pointer :: htlw0(:,:) => null() !< + real (kind=kind_phys), pointer :: htswc(:,:) => null() !< + real (kind=kind_phys), pointer :: htsw0(:,:) => null() !< + ! + real (kind=kind_phys), pointer :: icemp(:) => null() !< + logical, pointer :: dry(:) => null() !< + integer, pointer :: idxday(:) => null() !< + logical, pointer :: icy(:) => null() !< + logical, pointer :: lake(:) => null() !< + logical, pointer :: use_flake(:) => null() !< + logical, pointer :: ocean(:) => null() !< + integer :: ipr !< + integer, pointer :: islmsk(:) => null() !< + integer, pointer :: islmsk_cice(:) => null() !< + integer :: itc !< + logical, pointer :: wet(:) => null() !< + integer :: kb !< + integer, pointer :: kbot(:) => null() !< + integer, pointer :: kcnv(:) => null() !< + integer :: kd !< + integer, pointer :: kinver(:) => null() !< + integer, pointer :: kpbl(:) => null() !< + integer :: kt !< + integer, pointer :: ktop(:) => null() !< + integer :: latidxprnt !< + integer :: levi !< + integer :: lmk !< + integer :: lmp !< + integer, pointer :: mbota(:,:) => null() !< + logical :: mg3_as_mg2 !< + integer, pointer :: mtopa(:,:) => null() !< + integer :: nbdlw !< + integer :: nbdsw !< + real (kind=kind_phys), pointer :: ncgl(:,:) => null() !< + real (kind=kind_phys), pointer :: ncpi(:,:) => null() !< + real (kind=kind_phys), pointer :: ncpl(:,:) => null() !< + real (kind=kind_phys), pointer :: ncpr(:,:) => null() !< + real (kind=kind_phys), pointer :: ncps(:,:) => null() !< + integer :: ncstrac !< + integer :: nday !< + integer :: nf_aelw !< + integer :: nf_aesw !< + integer :: nn !< + integer :: nsamftrac !< + integer :: nscav !< + integer :: nspc1 !< + integer :: ntcwx !< + integer :: ntiwx !< + integer :: ntrwx !< + integer :: ntk !< + integer :: ntkev !< + integer :: nvdiff !< + real (kind=kind_phys), pointer :: oa4(:,:) => null() !< + real (kind=kind_phys), pointer :: oc(:) => null() !< + real (kind=kind_phys), pointer :: olyr(:,:) => null() !< + logical , pointer :: otspt(:,:) => null() !< + logical , pointer :: otsptflag(:) => null() !< + integer :: oz_coeffp5 !< + logical :: phys_hydrostatic !< + real (kind=kind_phys), pointer :: plvl(:,:) => null() !< + real (kind=kind_phys), pointer :: plyr(:,:) => null() !< + real (kind=kind_phys), pointer :: prcpmp(:) => null() !< + real (kind=kind_phys), pointer :: prnum(:,:) => null() !< + real (kind=kind_phys), pointer :: q2mp(:) => null() !< + real (kind=kind_phys), pointer :: qgl(:,:) => null() !< + real (kind=kind_phys), pointer :: qicn(:,:) => null() !< + real (kind=kind_phys), pointer :: qlcn(:,:) => null() !< + real (kind=kind_phys), pointer :: qlyr(:,:) => null() !< + real (kind=kind_phys), pointer :: qrn(:,:) => null() !< + real (kind=kind_phys), pointer :: qsnw(:,:) => null() !< + real (kind=kind_phys), pointer :: qss_ice(:) => null() !< + real (kind=kind_phys), pointer :: qss_land(:) => null() !< + real (kind=kind_phys), pointer :: qss_water(:) => null() !< + logical :: radar_reset !< + real (kind=kind_phys) :: raddt !< + real (kind=kind_phys), pointer :: rainmp(:) => null() !< + real (kind=kind_phys), pointer :: raincd(:) => null() !< + real (kind=kind_phys), pointer :: raincs(:) => null() !< + real (kind=kind_phys), pointer :: rainmcadj(:) => null() !< + real (kind=kind_phys), pointer :: rainp(:,:) => null() !< + real (kind=kind_phys), pointer :: rb(:) => null() !< + real (kind=kind_phys), pointer :: rb_ice(:) => null() !< + real (kind=kind_phys), pointer :: rb_land(:) => null() !< + real (kind=kind_phys), pointer :: rb_water(:) => null() !< + logical :: max_hourly_reset !< + logical :: ext_diag_thompson_reset !< + real (kind=kind_phys), pointer :: rhc(:,:) => null() !< + real (kind=kind_phys), pointer :: runoff(:) => null() !< + real (kind=kind_phys), pointer :: save_q(:,:,:) => null() !< + real (kind=kind_phys), pointer :: save_t(:,:) => null() !< + real (kind=kind_phys), pointer :: save_tcp(:,:) => null() !< + real (kind=kind_phys), pointer :: save_u(:,:) => null() !< + real (kind=kind_phys), pointer :: save_v(:,:) => null() !< + real (kind=kind_phys), pointer :: sbsno(:) => null() !< + type (cmpfsw_type), pointer :: scmpsw(:) => null() !< + real (kind=kind_phys), pointer :: sfcalb(:,:) => null() !< + real (kind=kind_phys), pointer :: sigma(:) => null() !< + real (kind=kind_phys), pointer :: sigmaf(:) => null() !< + real (kind=kind_phys), pointer :: sigmafrac(:,:) => null() !< + real (kind=kind_phys), pointer :: sigmatot(:,:) => null() !< + logical :: skip_macro !< + real (kind=kind_phys), pointer :: snowc(:) => null() !< + real (kind=kind_phys), pointer :: snohf(:) => null() !< + real (kind=kind_phys), pointer :: snowmp(:) => null() !< + real (kind=kind_phys), pointer :: snowmt(:) => null() !< + real (kind=kind_phys), pointer :: stress(:) => null() !< + real (kind=kind_phys), pointer :: stress_ice(:) => null() !< + real (kind=kind_phys), pointer :: stress_land(:) => null() !< + real (kind=kind_phys), pointer :: stress_water(:) => null() !< + real (kind=kind_phys), pointer :: t2mmp(:) => null() !< + real (kind=kind_phys), pointer :: theta(:) => null() !< + real (kind=kind_phys), pointer :: tlvl(:,:) => null() !< + real (kind=kind_phys), pointer :: tlyr(:,:) => null() !< + real (kind=kind_phys), pointer :: tprcp_ice(:) => null() !< + real (kind=kind_phys), pointer :: tprcp_land(:) => null() !< + real (kind=kind_phys), pointer :: tprcp_water(:) => null() !< + integer :: tracers_start_index !< + integer :: tracers_total !< + integer :: tracers_water !< + logical :: trans_aero !< + real (kind=kind_phys), pointer :: trans(:) => null() !< + real (kind=kind_phys), pointer :: tseal(:) => null() !< + real (kind=kind_phys), pointer :: tsfa(:) => null() !< + real (kind=kind_phys), pointer :: tsfc_water(:) => null() !< + real (kind=kind_phys), pointer :: tsfg(:) => null() !< + real (kind=kind_phys), pointer :: tsurf_ice(:) => null() !< + real (kind=kind_phys), pointer :: tsurf_land(:) => null() !< + real (kind=kind_phys), pointer :: tsurf_water(:) => null() !< + real (kind=kind_phys), pointer :: ud_mf(:,:) => null() !< + real (kind=kind_phys), pointer :: uustar_ice(:) => null() !< + real (kind=kind_phys), pointer :: uustar_land(:) => null() !< + real (kind=kind_phys), pointer :: uustar_water(:) => null() !< + real (kind=kind_phys), pointer :: vdftra(:,:,:) => null() !< + real (kind=kind_phys), pointer :: vegf1d(:) => null() !< + real (kind=kind_phys) :: lndp_vgf !< + + real (kind=kind_phys), pointer :: w_upi(:,:) => null() !< + real (kind=kind_phys), pointer :: wcbmax(:) => null() !< + real (kind=kind_phys), pointer :: wind(:) => null() !< + real (kind=kind_phys), pointer :: work1(:) => null() !< + real (kind=kind_phys), pointer :: work2(:) => null() !< + real (kind=kind_phys), pointer :: work3(:) => null() !< + real (kind=kind_phys), pointer :: xcosz(:) => null() !< + real (kind=kind_phys), pointer :: xlai1d(:) => null() !< + real (kind=kind_phys), pointer :: xmu(:) => null() !< + real (kind=kind_phys), pointer :: z01d(:) => null() !< + real (kind=kind_phys), pointer :: zt1d(:) => null() !< + real (kind=kind_phys), pointer :: ztmax_ice(:) => null() !< + real (kind=kind_phys), pointer :: ztmax_land(:) => null() !< + real (kind=kind_phys), pointer :: ztmax_water(:) => null() !< +!================================================================================================== +! UGWP - five mechnanisms of momentum deposition due to various types of GWs +! (oss, ofd, obl, ogw) + ngw = sum( sso + ngw) +!================================================================================================== +! nGWs + real (kind=kind_phys), pointer :: dudt_ngw(:,:) => null() !< + real (kind=kind_phys), pointer :: dvdt_ngw(:,:) => null() !< + real (kind=kind_phys), pointer :: dtdt_ngw(:,:) => null() !< + real (kind=kind_phys), pointer :: kdis_ngw(:,:) => null() !< + + real (kind=kind_phys), pointer :: tau_oss(: ) => null() !< instantaneous momentum flux due to OSS + real (kind=kind_phys), pointer :: tau_tofd(:) => null() !< instantaneous momentum flux due to TOFD + real (kind=kind_phys), pointer :: tau_mtb(:) => null() !< instantaneous momentum of mountain blocking drag + real (kind=kind_phys), pointer :: tau_ogw(:) => null() !< instantaneous momentum flux of OGWs + real (kind=kind_phys), pointer :: tau_ngw(:) => null() !< instantaneous momentum flux of NGWs + + real (kind=kind_phys), pointer :: zngw(:) => null() !< launch levels of NGWs + real (kind=kind_phys), pointer :: zmtb(:) => null() !< mountain blocking height + real (kind=kind_phys), pointer :: zlwb(:) => null() !< low level wave breaking height + real (kind=kind_phys), pointer :: zogw(:) => null() !< height of OGW-launch + + real (kind=kind_phys), pointer :: dudt_mtb(:,:) => null() !< daily aver u-wind tend due to mountain blocking + real (kind=kind_phys), pointer :: dudt_tms(:,:) => null() !< daily aver u-wind tend due to TMS + + ! RRTMGP + real (kind=kind_phys), pointer :: p_lay(:,:) => null() !< + real (kind=kind_phys), pointer :: p_lev(:,:) => null() !< + real (kind=kind_phys), pointer :: t_lev(:,:) => null() !< + real (kind=kind_phys), pointer :: t_lay(:,:) => null() !< + real (kind=kind_phys), pointer :: relhum(:,:) => null() !< + real (kind=kind_phys), pointer :: tv_lay(:,:) => null() !< + real (kind=kind_phys), pointer :: qs_lay(:,:) => null() !< + real (kind=kind_phys), pointer :: q_lay(:,:) => null() !< + real (kind=kind_phys), pointer :: deltaZ(:,:) => null() !< + real (kind=kind_phys), pointer :: deltaZc(:,:) => null() !< + real (kind=kind_phys), pointer :: deltaP(:,:) => null() !< + real (kind=kind_phys), pointer :: cloud_overlap_param(:,:) => null() !< Cloud overlap parameter + real (kind=kind_phys), pointer :: cnv_cloud_overlap_param(:,:) => null() !< Convective cloud overlap parameter + real (kind=kind_phys), pointer :: precip_overlap_param(:,:) => null() !< Precipitation overlap parameter + real (kind=kind_phys), pointer :: tracer(:,:,:) => null() !< + real (kind=kind_phys), pointer :: aerosolslw(:,:,:,:) => null() !< Aerosol radiative properties in each LW band. + real (kind=kind_phys), pointer :: aerosolssw(:,:,:,:) => null() !< Aerosol radiative properties in each SW band. + real (kind=kind_phys), pointer :: cld_frac(:,:) => null() !< Total cloud fraction + real (kind=kind_phys), pointer :: cld_lwp(:,:) => null() !< Cloud liquid water path + real (kind=kind_phys), pointer :: cld_reliq(:,:) => null() !< Cloud liquid effective radius + real (kind=kind_phys), pointer :: cld_iwp(:,:) => null() !< Cloud ice water path + real (kind=kind_phys), pointer :: cld_reice(:,:) => null() !< Cloud ice effecive radius + real (kind=kind_phys), pointer :: cld_swp(:,:) => null() !< Cloud snow water path + real (kind=kind_phys), pointer :: cld_resnow(:,:) => null() !< Cloud snow effective radius + real (kind=kind_phys), pointer :: cld_rwp(:,:) => null() !< Cloud rain water path + real (kind=kind_phys), pointer :: cld_rerain(:,:) => null() !< Cloud rain effective radius + real (kind=kind_phys), pointer :: precip_frac(:,:) => null() !< Precipitation fraction + real (kind=kind_phys), pointer :: cld_cnv_frac(:,:) => null() !< SGS convective cloud fraction + real (kind=kind_phys), pointer :: cld_cnv_lwp(:,:) => null() !< SGS convective cloud liquid water path + real (kind=kind_phys), pointer :: cld_cnv_reliq(:,:) => null() !< SGS convective cloud liquid effective radius + real (kind=kind_phys), pointer :: cld_cnv_iwp(:,:) => null() !< SGS convective cloud ice water path + real (kind=kind_phys), pointer :: cld_cnv_reice(:,:) => null() !< SGS convective cloud ice effecive radius + real (kind=kind_phys), pointer :: cld_pbl_lwp(:,:) => null() !< SGS PBL cloud liquid water path + real (kind=kind_phys), pointer :: cld_pbl_reliq(:,:) => null() !< SGS PBL cloud liquid effective radius + real (kind=kind_phys), pointer :: cld_pbl_iwp(:,:) => null() !< SGS PBL cloud ice water path + real (kind=kind_phys), pointer :: cld_pbl_reice(:,:) => null() !< SGS PBL cloud ice effecive radius + real (kind=kind_phys), pointer :: fluxlwUP_allsky(:,:) => null() !< RRTMGP upward longwave all-sky flux profile + real (kind=kind_phys), pointer :: fluxlwDOWN_allsky(:,:) => null() !< RRTMGP downward longwave all-sky flux profile + real (kind=kind_phys), pointer :: fluxlwUP_clrsky(:,:) => null() !< RRTMGP upward longwave clr-sky flux profile + real (kind=kind_phys), pointer :: fluxlwDOWN_clrsky(:,:) => null() !< RRTMGP downward longwave clr-sky flux profile + real (kind=kind_phys), pointer :: fluxswUP_allsky(:,:) => null() !< RRTMGP upward shortwave all-sky flux profile + real (kind=kind_phys), pointer :: fluxswDOWN_allsky(:,:) => null() !< RRTMGP downward shortwave all-sky flux profile + real (kind=kind_phys), pointer :: fluxswUP_clrsky(:,:) => null() !< RRTMGP upward shortwave clr-sky flux profile + real (kind=kind_phys), pointer :: fluxswDOWN_clrsky(:,:) => null() !< RRTMGP downward shortwave clr-sky flux profile + real (kind=kind_phys), pointer :: sfc_emiss_byband(:,:) => null() !< + real (kind=kind_phys), pointer :: sec_diff_byband(:,:) => null() !< + real (kind=kind_phys), pointer :: sfc_alb_nir_dir(:,:) => null() !< + real (kind=kind_phys), pointer :: sfc_alb_nir_dif(:,:) => null() !< + real (kind=kind_phys), pointer :: sfc_alb_uvvis_dir(:,:) => null() !< + real (kind=kind_phys), pointer :: sfc_alb_uvvis_dif(:,:) => null() !< + real (kind=kind_phys), pointer :: toa_src_lw(:,:) => null() !< + real (kind=kind_phys), pointer :: toa_src_sw(:,:) => null() !< + type(proflw_type), pointer :: flxprf_lw(:,:) => null() !< DDT containing RRTMGP longwave fluxes + type(profsw_type), pointer :: flxprf_sw(:,:) => null() !< DDT containing RRTMGP shortwave fluxes + type(ty_optical_props_2str) :: lw_optical_props_cloudsByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_clouds !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_precipByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_precip !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_cnvcloudsByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_cnvclouds !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_MYNNcloudsByBand !< RRTMGP DDT + type(ty_optical_props_1scl) :: lw_optical_props_clrsky !< RRTMGP DDT + type(ty_optical_props_1scl) :: lw_optical_props_aerosol !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_cloudsByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_clouds !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_precipByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_precip !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_clrsky !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_aerosol !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_cnvcloudsByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_cnvclouds !< RRTMGP DDT + type(ty_optical_props_2str) :: sw_optical_props_MYNNcloudsByBand !< RRTMGP DDT + type(ty_gas_concs) :: gas_concentrations !< RRTMGP DDT + type(ty_source_func_lw) :: sources !< RRTMGP DDT + + !-- GSL drag suite + real (kind=kind_phys), pointer :: varss(:) => null() !< + real (kind=kind_phys), pointer :: ocss(:) => null() !< + real (kind=kind_phys), pointer :: oa4ss(:,:) => null() !< + real (kind=kind_phys), pointer :: clxss(:,:) => null() !< + + !-- 3D diagnostics + integer :: rtg_ozone_index, rtg_tke_index + + contains + + procedure :: create => gfs_interstitial_create !< allocate array data + procedure :: rad_reset => gfs_interstitial_rad_reset !< reset array data for radiation + procedure :: phys_reset => gfs_interstitial_phys_reset !< reset array data for physics + + end type GFS_interstitial_type + +!! \section arg_table_GFDL_interstitial_type Argument Table +!! \htmlinclude GFDL_interstitial_type.html +!! + type GFDL_interstitial_type real(kind_dyn) :: akap real(kind_dyn) :: bdt @@ -73,28 +508,1126 @@ module CCPP_typedefs contains - procedure :: create => interstitial_create !< allocate array data - procedure :: reset => interstitial_reset !< reset array data - procedure :: mprint => interstitial_print !< print array data + procedure :: create => gfdl_interstitial_create !< allocate array data + procedure :: reset => gfdl_interstitial_reset !< reset array data + procedure :: mprint => gfdl_interstitial_print !< print array data - end type CCPP_interstitial_type + end type GFDL_interstitial_type contains -!----------------------------- -! CCPP_interstitial_type -!----------------------------- - subroutine interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd, jed, npz, ng, & - dt_atmos, p_split, k_split, zvir, p_ref, ak, bk, & - do_ql, do_qi, do_qr, do_qs, do_qg, do_qa, & - kappa, hydrostatic, do_sat_adj, & - delp, delz, area, peln, phis, pkz, pt, & - qvi, qv, ql, qi, qr, qs, qg, qc, q_con, & - nthreads, nwat, ngas, rilist, cpilist, mpirank, mpiroot) +!---------------------- +! GFS_interstitial_type +!---------------------- + + subroutine gfs_interstitial_create (Interstitial, IM, Model) + ! + implicit none + ! + class(GFS_interstitial_type) :: Interstitial + integer, intent(in) :: IM + type(GFS_control_type), intent(in) :: Model + integer :: iGas + ! + allocate (Interstitial%otspt (Model%ntracp1,2)) + allocate (Interstitial%otsptflag (Model%ntrac)) + ! Set up numbers of tracers for PBL, convection, etc: sets + ! Interstitial%{nvdiff,mg3_as_mg2,nn,tracers_total,ntcwx,ntiwx,ntk,ntkev,otspt,nsamftrac,ncstrac,nscav} + call gfs_interstitial_setup_tracers(Interstitial, Model) + ! Allocate arrays + allocate (Interstitial%adjsfculw_land (IM)) + allocate (Interstitial%adjsfculw_ice (IM)) + allocate (Interstitial%adjsfculw_water (IM)) + allocate (Interstitial%adjnirbmd (IM)) + allocate (Interstitial%adjnirbmu (IM)) + allocate (Interstitial%adjnirdfd (IM)) + allocate (Interstitial%adjnirdfu (IM)) + allocate (Interstitial%adjvisbmd (IM)) + allocate (Interstitial%adjvisbmu (IM)) + allocate (Interstitial%adjvisdfu (IM)) + allocate (Interstitial%adjvisdfd (IM)) + allocate (Interstitial%aerodp (IM,NSPC1)) + allocate (Interstitial%alb1d (IM)) + if (.not. Model%do_RRTMGP) then + ! RRTMGP uses its own cloud_overlap_param + allocate (Interstitial%alpha (IM,Model%levr+LTP)) + end if + allocate (Interstitial%bexp1d (IM)) + allocate (Interstitial%cd (IM)) + allocate (Interstitial%cd_ice (IM)) + allocate (Interstitial%cd_land (IM)) + allocate (Interstitial%cd_water (IM)) + allocate (Interstitial%cdq (IM)) + allocate (Interstitial%cdq_ice (IM)) + allocate (Interstitial%cdq_land (IM)) + allocate (Interstitial%cdq_water (IM)) + allocate (Interstitial%chh_ice (IM)) + allocate (Interstitial%chh_land (IM)) + allocate (Interstitial%chh_water (IM)) + allocate (Interstitial%cldf (IM)) + allocate (Interstitial%cldsa (IM,5)) + allocate (Interstitial%cldtaulw (IM,Model%levr+LTP)) + allocate (Interstitial%cldtausw (IM,Model%levr+LTP)) + allocate (Interstitial%cld1d (IM)) + allocate (Interstitial%clouds (IM,Model%levr+LTP,NF_CLDS)) + allocate (Interstitial%clw (IM,Model%levs,Interstitial%nn)) + allocate (Interstitial%clx (IM,4)) + allocate (Interstitial%cmm_ice (IM)) + allocate (Interstitial%cmm_land (IM)) + allocate (Interstitial%cmm_water (IM)) + allocate (Interstitial%cnvc (IM,Model%levs)) + allocate (Interstitial%cnvw (IM,Model%levs)) + allocate (Interstitial%ctei_r (IM)) + allocate (Interstitial%ctei_rml (IM)) + allocate (Interstitial%cumabs (IM)) + allocate (Interstitial%dd_mf (IM,Model%levs)) + allocate (Interstitial%de_lgth (IM)) + allocate (Interstitial%del (IM,Model%levs)) + allocate (Interstitial%del_gz (IM,Model%levs+1)) + allocate (Interstitial%delr (IM,Model%levr+LTP)) + allocate (Interstitial%dlength (IM)) + allocate (Interstitial%dqdt (IM,Model%levs,Model%ntrac)) + allocate (Interstitial%dqsfc1 (IM)) + allocate (Interstitial%drain (IM)) + allocate (Interstitial%dtdt (IM,Model%levs)) + allocate (Interstitial%dtsfc1 (IM)) + allocate (Interstitial%dt_mf (IM,Model%levs)) + allocate (Interstitial%dtzm (IM)) + allocate (Interstitial%dudt (IM,Model%levs)) + allocate (Interstitial%dusfcg (IM)) + allocate (Interstitial%dusfc1 (IM)) + allocate (Interstitial%dvdt (IM,Model%levs)) + allocate (Interstitial%dvsfcg (IM)) + allocate (Interstitial%dvsfc1 (IM)) + allocate (Interstitial%dvdftra (IM,Model%levs,Interstitial%nvdiff)) + allocate (Interstitial%dzlyr (IM,Model%levr+LTP)) + allocate (Interstitial%elvmax (IM)) + allocate (Interstitial%ep1d (IM)) + allocate (Interstitial%ep1d_ice (IM)) + allocate (Interstitial%ep1d_land (IM)) + allocate (Interstitial%ep1d_water (IM)) + allocate (Interstitial%evap_ice (IM)) + allocate (Interstitial%evap_land (IM)) + allocate (Interstitial%evap_water (IM)) + allocate (Interstitial%evbs (IM)) + allocate (Interstitial%evcw (IM)) + allocate (Interstitial%pah (IM)) + allocate (Interstitial%ecan (IM)) + allocate (Interstitial%etran (IM)) + allocate (Interstitial%edir (IM)) + allocate (Interstitial%faerlw (IM,Model%levr+LTP,NBDLW,NF_AELW)) + allocate (Interstitial%faersw (IM,Model%levr+LTP,NBDSW,NF_AESW)) + allocate (Interstitial%ffhh_ice (IM)) + allocate (Interstitial%ffhh_land (IM)) + allocate (Interstitial%ffhh_water (IM)) + allocate (Interstitial%fh2 (IM)) + allocate (Interstitial%fh2_ice (IM)) + allocate (Interstitial%fh2_land (IM)) + allocate (Interstitial%fh2_water (IM)) + allocate (Interstitial%flag_cice (IM)) + allocate (Interstitial%flag_guess (IM)) + allocate (Interstitial%flag_iter (IM)) + allocate (Interstitial%ffmm_ice (IM)) + allocate (Interstitial%ffmm_land (IM)) + allocate (Interstitial%ffmm_water (IM)) + allocate (Interstitial%fm10 (IM)) + allocate (Interstitial%fm10_ice (IM)) + allocate (Interstitial%fm10_land (IM)) + allocate (Interstitial%fm10_water (IM)) + allocate (Interstitial%frland (IM)) + allocate (Interstitial%fscav (Interstitial%nscav)) + allocate (Interstitial%fswtr (Interstitial%nscav)) + allocate (Interstitial%gabsbdlw (IM)) + allocate (Interstitial%gabsbdlw_ice (IM)) + allocate (Interstitial%gabsbdlw_land (IM)) + allocate (Interstitial%gabsbdlw_water (IM)) + allocate (Interstitial%gamma (IM)) + allocate (Interstitial%gamq (IM)) + allocate (Interstitial%gamt (IM)) + allocate (Interstitial%gasvmr (IM,Model%levr+LTP,NF_VGAS)) + allocate (Interstitial%gflx (IM)) + allocate (Interstitial%gflx_ice (IM)) + allocate (Interstitial%gflx_land (IM)) + allocate (Interstitial%gflx_water (IM)) + allocate (Interstitial%gwdcu (IM,Model%levs)) + allocate (Interstitial%gwdcv (IM,Model%levs)) + allocate (Interstitial%zvfun (IM)) + allocate (Interstitial%hffac (IM)) + allocate (Interstitial%hflxq (IM)) + allocate (Interstitial%hflx_ice (IM)) + allocate (Interstitial%hflx_land (IM)) + allocate (Interstitial%hflx_water (IM)) + allocate (Interstitial%htlwc (IM,Model%levr+LTP)) + allocate (Interstitial%htlw0 (IM,Model%levr+LTP)) + allocate (Interstitial%htswc (IM,Model%levr+LTP)) + allocate (Interstitial%htsw0 (IM,Model%levr+LTP)) + allocate (Interstitial%dry (IM)) + allocate (Interstitial%idxday (IM)) + allocate (Interstitial%icy (IM)) + allocate (Interstitial%lake (IM)) + allocate (Interstitial%use_flake (IM)) + allocate (Interstitial%ocean (IM)) + allocate (Interstitial%islmsk (IM)) + allocate (Interstitial%islmsk_cice (IM)) + allocate (Interstitial%wet (IM)) + allocate (Interstitial%kbot (IM)) + allocate (Interstitial%kcnv (IM)) + allocate (Interstitial%kinver (IM)) + allocate (Interstitial%kpbl (IM)) + allocate (Interstitial%ktop (IM)) + allocate (Interstitial%mbota (IM,3)) + allocate (Interstitial%mtopa (IM,3)) + allocate (Interstitial%oa4 (IM,4)) + allocate (Interstitial%oc (IM)) + allocate (Interstitial%olyr (IM,Model%levr+LTP)) + allocate (Interstitial%plvl (IM,Model%levr+1+LTP)) + allocate (Interstitial%plyr (IM,Model%levr+LTP)) + allocate (Interstitial%prnum (IM,Model%levs)) + allocate (Interstitial%qlyr (IM,Model%levr+LTP)) + allocate (Interstitial%prcpmp (IM)) + allocate (Interstitial%qss_ice (IM)) + allocate (Interstitial%qss_land (IM)) + allocate (Interstitial%qss_water (IM)) + allocate (Interstitial%raincd (IM)) + allocate (Interstitial%raincs (IM)) + allocate (Interstitial%rainmcadj (IM)) + allocate (Interstitial%rainp (IM,Model%levs)) + allocate (Interstitial%rb (IM)) + allocate (Interstitial%rb_ice (IM)) + allocate (Interstitial%rb_land (IM)) + allocate (Interstitial%rb_water (IM)) + allocate (Interstitial%rhc (IM,Model%levs)) + allocate (Interstitial%runoff (IM)) + allocate (Interstitial%save_q (IM,Model%levs,Model%ntrac)) + allocate (Interstitial%save_t (IM,Model%levs)) + allocate (Interstitial%save_tcp (IM,Model%levs)) + allocate (Interstitial%save_u (IM,Model%levs)) + allocate (Interstitial%save_v (IM,Model%levs)) + allocate (Interstitial%sbsno (IM)) + allocate (Interstitial%scmpsw (IM)) + allocate (Interstitial%sfcalb (IM,NF_ALBD)) + allocate (Interstitial%sigma (IM)) + allocate (Interstitial%sigmaf (IM)) + allocate (Interstitial%sigmafrac (IM,Model%levs)) + allocate (Interstitial%sigmatot (IM,Model%levs)) + allocate (Interstitial%snowc (IM)) + allocate (Interstitial%snohf (IM)) + allocate (Interstitial%snowmt (IM)) + allocate (Interstitial%stress (IM)) + allocate (Interstitial%stress_ice (IM)) + allocate (Interstitial%stress_land (IM)) + allocate (Interstitial%stress_water (IM)) + allocate (Interstitial%theta (IM)) + allocate (Interstitial%tlvl (IM,Model%levr+1+LTP)) + allocate (Interstitial%tlyr (IM,Model%levr+LTP)) + allocate (Interstitial%tprcp_ice (IM)) + allocate (Interstitial%tprcp_land (IM)) + allocate (Interstitial%tprcp_water (IM)) + allocate (Interstitial%trans (IM)) + allocate (Interstitial%tseal (IM)) + allocate (Interstitial%tsfa (IM)) + allocate (Interstitial%tsfc_water (IM)) + allocate (Interstitial%tsfg (IM)) + allocate (Interstitial%tsurf_ice (IM)) + allocate (Interstitial%tsurf_land (IM)) + allocate (Interstitial%tsurf_water (IM)) + allocate (Interstitial%ud_mf (IM,Model%levs)) + allocate (Interstitial%uustar_ice (IM)) + allocate (Interstitial%uustar_land (IM)) + allocate (Interstitial%uustar_water (IM)) + allocate (Interstitial%vdftra (IM,Model%levs,Interstitial%nvdiff)) !GJF first dimension was set as 'IX' in GFS_physics_driver + allocate (Interstitial%vegf1d (IM)) + allocate (Interstitial%wcbmax (IM)) + allocate (Interstitial%wind (IM)) + allocate (Interstitial%work1 (IM)) + allocate (Interstitial%work2 (IM)) + allocate (Interstitial%work3 (IM)) + allocate (Interstitial%xcosz (IM)) + allocate (Interstitial%xlai1d (IM)) + allocate (Interstitial%xmu (IM)) + allocate (Interstitial%z01d (IM)) + allocate (Interstitial%zt1d (IM)) + allocate (Interstitial%ztmax_ice (IM)) + allocate (Interstitial%ztmax_land (IM)) + allocate (Interstitial%ztmax_water (IM)) + + ! RRTMGP + if (Model%do_RRTMGP) then + allocate (Interstitial%tracer (IM, Model%levs,Model%ntrac)) + allocate (Interstitial%tv_lay (IM, Model%levs)) + allocate (Interstitial%relhum (IM, Model%levs)) + allocate (Interstitial%qs_lay (IM, Model%levs)) + allocate (Interstitial%q_lay (IM, Model%levs)) + allocate (Interstitial%deltaZ (IM, Model%levs)) + allocate (Interstitial%deltaZc (IM, Model%levs)) + allocate (Interstitial%deltaP (IM, Model%levs)) + allocate (Interstitial%p_lev (IM, Model%levs+1)) + allocate (Interstitial%p_lay (IM, Model%levs)) + allocate (Interstitial%t_lev (IM, Model%levs+1)) + allocate (Interstitial%t_lay (IM, Model%levs)) + allocate (Interstitial%cloud_overlap_param (IM, Model%levs)) + allocate (Interstitial%precip_overlap_param (IM, Model%levs)) + allocate (Interstitial%fluxlwUP_allsky (IM, Model%levs+1)) + allocate (Interstitial%fluxlwDOWN_allsky (IM, Model%levs+1)) + allocate (Interstitial%fluxlwUP_clrsky (IM, Model%levs+1)) + allocate (Interstitial%fluxlwDOWN_clrsky (IM, Model%levs+1)) + allocate (Interstitial%fluxswUP_allsky (IM, Model%levs+1)) + allocate (Interstitial%fluxswDOWN_allsky (IM, Model%levs+1)) + allocate (Interstitial%fluxswUP_clrsky (IM, Model%levs+1)) + allocate (Interstitial%fluxswDOWN_clrsky (IM, Model%levs+1)) + allocate (Interstitial%aerosolslw (IM, Model%levs, Model%rrtmgp_nBandsLW, NF_AELW)) + allocate (Interstitial%aerosolssw (IM, Model%levs, Model%rrtmgp_nBandsSW, NF_AESW)) + allocate (Interstitial%cld_frac (IM, Model%levs)) + allocate (Interstitial%cld_lwp (IM, Model%levs)) + allocate (Interstitial%cld_reliq (IM, Model%levs)) + allocate (Interstitial%cld_iwp (IM, Model%levs)) + allocate (Interstitial%cld_reice (IM, Model%levs)) + allocate (Interstitial%cld_swp (IM, Model%levs)) + allocate (Interstitial%cld_resnow (IM, Model%levs)) + allocate (Interstitial%cld_rwp (IM, Model%levs)) + allocate (Interstitial%cld_rerain (IM, Model%levs)) + allocate (Interstitial%precip_frac (IM, Model%levs)) + allocate (Interstitial%cld_cnv_frac (IM, Model%levs)) + allocate (Interstitial%cnv_cloud_overlap_param(IM, Model%levs)) + allocate (Interstitial%cld_cnv_lwp (IM, Model%levs)) + allocate (Interstitial%cld_cnv_reliq (IM, Model%levs)) + allocate (Interstitial%cld_cnv_iwp (IM, Model%levs)) + allocate (Interstitial%cld_cnv_reice (IM, Model%levs)) + allocate (Interstitial%cld_pbl_lwp (IM, Model%levs)) + allocate (Interstitial%cld_pbl_reliq (IM, Model%levs)) + allocate (Interstitial%cld_pbl_iwp (IM, Model%levs)) + allocate (Interstitial%cld_pbl_reice (IM, Model%levs)) + allocate (Interstitial%flxprf_lw (IM, Model%levs+1)) + allocate (Interstitial%flxprf_sw (IM, Model%levs+1)) + allocate (Interstitial%sfc_emiss_byband (Model%rrtmgp_nBandsLW,IM)) + allocate (Interstitial%sec_diff_byband (Model%rrtmgp_nBandsLW,IM)) + allocate (Interstitial%sfc_alb_nir_dir (Model%rrtmgp_nBandsSW,IM)) + allocate (Interstitial%sfc_alb_nir_dif (Model%rrtmgp_nBandsSW,IM)) + allocate (Interstitial%sfc_alb_uvvis_dir (Model%rrtmgp_nBandsSW,IM)) + allocate (Interstitial%sfc_alb_uvvis_dif (Model%rrtmgp_nBandsSW,IM)) + allocate (Interstitial%toa_src_sw (IM,Model%rrtmgp_nGptsSW)) + allocate (Interstitial%toa_src_lw (IM,Model%rrtmgp_nGptsLW)) + ! + ! gas_concentrations (ty_gas_concs) + ! + Interstitial%gas_concentrations%ncol = IM + Interstitial%gas_concentrations%nlay = Model%levs + allocate(Interstitial%gas_concentrations%gas_name(Model%nGases)) + allocate(Interstitial%gas_concentrations%concs(Model%nGases)) + do iGas=1,Model%nGases + allocate(Interstitial%gas_concentrations%concs(iGas)%conc(IM, Model%levs)) + enddo + ! + ! 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 )) + allocate(Interstitial%lw_optical_props_clrsky%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_clrsky%gpt2band( Model%rrtmgp_nGptsLW )) + ! + ! lw_optical_props_aerosol (ty_optical_props_1scl) + ! + allocate(Interstitial%lw_optical_props_aerosol%tau( IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_aerosol%band2gpt (2, Model%rrtmgp_nBandsLW )) + 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) + ! + 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 )) + allocate(Interstitial%lw_optical_props_cloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) + ! + ! lw_optical_props_cnvcloudsByBand (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) + ! + ! lw_optical_props_MYNNcloudsByBand (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) + ! + ! lw_optical_props_precipByBand (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_precipByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precipByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precipByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precipByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precipByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precipByBand%gpt2band( Model%rrtmgp_nBandsLW )) + ! + ! lw_optical_props_clouds (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_clouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_clouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_clouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_clouds%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_clouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_clouds%gpt2band( Model%rrtmgp_nGptsLW )) + ! + ! lw_optical_props_cnvclouds (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_cnvclouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_cnvclouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_cnvclouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_cnvclouds%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvclouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_cnvclouds%gpt2band( Model%rrtmgp_nGptsLW )) + ! + ! lw_optical_props_precip (ty_optical_props_2str) + ! + allocate(Interstitial%lw_optical_props_precip%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_precip%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_precip%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%lw_optical_props_precip%band2gpt (2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precip%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%lw_optical_props_precip%gpt2band( Model%rrtmgp_nGptsLW )) + ! + ! sources (ty_source_func_lw) + ! + allocate(Interstitial%sources%sfc_source( IM, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%sources%lay_source( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%sources%lev_source_inc( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%sources%lev_source_dec( IM, Model%levs, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%sources%sfc_source_Jac( IM, Model%rrtmgp_nGptsLW )) + allocate(Interstitial%sources%band2gpt ( 2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%sources%band_lims_wvn ( 2, Model%rrtmgp_nBandsLW )) + allocate(Interstitial%sources%gpt2band( Model%rrtmgp_nGptsLW )) + end if + +! UGWP common + allocate (Interstitial%tau_mtb (IM)) + allocate (Interstitial%tau_ogw (IM)) + allocate (Interstitial%tau_tofd (IM)) + allocate (Interstitial%tau_ngw (IM)) + allocate (Interstitial%tau_oss (IM)) + allocate (Interstitial%dudt_mtb (IM,Model%levs)) + allocate (Interstitial%dudt_tms (IM,Model%levs)) + allocate (Interstitial%zmtb (IM) ) + allocate (Interstitial%zlwb (IM) ) + allocate (Interstitial%zogw (IM) ) + allocate (Interstitial%zngw (IM) ) + +! CIRES UGWP v1 + if (Model%do_ugwp_v1) then + allocate (Interstitial%dudt_ngw (IM,Model%levs)) + allocate (Interstitial%dvdt_ngw (IM,Model%levs)) + allocate (Interstitial%dtdt_ngw (IM,Model%levs)) + allocate (Interstitial%kdis_ngw (IM,Model%levs)) + end if + +!-- GSL drag suite + if (Model%gwd_opt==3 .or. Model%gwd_opt==33 .or. & + Model%gwd_opt==2 .or. Model%gwd_opt==22 ) then + allocate (Interstitial%varss (IM)) + allocate (Interstitial%ocss (IM)) + allocate (Interstitial%oa4ss (IM,4)) + allocate (Interstitial%clxss (IM,4)) + end if +! + ! Allocate arrays that are conditional on physics choices + if (Model%imp_physics == Model%imp_physics_gfdl .or. Model%imp_physics == Model%imp_physics_thompson & + .or. Model%imp_physics == Model%imp_physics_nssl & + ) then + allocate (Interstitial%graupelmp (IM)) + allocate (Interstitial%icemp (IM)) + allocate (Interstitial%rainmp (IM)) + allocate (Interstitial%snowmp (IM)) + else if (Model%imp_physics == Model%imp_physics_mg) then + allocate (Interstitial%ncgl (IM,Model%levs)) + allocate (Interstitial%ncpr (IM,Model%levs)) + allocate (Interstitial%ncps (IM,Model%levs)) + allocate (Interstitial%qgl (IM,Model%levs)) + allocate (Interstitial%qrn (IM,Model%levs)) + allocate (Interstitial%qsnw (IM,Model%levs)) + allocate (Interstitial%qlcn (IM,Model%levs)) + allocate (Interstitial%qicn (IM,Model%levs)) + allocate (Interstitial%w_upi (IM,Model%levs)) + allocate (Interstitial%cf_upi (IM,Model%levs)) + allocate (Interstitial%cnv_mfd (IM,Model%levs)) + allocate (Interstitial%cnv_dqldt (IM,Model%levs)) + allocate (Interstitial%clcn (IM,Model%levs)) + allocate (Interstitial%cnv_fice (IM,Model%levs)) + allocate (Interstitial%cnv_ndrop (IM,Model%levs)) + allocate (Interstitial%cnv_nice (IM,Model%levs)) + end if + if (Model%do_shoc) then + if (.not. associated(Interstitial%qrn)) allocate (Interstitial%qrn (IM,Model%levs)) + if (.not. associated(Interstitial%qsnw)) allocate (Interstitial%qsnw (IM,Model%levs)) + ! DH* updated version of shoc from May 22 2019 (not yet in CCPP) doesn't use qgl? remove? + if (.not. associated(Interstitial%qgl)) allocate (Interstitial%qgl (IM,Model%levs)) + ! *DH + allocate (Interstitial%ncpi (IM,Model%levs)) + allocate (Interstitial%ncpl (IM,Model%levs)) + end if + if (Model%lsm == Model%lsm_noahmp) then + allocate (Interstitial%t2mmp (IM)) + allocate (Interstitial%q2mp (IM)) + end if + ! + ! Set components that do not change + Interstitial%frain = Model%dtf/Model%dtp + Interstitial%ipr = min(IM,10) + Interstitial%latidxprnt = 1 + Interstitial%levi = Model%levs+1 + Interstitial%lmk = Model%levr+LTP + Interstitial%lmp = Model%levr+1+LTP + Interstitial%nbdlw = NBDLW + Interstitial%nbdsw = NBDSW + Interstitial%nf_aelw = NF_AELW + Interstitial%nf_aesw = NF_AESW + Interstitial%nspc1 = NSPC1 + if (Model%oz_phys .or. Model%oz_phys_2015) then + Interstitial%oz_coeffp5 = oz_coeff+5 + else + Interstitial%oz_coeffp5 = 5 + endif + ! + Interstitial%skip_macro = .false. + ! The value phys_hydrostatic from dynamics does not match the + ! hardcoded value for calling GFDL MP in GFS_physics_driver.F90, + ! which is set to .true. + Interstitial%phys_hydrostatic = .true. + ! + ! Reset all other variables + call Interstitial%rad_reset (Model) + call Interstitial%phys_reset (Model) + ! + end subroutine gfs_interstitial_create + + subroutine gfs_interstitial_setup_tracers(Interstitial, Model) + ! + implicit none + ! + class(GFS_interstitial_type) :: Interstitial + type(GFS_control_type), intent(in) :: Model + integer :: n, tracers + logical :: ltest + + !first, initialize the values (in case the values don't get initialized within if statements below) + Interstitial%nvdiff = Model%ntrac + Interstitial%mg3_as_mg2 = .false. + Interstitial%nn = Model%ntrac + 1 + Interstitial%itc = 0 + Interstitial%ntk = 0 + Interstitial%ntkev = 0 + Interstitial%tracers_total = 0 + Interstitial%otspt(:,:) = .true. + Interstitial%otsptflag(:) = .true. + Interstitial%nsamftrac = 0 + Interstitial%ncstrac = 0 + Interstitial%ntcwx = 0 + Interstitial%ntiwx = 0 + Interstitial%ntrwx = 0 + + ! perform aerosol convective transport and PBL diffusion + Interstitial%trans_aero = Model%cplchm .and. Model%trans_trac + + if (Model%imp_physics == Model%imp_physics_thompson) then + if (Model%ltaerosol) then + Interstitial%nvdiff = 12 + else + Interstitial%nvdiff = 9 + endif + if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 + elseif ( Model%imp_physics == Model%imp_physics_nssl ) then + if (Model%me == Model%master) write(0,*) 'nssl_settings1: nvdiff,ntrac = ', Interstitial%nvdiff, Model%ntrac + + IF ( Model%nssl_hail_on ) THEN + Interstitial%nvdiff = 16 ! Model%ntrac ! 17 + ELSE + Interstitial%nvdiff = 13 ! turn off hail q,N, and volume + ENDIF + ! write(*,*) 'NSSL: nvdiff, ntrac = ',Interstitial%nvdiff, Model%ntrac + if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 + IF ( Model%nssl_ccn_on ) THEN + Interstitial%nvdiff = Interstitial%nvdiff + 1 + ENDIF + if (Model%me == Model%master) write(0,*) 'nssl_settings2: nvdiff,ntrac = ', Interstitial%nvdiff, Model%ntrac + + elseif (Model%imp_physics == Model%imp_physics_wsm6) then + Interstitial%nvdiff = Model%ntrac -3 + if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 + elseif (Model%ntclamt > 0) then ! for GFDL MP don't diffuse cloud amount + Interstitial%nvdiff = Model%ntrac - 1 + endif + + if (Model%imp_physics == Model%imp_physics_mg) then + if (abs(Model%fprcp) == 1) then + Interstitial%mg3_as_mg2 = .false. + elseif (Model%fprcp >= 2) then + if(Model%ntgl > 0 .and. (Model%mg_do_graupel .or. Model%mg_do_hail)) then + Interstitial%mg3_as_mg2 = .false. + else ! MG3 code run without graupel/hail i.e. as MG2 + Interstitial%mg3_as_mg2 = .true. + endif + endif + endif + + Interstitial%nscav = Model%ntrac - Model%ncnd + 2 + + if (Interstitial%nvdiff == Model%ntrac) then + Interstitial%ntcwx = Model%ntcw + Interstitial%ntiwx = Model%ntiw + Interstitial%ntrwx = Model%ntrw + else + if (Model%imp_physics == Model%imp_physics_wsm6) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + elseif (Model%imp_physics == Model%imp_physics_thompson) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + Interstitial%ntrwx = 4 + elseif (Model%imp_physics == Model%imp_physics_nssl) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + Interstitial%ntrwx = 4 + elseif (Model%imp_physics == Model%imp_physics_gfdl) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + Interstitial%ntrwx = 4 + ! F-A MP scheme + elseif (Model%imp_physics == Model%imp_physics_fer_hires) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + Interstitial%ntrwx = 4 + elseif (Model%imp_physics == Model%imp_physics_mg) then + Interstitial%ntcwx = 2 + Interstitial%ntiwx = 3 + Interstitial%ntrwx = 4 + elseif (Model%imp_physics == Model%imp_physics_zhao_carr) then + Interstitial%ntcwx = 2 + endif + endif + + if (Model%cplchm) then + ! Only the following microphysics schemes are supported with coupled chemistry + if (Model%imp_physics == Model%imp_physics_zhao_carr) then + Interstitial%nvdiff = 3 + elseif (Model%imp_physics == Model%imp_physics_mg) then + if (Model%ntgl > 0) then + Interstitial%nvdiff = 12 + else + Interstitial%nvdiff = 10 + endif + elseif (Model%imp_physics == Model%imp_physics_gfdl) then + Interstitial%nvdiff = 7 + elseif (Model%imp_physics == Model%imp_physics_thompson) then + if (Model%ltaerosol) then + Interstitial%nvdiff = 12 + else + Interstitial%nvdiff = 9 + endif + else + write(0,*) "Selected microphysics scheme is not supported when coupling with chemistry" + stop + endif + if (Interstitial%trans_aero) Interstitial%nvdiff = Interstitial%nvdiff + Model%ntchm + if (Model%ntke > 0) Interstitial%nvdiff = Interstitial%nvdiff + 1 ! adding tke to the list + endif + + if (Model%ntke > 0) Interstitial%ntkev = Interstitial%nvdiff + + if (Model%ntiw > 0) then + if (Model%ntclamt > 0) then + Interstitial%nn = Model%ntrac - 2 + else + Interstitial%nn = Model%ntrac - 1 + endif + elseif (Model%ntcw > 0) then + Interstitial%nn = Model%ntrac + else + Interstitial%nn = Model%ntrac + 1 + endif + + if (Model%cscnv .or. Model%satmedmf .or. Model%trans_trac ) then + Interstitial%otspt(:,:) = .true. ! otspt is used only for cscnv + Interstitial%otspt(1:3,:) = .false. ! this is for sp.hum, ice and liquid water + Interstitial%otsptflag(:) = .true. + tracers = 2 + do n=2,Model%ntrac + ltest = ( n /= Model%ntcw .and. n /= Model%ntiw .and. n /= Model%ntclamt .and. & + n /= Model%ntrw .and. n /= Model%ntsw .and. n /= Model%ntrnc .and. & + n /= Model%ntsnc .and. n /= Model%ntgl .and. n /= Model%ntgnc .and. & + n /= Model%nthl .and. n /= Model%nthnc .and. n /= Model%ntgv .and. & + n /= Model%nthv .and. n /= Model%ntccn .and. n /= Model%ntccna ) + Interstitial%otsptflag(n) = ltest + if ( ltest ) then + tracers = tracers + 1 + if (Model%ntke == n ) then + Interstitial%otspt(tracers+1,1) = .false. + Interstitial%ntk = tracers + endif + if (Model%ntlnc == n .or. Model%ntinc == n .or. Model%ntrnc == n .or. Model%ntsnc == n .or. Model%ntgnc == n) & +! if (ntlnc == n .or. ntinc == n .or. ntrnc == n .or. ntsnc == n .or.& +! ntrw == n .or. ntsw == n .or. ntgl == n) & + Interstitial%otspt(tracers+1,1) = .false. + if (Interstitial%trans_aero .and. Model%ntchs == n) Interstitial%itc = tracers + endif + enddo + Interstitial%tracers_total = tracers - 2 + endif ! end if_ras or cfscnv or samf + if (.not. Model%satmedmf .and. .not. Model%trans_trac .and. & + .not. Model%ras .and. .not. Model%do_shoc) then + Interstitial%nsamftrac = 0 + else + Interstitial%nsamftrac = Interstitial%tracers_total + endif + Interstitial%ncstrac = Interstitial%tracers_total + 3 + + end subroutine gfs_interstitial_setup_tracers + + subroutine gfs_interstitial_rad_reset (Interstitial, Model) + ! + implicit none + ! + class(GFS_interstitial_type) :: Interstitial + type(GFS_control_type), intent(in) :: Model + integer :: iGas + ! + Interstitial%aerodp = clear_val + Interstitial%alb1d = clear_val + if (.not. Model%do_RRTMGP) then + Interstitial%alpha = clear_val + end if + Interstitial%cldsa = clear_val + Interstitial%cldtaulw = clear_val + Interstitial%cldtausw = clear_val + Interstitial%clouds = clear_val + Interstitial%de_lgth = clear_val + Interstitial%delr = clear_val + Interstitial%dzlyr = clear_val + Interstitial%faerlw = clear_val + Interstitial%faersw = clear_val + Interstitial%gasvmr = clear_val + Interstitial%htlwc = clear_val + Interstitial%htlw0 = clear_val + Interstitial%htswc = clear_val + Interstitial%htsw0 = clear_val + Interstitial%idxday = 0 + Interstitial%kb = 0 + Interstitial%kd = 0 + Interstitial%kt = 0 + Interstitial%mbota = 0 + Interstitial%mtopa = 0 + Interstitial%nday = 0 + Interstitial%olyr = clear_val + Interstitial%plvl = clear_val + Interstitial%plyr = clear_val + Interstitial%qlyr = clear_val + Interstitial%raddt = clear_val + Interstitial%sfcalb = clear_val + Interstitial%tlvl = clear_val + Interstitial%tlyr = clear_val + Interstitial%tsfa = clear_val + Interstitial%tsfg = clear_val + + ! Interstitials used by both RRTMG and RRTMGP + Interstitial%scmpsw%uvbfc = clear_val + Interstitial%scmpsw%uvbf0 = clear_val + Interstitial%scmpsw%nirbm = clear_val + Interstitial%scmpsw%nirdf = clear_val + Interstitial%scmpsw%visbm = clear_val + Interstitial%scmpsw%visdf = clear_val + if (Model%do_RRTMGP) then + Interstitial%tracer = clear_val + Interstitial%tv_lay = clear_val + Interstitial%relhum = clear_val + Interstitial%qs_lay = clear_val + Interstitial%q_lay = clear_val + Interstitial%deltaZ = clear_val + Interstitial%deltaZc = clear_val + Interstitial%deltaP = clear_val + Interstitial%p_lev = clear_val + Interstitial%p_lay = clear_val + Interstitial%t_lev = clear_val + Interstitial%t_lay = clear_val + Interstitial%cloud_overlap_param = clear_val + Interstitial%precip_overlap_param = clear_val + Interstitial%fluxlwUP_allsky = clear_val + Interstitial%fluxlwDOWN_allsky = clear_val + Interstitial%fluxlwUP_clrsky = clear_val + Interstitial%fluxlwDOWN_clrsky = clear_val + Interstitial%fluxswUP_allsky = clear_val + Interstitial%fluxswDOWN_allsky = clear_val + Interstitial%fluxswUP_clrsky = clear_val + Interstitial%fluxswDOWN_clrsky = clear_val + Interstitial%aerosolslw = clear_val + Interstitial%aerosolssw = clear_val + Interstitial%cld_frac = clear_val + Interstitial%cld_lwp = clear_val + Interstitial%cld_reliq = clear_val + Interstitial%cld_iwp = clear_val + Interstitial%cld_reice = clear_val + Interstitial%cld_swp = clear_val + Interstitial%cld_resnow = clear_val + Interstitial%cld_rwp = clear_val + Interstitial%cld_rerain = clear_val + Interstitial%precip_frac = clear_val + Interstitial%cld_cnv_frac = clear_val + Interstitial%cnv_cloud_overlap_param = clear_val + Interstitial%cld_cnv_lwp = clear_val + Interstitial%cld_cnv_reliq = clear_val + Interstitial%cld_cnv_iwp = clear_val + Interstitial%cld_cnv_reice = clear_val + Interstitial%cld_pbl_lwp = clear_val + Interstitial%cld_pbl_reliq = clear_val + Interstitial%cld_pbl_iwp = clear_val + Interstitial%cld_pbl_reice = clear_val + Interstitial%sfc_emiss_byband = clear_val + Interstitial%sec_diff_byband = clear_val + Interstitial%sfc_alb_nir_dir = clear_val + Interstitial%sfc_alb_nir_dif = clear_val + Interstitial%sfc_alb_uvvis_dir = clear_val + Interstitial%sfc_alb_uvvis_dif = clear_val + Interstitial%toa_src_sw = clear_val + Interstitial%toa_src_lw = clear_val + do iGas=1,Model%nGases + Interstitial%gas_concentrations%concs(iGas)%conc = clear_val + end do + Interstitial%lw_optical_props_clrsky%tau = clear_val + Interstitial%lw_optical_props_aerosol%tau = clear_val + Interstitial%lw_optical_props_clouds%tau = clear_val + Interstitial%lw_optical_props_clouds%ssa = clear_val + Interstitial%lw_optical_props_clouds%g = clear_val + Interstitial%lw_optical_props_precip%tau = clear_val + Interstitial%lw_optical_props_precip%ssa = clear_val + Interstitial%lw_optical_props_precip%g = clear_val + Interstitial%lw_optical_props_cloudsByBand%tau = clear_val + Interstitial%lw_optical_props_cloudsByBand%ssa = clear_val + Interstitial%lw_optical_props_cloudsByBand%g = clear_val + Interstitial%lw_optical_props_precipByBand%tau = clear_val + Interstitial%lw_optical_props_precipByBand%ssa = clear_val + Interstitial%lw_optical_props_precipByBand%g = clear_val + Interstitial%lw_optical_props_cnvcloudsByBand%tau = clear_val + Interstitial%lw_optical_props_cnvcloudsByBand%ssa = clear_val + Interstitial%lw_optical_props_cnvcloudsByBand%g = clear_val + Interstitial%lw_optical_props_MYNNcloudsByBand%tau = clear_val + Interstitial%lw_optical_props_MYNNcloudsByBand%ssa = clear_val + Interstitial%lw_optical_props_MYNNcloudsByBand%g = clear_val + Interstitial%lw_optical_props_cnvclouds%tau = clear_val + Interstitial%lw_optical_props_cnvclouds%ssa = clear_val + Interstitial%lw_optical_props_cnvclouds%g = clear_val + Interstitial%sources%sfc_source = clear_val + Interstitial%sources%lay_source = clear_val + Interstitial%sources%lev_source_inc = clear_val + Interstitial%sources%lev_source_dec = clear_val + Interstitial%sources%sfc_source_Jac = clear_val + Interstitial%flxprf_lw%upfxc = clear_val + Interstitial%flxprf_lw%dnfxc = clear_val + Interstitial%flxprf_lw%upfx0 = clear_val + Interstitial%flxprf_lw%dnfx0 = clear_val + Interstitial%flxprf_sw%upfxc = clear_val + Interstitial%flxprf_sw%dnfxc = clear_val + Interstitial%flxprf_sw%upfx0 = clear_val + Interstitial%flxprf_sw%dnfx0 = clear_val + end if + ! + end subroutine gfs_interstitial_rad_reset + + subroutine gfs_interstitial_phys_reset (Interstitial, Model) + ! + implicit none + ! + class(GFS_interstitial_type) :: Interstitial + type(GFS_control_type), intent(in) :: Model + ! + Interstitial%adjsfculw_land = clear_val + Interstitial%adjsfculw_ice = clear_val + Interstitial%adjsfculw_water = clear_val + Interstitial%adjnirbmd = clear_val + Interstitial%adjnirbmu = clear_val + Interstitial%adjnirdfd = clear_val + Interstitial%adjnirdfu = clear_val + Interstitial%adjvisbmd = clear_val + Interstitial%adjvisbmu = clear_val + Interstitial%adjvisdfu = clear_val + Interstitial%adjvisdfd = clear_val + Interstitial%bexp1d = clear_val + Interstitial%cd = clear_val + Interstitial%cd_ice = Model%huge + Interstitial%cd_land = Model%huge + Interstitial%cd_water = Model%huge + Interstitial%cdq = clear_val + Interstitial%cdq_ice = Model%huge + Interstitial%cdq_land = Model%huge + Interstitial%cdq_water = Model%huge + Interstitial%chh_ice = Model%huge + Interstitial%chh_land = Model%huge + Interstitial%chh_water = Model%huge + Interstitial%cld1d = clear_val + Interstitial%cldf = clear_val + Interstitial%clw = clear_val + Interstitial%clw(:,:,2) = -999.9 + Interstitial%clx = clear_val + Interstitial%cmm_ice = Model%huge + Interstitial%cmm_land = Model%huge + Interstitial%cmm_water = Model%huge + Interstitial%cnvc = clear_val + Interstitial%cnvw = clear_val + Interstitial%ctei_r = clear_val + Interstitial%ctei_rml = clear_val + Interstitial%cumabs = clear_val + Interstitial%dd_mf = clear_val + Interstitial%del = clear_val + Interstitial%del_gz = clear_val + Interstitial%dlength = clear_val + Interstitial%dqdt = clear_val + Interstitial%dqsfc1 = clear_val + Interstitial%drain = clear_val + Interstitial%dt_mf = clear_val + Interstitial%dtdt = clear_val + Interstitial%dtsfc1 = clear_val + Interstitial%dtzm = clear_val + Interstitial%dudt = clear_val + Interstitial%dusfcg = clear_val + Interstitial%dusfc1 = clear_val + Interstitial%dvdftra = clear_val + Interstitial%dvdt = clear_val + Interstitial%dvsfcg = clear_val + Interstitial%dvsfc1 = clear_val + Interstitial%elvmax = clear_val + Interstitial%ep1d = clear_val + Interstitial%ep1d_ice = Model%huge + Interstitial%ep1d_land = Model%huge + Interstitial%ep1d_water = Model%huge + Interstitial%evap_ice = Model%huge + Interstitial%evap_land = Model%huge + Interstitial%evap_water = Model%huge + Interstitial%evbs = clear_val + Interstitial%evcw = clear_val + Interstitial%pah = clear_val + Interstitial%ecan = clear_val + Interstitial%etran = clear_val + Interstitial%edir = clear_val + Interstitial%ffhh_ice = Model%huge + Interstitial%ffhh_land = Model%huge + Interstitial%ffhh_water = Model%huge + Interstitial%fh2 = clear_val + Interstitial%fh2_ice = Model%huge + Interstitial%fh2_land = Model%huge + Interstitial%fh2_water = Model%huge + Interstitial%flag_cice = .false. + Interstitial%flag_guess = .false. + Interstitial%flag_iter = .true. + Interstitial%ffmm_ice = Model%huge + Interstitial%ffmm_land = Model%huge + Interstitial%ffmm_water = Model%huge + Interstitial%fm10 = clear_val + Interstitial%fm10_ice = Model%huge + Interstitial%fm10_land = Model%huge + Interstitial%fm10_water = Model%huge + Interstitial%frland = clear_val + Interstitial%fscav = clear_val + Interstitial%fswtr = clear_val + Interstitial%gabsbdlw = clear_val + Interstitial%gabsbdlw_ice = clear_val + Interstitial%gabsbdlw_land = clear_val + Interstitial%gabsbdlw_water = clear_val + Interstitial%gamma = clear_val + Interstitial%gamq = clear_val + Interstitial%gamt = clear_val + Interstitial%gflx = clear_val + Interstitial%gflx_ice = clear_val + Interstitial%gflx_land = clear_val + Interstitial%gflx_water = clear_val + Interstitial%gwdcu = clear_val + Interstitial%gwdcv = clear_val + Interstitial%zvfun = clear_val + Interstitial%hffac = clear_val + Interstitial%hflxq = clear_val + Interstitial%hflx_ice = Model%huge + Interstitial%hflx_land = Model%huge + Interstitial%hflx_water = Model%huge + Interstitial%dry = .false. + Interstitial%icy = .false. + Interstitial%lake = .false. + Interstitial%use_flake = .false. + Interstitial%ocean = .false. + Interstitial%islmsk = 0 + Interstitial%islmsk_cice = 0 + Interstitial%wet = .false. + Interstitial%kbot = Model%levs + Interstitial%kcnv = 0 + Interstitial%kinver = Model%levs + Interstitial%kpbl = 0 + Interstitial%ktop = 1 + Interstitial%oa4 = clear_val + Interstitial%oc = clear_val + Interstitial%prcpmp = clear_val + Interstitial%prnum = clear_val + Interstitial%qss_ice = Model%huge + Interstitial%qss_land = Model%huge + Interstitial%qss_water = Model%huge + Interstitial%raincd = clear_val + Interstitial%raincs = clear_val + Interstitial%rainmcadj = clear_val + Interstitial%rainp = clear_val + Interstitial%rb = clear_val + Interstitial%rb_ice = Model%huge + Interstitial%rb_land = Model%huge + Interstitial%rb_water = Model%huge + Interstitial%rhc = clear_val + Interstitial%runoff = clear_val + Interstitial%save_q = clear_val + Interstitial%save_t = clear_val + Interstitial%save_tcp = clear_val + Interstitial%save_u = clear_val + Interstitial%save_v = clear_val + Interstitial%sbsno = clear_val + Interstitial%sigma = clear_val + Interstitial%sigmaf = clear_val + Interstitial%sigmafrac = clear_val + Interstitial%sigmatot = clear_val + Interstitial%snowc = clear_val + Interstitial%snohf = clear_val + Interstitial%snowmt = clear_val + Interstitial%stress = clear_val + Interstitial%stress_ice = Model%huge + Interstitial%stress_land = Model%huge + Interstitial%stress_water = Model%huge + Interstitial%theta = clear_val + Interstitial%tprcp_ice = Model%huge + Interstitial%tprcp_land = Model%huge + Interstitial%tprcp_water = Model%huge + Interstitial%trans = clear_val + Interstitial%tseal = clear_val + Interstitial%tsfc_water = Model%huge + Interstitial%tsurf_ice = Model%huge + Interstitial%tsurf_land = Model%huge + Interstitial%tsurf_water = Model%huge + Interstitial%ud_mf = clear_val + Interstitial%uustar_ice = Model%huge + Interstitial%uustar_land = Model%huge + Interstitial%uustar_water = Model%huge + Interstitial%vdftra = clear_val + Interstitial%vegf1d = clear_val + Interstitial%lndp_vgf = clear_val + Interstitial%wcbmax = clear_val + Interstitial%wind = Model%huge + Interstitial%work1 = clear_val + Interstitial%work2 = clear_val + Interstitial%work3 = clear_val + Interstitial%xcosz = clear_val + Interstitial%xlai1d = clear_val + Interstitial%xmu = clear_val + Interstitial%z01d = clear_val + Interstitial%zt1d = clear_val + Interstitial%ztmax_ice = clear_val + Interstitial%ztmax_land = clear_val + Interstitial%ztmax_water = clear_val + +! UGWP common + Interstitial%tau_mtb = clear_val + Interstitial%tau_ogw = clear_val + Interstitial%tau_tofd = clear_val + Interstitial%tau_ngw = clear_val + Interstitial%tau_oss = clear_val + Interstitial%dudt_mtb = clear_val + Interstitial%dudt_tms = clear_val + Interstitial%zmtb = clear_val + Interstitial%zlwb = clear_val + Interstitial%zogw = clear_val + Interstitial%zngw = clear_val + +! CIRES UGWP v1 + if (Model%do_ugwp_v1) then + Interstitial%dudt_ngw = clear_val + Interstitial%dvdt_ngw = clear_val + Interstitial%dtdt_ngw = clear_val + Interstitial%kdis_ngw = clear_val + end if + +!-- GSL drag suite + if (Model%gwd_opt==3 .or. Model%gwd_opt==33 .or. & + Model%gwd_opt==2 .or. Model%gwd_opt==22) then + Interstitial%varss = clear_val + Interstitial%ocss = clear_val + Interstitial%oa4ss = clear_val + Interstitial%clxss = clear_val + end if +! + ! Reset fields that are conditional on physics choices + if (Model%imp_physics == Model%imp_physics_gfdl .or. Model%imp_physics == Model%imp_physics_thompson & + .or. Model%imp_physics == Model%imp_physics_nssl & + ) then + Interstitial%graupelmp = clear_val + Interstitial%icemp = clear_val + Interstitial%rainmp = clear_val + Interstitial%snowmp = clear_val + else if (Model%imp_physics == Model%imp_physics_mg) then + Interstitial%ncgl = clear_val + Interstitial%ncpr = clear_val + Interstitial%ncps = clear_val + Interstitial%qgl = clear_val + Interstitial%qrn = clear_val + Interstitial%qsnw = clear_val + Interstitial%qlcn = clear_val + Interstitial%qicn = clear_val + Interstitial%w_upi = clear_val + Interstitial%cf_upi = clear_val + Interstitial%cnv_mfd = clear_val + Interstitial%cnv_dqldt = clear_val + Interstitial%clcn = clear_val + Interstitial%cnv_fice = clear_val + Interstitial%cnv_ndrop = clear_val + Interstitial%cnv_nice = clear_val + end if + if (Model%do_shoc) then + Interstitial%qrn = clear_val + Interstitial%qsnw = clear_val + ! DH* updated version of shoc from May 22 2019 doesn't use qgl? remove? + Interstitial%qgl = clear_val + ! *DH + Interstitial%ncpi = clear_val + Interstitial%ncpl = clear_val + end if + if (Model%lsm == Model%lsm_noahmp) then + Interstitial%t2mmp = clear_val + Interstitial%q2mp = clear_val + end if + ! + ! Set flag for resetting maximum hourly output fields + Interstitial%max_hourly_reset = mod(Model%kdt-1, nint(Model%avg_max_length/Model%dtp)) == 0 + ! Use same logic in UFS to reset Thompson extended diagnostics + Interstitial%ext_diag_thompson_reset = Interstitial%max_hourly_reset + ! + ! Set flag for resetting radar reflectivity calculation + if (Model%nsradar_reset<0) then + Interstitial%radar_reset = .true. + else + Interstitial%radar_reset = mod(Model%kdt-1, nint(Model%nsradar_reset/Model%dtp)) == 0 + end if + ! + end subroutine gfs_interstitial_phys_reset + +!----------------------- +! GFDL_interstitial_type +!----------------------- + + subroutine gfdl_interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd, jed, npz, ng, & + dt_atmos, p_split, k_split, zvir, p_ref, ak, bk, & + do_ql, do_qi, do_qr, do_qs, do_qg, do_qa, & + kappa, hydrostatic, do_sat_adj, & + delp, delz, area, peln, phis, pkz, pt, & + qvi, qv, ql, qi, qr, qs, qg, qc, q_con, & + nthreads, nwat, ngas, rilist, cpilist, mpirank, mpiroot) ! implicit none ! - class(CCPP_interstitial_type) :: Interstitial + class(GFDL_interstitial_type) :: Interstitial integer, intent(in) :: is integer, intent(in) :: ie integer, intent(in) :: isd @@ -190,7 +1723,7 @@ subroutine interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd, jed Interstitial%ng = ng Interstitial%npz = npz Interstitial%npzp1 = npz+1 - ! Set up links from CCPP_interstitial DDT to ATM DDT + ! Set up links from GFDL_interstitial DDT to ATM DDT Interstitial%delp => delp Interstitial%delz => delz Interstitial%area => area @@ -240,18 +1773,18 @@ subroutine interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd, jed Interstitial%mpiroot = mpiroot ! ! Calculate vertical pressure levels - call interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) + call gfdl_interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) ! ! Reset all other variables call Interstitial%reset() ! - end subroutine interstitial_create + end subroutine gfdl_interstitial_create - subroutine interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) + subroutine gfdl_interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) implicit none - class(CCPP_interstitial_type) :: Interstitial + class(GFDL_interstitial_type) :: Interstitial integer, intent(in) :: npz real(kind_dyn), intent(in) :: p_ref real(kind_dyn), intent(in) :: ak(:) @@ -275,13 +1808,13 @@ subroutine interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, Interstitial%kmp = k if ( Interstitial%pfull(k) > 10.E2 ) exit enddo - end subroutine interstitital_calculate_pressure_levels + end subroutine gfdl_interstitital_calculate_pressure_levels - subroutine interstitial_reset (Interstitial) + subroutine gfdl_interstitial_reset (Interstitial) ! implicit none ! - class(CCPP_interstitial_type) :: Interstitial + class(GFDL_interstitial_type) :: Interstitial ! Interstitial%cappa = 0.0 Interstitial%dtdt = 0.0 @@ -291,13 +1824,13 @@ subroutine interstitial_reset (Interstitial) Interstitial%te0_2d = 0.0 Interstitial%te0 = 0.0 ! - end subroutine interstitial_reset + end subroutine gfdl_interstitial_reset - subroutine interstitial_print(Interstitial) + subroutine gfdl_interstitial_print(Interstitial) ! implicit none ! - class(CCPP_interstitial_type) :: Interstitial + class(GFDL_interstitial_type) :: Interstitial ! ! Print static variables write (0,'(a)') 'Interstitial_print' @@ -359,7 +1892,7 @@ subroutine interstitial_print(Interstitial) write (0,*) 'Interstitial%nthreads = ', Interstitial%nthreads write (0,*) 'Interstitial_print: end' ! - end subroutine interstitial_print + end subroutine gfdl_interstitial_print end module CCPP_typedefs diff --git a/ccpp/data/CCPP_typedefs.meta b/ccpp/data/CCPP_typedefs.meta index 9dfabe739f..217889784c 100644 --- a/ccpp/data/CCPP_typedefs.meta +++ b/ccpp/data/CCPP_typedefs.meta @@ -1,10 +1,2973 @@ [ccpp-table-properties] - name = CCPP_interstitial_type + name = GFS_interstitial_type type = ddt dependencies = [ccpp-arg-table] - name = CCPP_interstitial_type + name = GFS_interstitial_type + type = ddt +[adjsfculw_water] + 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 + 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 + long_name = surface upwelling longwave flux at current time over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjnirbmd] + standard_name = surface_downwelling_direct_near_infrared_shortwave_flux + long_name = surface downwelling beam near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjnirbmu] + standard_name = surface_upwelling_direct_near_infrared_shortwave_flux + long_name = surface upwelling beam near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjnirdfd] + standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux + long_name = surface downwelling diffuse near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjnirdfu] + standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux + long_name = surface upwelling diffuse near-infrared shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjvisbmd] + standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux + long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjvisbmu] + standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux + long_name = surface upwelling beam ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjvisdfu] + standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux + long_name = surface upwelling diffuse ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[adjvisdfd] + standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux + long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[aerodp] + standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles + long_name = vertical integrated optical depth for various aerosol species + units = none + dimensions = (horizontal_loop_extent,number_of_species_for_aerosol_optical_depth) + type = real + kind = kind_phys +[alb1d] + standard_name = surface_albedo_perturbation + long_name = surface albedo perturbation + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[alpha] + standard_name = cloud_overlap_decorrelation_parameter + long_name = cloud overlap decorrelation parameter for RRTMG (but not for RRTMGP) + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[bexp1d] + standard_name = perturbation_of_soil_type_b_parameter + long_name = perturbation of soil type "b" parameter + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cd] + standard_name = surface_drag_coefficient_for_momentum_in_air + long_name = surface exchange coeff for momentum + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cd_water] + standard_name = surface_drag_coefficient_for_momentum_in_air_over_water + long_name = surface exchange coeff for momentum over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cd_land] + standard_name = surface_drag_coefficient_for_momentum_in_air_over_land + long_name = surface exchange coeff for momentum over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cd_ice] + standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice + long_name = surface exchange coeff for momentum over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cdq] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air + long_name = surface exchange coeff heat & moisture + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cdq_water] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water + long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cdq_land] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land + long_name = surface exchange coeff heat & moisture over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cdq_ice] + standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice + long_name = surface exchange coeff heat & moisture over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[chh_water] + standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water + long_name = thermal exchange coefficient over water + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[chh_land] + standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land + long_name = thermal exchange coefficient over land + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[chh_ice] + standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice + long_name = thermal exchange coefficient over ice + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cf_upi] + standard_name = convective_cloud_fraction_for_microphysics + long_name = convective cloud fraction for microphysics + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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 + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cldsa] + standard_name = cloud_area_fraction_for_radiation + long_name = fraction of clouds for low, middle, high, total and BL + units = frac + dimensions = (horizontal_loop_extent,5) + type = real + kind = kind_phys +[cldtaulw] + standard_name = cloud_optical_depth_layers_at_10mu_band + long_name = approx 10mu band layer cloud optical depth + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[cldtausw] + standard_name = cloud_optical_depth_layers_at_0p55mu_band + long_name = approx .55mu band layer cloud optical depth + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[cld1d] + standard_name = cloud_work_function + long_name = cloud work function + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[clouds(:,:,1)] + standard_name = total_cloud_fraction + long_name = layer total cloud fraction + units = frac + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,2)] + standard_name = cloud_liquid_water_path + long_name = layer cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,3)] + standard_name = mean_effective_radius_for_liquid_cloud + long_name = mean effective radius for liquid cloud + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,4)] + standard_name = cloud_ice_water_path + long_name = layer cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,5)] + standard_name = mean_effective_radius_for_ice_cloud + long_name = mean effective radius for ice cloud + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,6)] + standard_name = cloud_rain_water_path + long_name = cloud rain water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,7)] + standard_name = mean_effective_radius_for_rain_drop + long_name = mean effective radius for rain drop + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,8)] + standard_name = cloud_snow_water_path + long_name = cloud snow water path + units = g m-2 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clouds(:,:,9)] + standard_name = mean_effective_radius_for_snow_flake + long_name = mean effective radius for snow flake + units = um + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[clw] + 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_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_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_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_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 height_above_mean_sea_level higher than critical height + units = frac + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys +[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 height_above_mean_sea_level higher than critical height small scale + units = frac + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + 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 + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cmm_land] + standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land + long_name = momentum exchange coefficient over land + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cmm_ice] + standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice + long_name = momentum exchange coefficient over ice + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cnv_dqldt] + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_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_layer_dimension) + type = real + kind = kind_phys +[ctei_r] + standard_name = cloud_top_entrainment_instability_value + long_name = cloud top entrainment instability value + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ctei_rml] + standard_name = grid_sensitive_critical_cloud_top_entrainment_instability_criteria + long_name = grid sensitive critical cloud top entrainment instability criteria + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[cumabs] + standard_name = maximum_column_heating_rate + long_name = maximum heating rate in column + units = K s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dd_mf] + standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux + long_name = (downdraft mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys +[de_lgth] + standard_name = cloud_decorrelation_length + long_name = cloud decorrelation length + units = km + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[del] + standard_name = air_pressure_difference_between_midlayers + long_name = air pressure difference between midlayers + units = Pa + 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_interface_dimension) + type = real + kind = kind_phys +[delr] + standard_name = layer_pressure_thickness_for_radiation + long_name = layer pressure thickness on radiation levels + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[dlength] + standard_name = characteristic_grid_length_scale + long_name = representative horizontal length scale of grid box + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dqdt] + 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_layer_dimension,number_of_tracers) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + active = (index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array > 0) +[dqdt(:,:,index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array)] + standard_name = tendency_of_cloud_condensation_nuclei_number_concentration_due_to_model_physics + long_name = number concentration of cloud condensation nuclei tendency due to model physics + units = kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = ( index_of_cloud_condensation_nuclei_number_concentration_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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[dqsfc1] + standard_name = instantaneous_surface_upward_latent_heat_flux + long_name = surface upward latent heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[drain] + standard_name = subsurface_runoff_flux + long_name = subsurface runoff flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dtdt] + 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_layer_dimension) + type = real + kind = kind_phys +[dtsfc1] + standard_name = instantaneous_surface_upward_sensible_heat_flux + long_name = surface upward sensible heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dtzm] + standard_name = mean_change_over_depth_in_sea_water_temperature + long_name = mean of dT(z) (zsea1 to zsea2) + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dt_mf] + standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux + long_name = (detrainment mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys +[dudt] + 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_layer_dimension) + type = real + kind = kind_phys +[dusfcg] + standard_name = instantaneous_x_stress_due_to_gravity_wave_drag + long_name = zonal surface stress due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dusfc1] + standard_name = instantaneous_surface_x_momentum_flux + long_name = x momentum flux + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dvdftra] + 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_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys +[dvdt] + 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_layer_dimension) + type = real + kind = kind_phys +[dvsfcg] + standard_name = instantaneous_y_stress_due_to_gravity_wave_drag + long_name = meridional surface stress due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dvsfc1] + standard_name = instantaneous_surface_y_momentum_flux + long_name = y momentum flux + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dzlyr] + standard_name = layer_thickness_for_radiation + long_name = layer thickness on radiation levels + units = km + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[elvmax] + standard_name = maximum_subgrid_orography + long_name = maximum of subgrid height_above_mean_sea_level + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ep1d] + standard_name = surface_upward_potential_latent_heat_flux + long_name = surface upward potential latent heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ep1d_water] + standard_name = surface_upward_potential_latent_heat_flux_over_water + long_name = surface upward potential latent heat flux over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ep1d_land] + standard_name = surface_upward_potential_latent_heat_flux_over_land + long_name = surface upward potential latent heat flux over land + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ep1d_ice] + standard_name = surface_upward_potential_latent_heat_flux_over_ice + long_name = surface upward potential latent heat flux over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[evap_water] + standard_name = kinematic_surface_upward_latent_heat_flux_over_water + long_name = kinematic surface upward latent heat flux over water + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[evap_land] + standard_name = kinematic_surface_upward_latent_heat_flux_over_land + long_name = kinematic surface upward latent heat flux over land + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[evap_ice] + standard_name = kinematic_surface_upward_latent_heat_flux_over_ice + long_name = kinematic surface upward latent heat flux over ice + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[evbs] + standard_name = soil_upward_latent_heat_flux + long_name = soil upward latent heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[evcw] + standard_name = canopy_upward_latent_heat_flux + long_name = canopy upward latent heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[pah] + standard_name = total_precipitation_advected_heat + long_name = precipitation advected heat - total + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ecan] + standard_name = evaporation_of_intercepted_water + long_name = evaporation of intercepted water + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[etran] + standard_name = transpiration_rate + long_name = transpiration rate + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[edir] + standard_name = soil_surface_evaporation_rate + long_name = soil surface evaporation rate + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[faerlw] + standard_name = aerosol_optical_properties_for_longwave_bands_01_16 + long_name = aerosol optical properties for longwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation,number_of_aerosol_output_fields_for_longwave_radiation) + type = real + kind = kind_phys +[faerlw(:,:,:,1)] + standard_name = aerosol_optical_depth_for_longwave_bands_01_16 + long_name = aerosol optical depth for longwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) + type = real + kind = kind_phys +[faerlw(:,:,:,2)] + standard_name = 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,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) + type = real + kind = kind_phys +[faerlw(:,:,:,3)] + standard_name = aerosol_asymmetry_parameter_for_longwave_bands_01_16 + long_name = aerosol asymmetry parameter for longwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) + type = real + kind = kind_phys +[faersw] + standard_name = aerosol_optical_properties_for_shortwave_bands_01_16 + long_name = aerosol optical properties for shortwave bands 01-16 + units = mixed + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation,number_of_aerosol_output_fields_for_shortwave_radiation) + type = real + kind = kind_phys +[faersw(:,:,:,1)] + standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 + long_name = aerosol optical depth for shortwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) + type = real + kind = kind_phys +[faersw(:,:,:,2)] + standard_name = 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,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) + type = real + kind = kind_phys +[faersw(:,:,:,3)] + standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 + long_name = aerosol asymmetry parameter for shortwave bands 01-16 + units = none + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) + type = real + kind = kind_phys +[ffhh_water] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_water + long_name = Monin-Obukhov similarity function for heat over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ffhh_land] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_land + long_name = Monin-Obukhov similarity function for heat over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ffhh_ice] + standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice + long_name = Monin-Obukhov similarity function for heat over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fh2] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m + long_name = Monin-Obukhov similarity parameter for heat at 2m + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fh2_water] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water + long_name = Monin-Obukhov similarity parameter for heat at 2m over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fh2_land] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land + long_name = Monin-Obukhov similarity parameter for heat at 2m over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fh2_ice] + standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice + long_name = Monin-Obukhov similarity parameter for heat at 2m over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[flag_cice] + standard_name = flag_for_cice + long_name = flag for cice + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[flag_guess] + standard_name = flag_for_guess_run + long_name = flag for guess run + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[flag_iter] + standard_name = flag_for_iteration + long_name = flag for iteration + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[ffmm_water] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water + long_name = Monin-Obukhov similarity function for momentum over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ffmm_land] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land + long_name = Monin-Obukhov similarity function for momentum over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ffmm_ice] + standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice + long_name = Monin-Obukhov similarity function for momentum over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fm10] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m + long_name = Monin-Obukhov similarity parameter for momentum at 10m + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fm10_water] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water + long_name = Monin-Obukhov similarity parameter for momentum at 10m over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fm10_land] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land + long_name = Monin-Obukhov similarity parameter for momentum at 10m over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fm10_ice] + standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice + long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[frain] + standard_name = dynamics_to_physics_timestep_ratio + long_name = ratio of dynamics timestep to physics timestep + units = none + dimensions = () + type = real + kind = kind_phys +[frland] + standard_name = land_area_fraction_for_microphysics + long_name = land area fraction used in microphysics schemes + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[fscav] + standard_name = fraction_of_tracer_scavenged + long_name = fraction of the tracer (aerosols) that is scavenged by convection + units = km-1 + dimensions = (number_of_tracers_scavenged) + type = real + kind = kind_phys +[fswtr] + standard_name = fraction_of_cloud_top_water_scavenged + long_name = fraction of the tracer (cloud top water) that is scavenged by convection + units = km-1 + dimensions = (number_of_tracers_scavenged) + type = real + kind = kind_phys +[gabsbdlw] + standard_name = surface_downwelling_longwave_flux_absorbed_by_ground + long_name = total sky surface downward longwave flux absorbed by the ground + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gabsbdlw_water] + standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_water + long_name = total sky surface downward longwave flux absorbed by the ground over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gabsbdlw_land] + standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land + long_name = total sky surface downward longwave flux absorbed by the ground over land + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gabsbdlw_ice] + standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_ice + long_name = total sky surface downward longwave flux absorbed by the ground over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gamma] + standard_name = anisotropy_of_subgrid_orography + long_name = anisotropy of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gamq] + standard_name = countergradient_mixing_term_for_water_vapor + long_name = countergradient mixing term for water vapor + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gamt] + standard_name = countergradient_mixing_term_for_temperature + long_name = countergradient mixing term for temperature + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gasvmr(:,:,1)] + standard_name = volume_mixing_ratio_of_co2 + long_name = volume mixing ratio co2 + 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_of_n2o + long_name = volume mixing ratio no2 + 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_of_ch4 + long_name = volume mixing ratio ch4 + 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_of_o2 + long_name = volume mixing ratio o2 + 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_of_co + long_name = volume mixing ratio co + 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_of_cfc11 + long_name = volume mixing ratio cfc11 + 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_of_cfc12 + long_name = volume mixing ratio cfc12 + 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_of_cfc22 + long_name = volume mixing ratio cfc22 + 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_of_ccl4 + long_name = volume mixing ratio ccl4 + 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_of_cfc113 + long_name = volume mixing ratio cfc113 + units = m3 m-3 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[gflx] + standard_name = upward_heat_flux_in_soil + long_name = soil heat flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gflx_water] + standard_name = upward_heat_flux_in_soil_over_water + long_name = soil heat flux over water + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gflx_land] + standard_name = upward_heat_flux_in_soil_over_land + long_name = soil heat flux over land + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[gflx_ice] + standard_name = upward_heat_flux_in_soil_over_ice + long_name = soil heat flux over ice + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[graupelmp] + standard_name = lwe_thickness_of_graupel_amount + long_name = explicit graupel fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_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_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_layer_dimension) + type = real + kind = kind_phys +[zvfun] + standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction + long_name = function of surface roughness length and green vegetation fraction + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[hffac] + standard_name = surface_upward_sensible_heat_flux_reduction_factor + long_name = surface upward sensible heat flux reduction factor from canopy heat storage + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[hflxq] + standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation + long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[hflx_water] + standard_name = kinematic_surface_upward_sensible_heat_flux_over_water + long_name = kinematic surface upward sensible heat flux over water + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[hflx_land] + standard_name = kinematic_surface_upward_sensible_heat_flux_over_land + long_name = kinematic surface upward sensible heat flux over land + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[hflx_ice] + standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice + long_name = kinematic surface upward sensible heat flux over ice + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[htlwc] + standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step_and_radiation_levels + long_name = total sky heating rate due to longwave radiation + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[htlw0] + standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels + long_name = clear sky heating rate due to longwave radiation + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[htswc] + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels + long_name = total sky heating rate due to shortwave radiation + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[htsw0] + standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels + long_name = clear sky heating rates due to shortwave radiation + units = K s-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[icemp] + standard_name = lwe_thickness_of_ice_amount + long_name = explicit ice fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_microphysics_scheme) +[dry] + standard_name = flag_nonzero_land_surface_fraction + long_name = flag indicating presence of some land surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[idxday] + standard_name = daytime_points + long_name = daytime points + units = index + dimensions = (horizontal_loop_extent) + type = integer +[icy] + standard_name = flag_nonzero_sea_ice_surface_fraction + long_name = flag indicating presence of some sea ice surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[lake] + standard_name = flag_nonzero_lake_surface_fraction + long_name = flag indicating presence of some lake surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[use_flake] + standard_name = flag_for_using_flake + long_name = flag indicating lake points using flake model + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[ocean] + standard_name = flag_nonzero_ocean_surface_fraction + long_name = flag indicating presence of some ocean surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[ipr] + standard_name = horizontal_index_of_printed_column + long_name = horizontal index of printed column + units = index + dimensions = () + type = integer +[islmsk] + standard_name = sea_land_ice_mask + long_name = sea/land/ice mask (=0/1/2) + units = flag + dimensions = (horizontal_loop_extent) + type = integer +[islmsk_cice] + standard_name = sea_land_ice_mask_cice + long_name = sea/land/ice mask cice (=0/1/2) + units = flag + dimensions = (horizontal_loop_extent) + type = integer +[itc] + 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] + standard_name = flag_nonzero_wet_surface_fraction + long_name = flag indicating presence of some ocean or lake surface area fraction + units = flag + dimensions = (horizontal_loop_extent) + type = logical +[kb] + standard_name = vertical_index_difference_between_layer_and_lower_bound + long_name = vertical index difference between layer and lower bound + units = index + dimensions = () + type = integer +[kbot] + standard_name = vertical_index_at_cloud_base + long_name = vertical index at cloud base + units = index + dimensions = (horizontal_loop_extent) + type = integer +[kcnv] + standard_name = flag_deep_convection + long_name = flag indicating whether convection occurs in column (0 or 1) + units = flag + dimensions = (horizontal_loop_extent) + type = integer +[kd] + standard_name = vertical_index_difference_between_inout_and_local + long_name = vertical index difference between in/out and local + units = index + dimensions = () + type = integer +[kinver] + standard_name = index_of_highest_temperature_inversion + long_name = index of highest temperature inversion + units = index + dimensions = (horizontal_loop_extent) + type = integer +[kpbl] + standard_name = vertical_index_at_top_of_atmosphere_boundary_layer + long_name = vertical index at top atmospheric boundary layer + units = index + dimensions = (horizontal_loop_extent) + type = integer +[kt] + standard_name = vertical_index_difference_between_layer_and_upper_bound + long_name = vertical index difference between layer and upper bound + units = index + dimensions = () + type = integer +[ktop] + standard_name = vertical_index_at_cloud_top + long_name = vertical index at cloud top + units = index + dimensions = (horizontal_loop_extent) + type = integer +[latidxprnt] + standard_name = latitude_index_in_debug_printouts + long_name = latitude index in debug printouts + units = index + dimensions = () + type = integer +[levi] + standard_name = vertical_interface_dimension_interstitial + long_name = vertical interface dimension + units = count + dimensions = () + type = integer +[lmk] + standard_name = adjusted_vertical_layer_dimension_for_radiation + long_name = adjusted number of vertical layers for radiation + units = count + dimensions = () + type = integer +[lmp] + standard_name = adjusted_vertical_level_dimension_for_radiation + long_name = adjusted number of vertical levels for radiation + units = count + dimensions = () + type = integer +[mbota] + standard_name = model_layer_number_at_cloud_base + long_name = vertical indices for low, middle and high cloud bases + units = index + dimensions = (horizontal_loop_extent,3) + type = integer +[mg3_as_mg2] + standard_name = flag_mg3_as_mg2 + long_name = flag for controlling prep for Morrison-Gettelman microphysics + units = flag + dimensions = () + type = logical +[mtopa] + standard_name = model_layer_number_at_cloud_top + long_name = vertical indices for low, middle and high cloud tops + units = index + dimensions = (horizontal_loop_extent,3) + type = integer +[nbdlw] + standard_name = number_of_aerosol_bands_for_longwave_radiation + long_name = number of aerosol bands for longwave radiation + units = count + dimensions = () + type = integer +[nbdsw] + standard_name = number_of_aerosol_bands_for_shortwave_radiation + long_name = number of aerosol bands for shortwave radiation + units = count + dimensions = () + type = integer +[ncgl] + standard_name = local_graupel_number_concentration + long_name = number concentration of graupel local to physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_shoc) +[ncpl] + 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_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_shoc) +[ncpr] + standard_name = local_rain_number_concentration + long_name = number concentration of rain local to physics + units = kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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 + units = count + dimensions = () + type = integer +[nday] + standard_name = daytime_points_dimension + long_name = daytime points dimension + units = count + dimensions = () + type = integer +[nf_aelw] + standard_name = number_of_aerosol_output_fields_for_longwave_radiation + long_name = number of aerosol output fields for longwave radiation + units = count + dimensions = () + type = integer +[nf_aesw] + standard_name = number_of_aerosol_output_fields_for_shortwave_radiation + long_name = number of aerosol output fields for shortwave radiation + units = count + dimensions = () + type = integer +[nn] + standard_name = number_of_tracers_for_convective_transport + long_name = number of tracers for convective transport + units = count + dimensions = () + type = integer +[nsamftrac] + standard_name = number_of_tracers_for_samf + long_name = number of tracers for scale-aware mass flux schemes + units = count + dimensions = () + type = integer +[nscav] + standard_name = number_of_tracers_scavenged + long_name = number of tracers scavenged + units = count + dimensions = () + type = integer +[nspc1] + standard_name = number_of_species_for_aerosol_optical_depth + long_name = number of species for output aerosol optical depth plus total + 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 + units = index + dimensions = () + type = integer +[ntrwx] + standard_name = index_for_rain_water_vertical_diffusion_tracer + long_name = tracer index for rain water in the vertically diffused tracer array + units = index + dimensions = () + type = integer +[ntk] + standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer + long_name = index for turbulent kinetic energy in the convectively transported tracer array + units = index + dimensions = () + type = integer +[ntkev] + standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer + long_name = index for turbulent kinetic energy in the vertically diffused tracer array + units = index + dimensions = () + type = integer +[nvdiff] + standard_name = number_of_vertical_diffusion_tracers + long_name = number of tracers to diffuse vertically + units = count + dimensions = () + type = integer +[oa4] + standard_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 height_above_mean_sea_level small scale + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + 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 height_above_mean_sea_level small scale + units = none + dimensions = (horizontal_loop_extent,4) + type = real + kind = kind_phys + 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 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 height_above_mean_sea_level small scale + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + 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 + units = kg kg-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[otspt] + standard_name = flag_convective_tracer_transport + long_name = flag to enable tracer transport by updrafts/downdrafts[(:,1)] or subsidence [(:,2)] + units = flag + dimensions = (number_of_tracers_plus_one,2) + type = logical +[otsptflag] + standard_name = flag_convective_tracer_transport_interstitial + long_name = flag for interstitial tracer transport + units = flag + dimensions = (number_of_tracers) + type = logical +[oz_coeffp5] + standard_name = number_of_coefficients_in_ozone_forcing_data_plus_five + long_name = number of coefficients in ozone forcing data plus five + units = index + dimensions = () + type = integer +[phys_hydrostatic] + standard_name = flag_for_hydrostatic_heating_from_physics + long_name = flag for use of hydrostatic heating in physics + units = flag + dimensions = () + type = logical +[plvl] + standard_name = air_pressure_at_interface_for_radiation_in_hPa + long_name = air pressure at vertical interface for radiation calculation + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) + type = real + kind = kind_phys +[plyr] + standard_name = air_pressure_at_layer_for_radiation_in_hPa + long_name = air pressure at vertical layer for radiation calculation + units = hPa + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[prnum] + standard_name = prandtl_number + long_name = turbulent Prandtl number + units = none + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys +[q2mp] + standard_name = specific_humidity_at_2m_from_noahmp + long_name = 2 meter specific humidity from noahmp + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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 + units = kg kg-1 + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[qrn] + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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 + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[qss_water] + standard_name = surface_specific_humidity_over_water + long_name = surface air saturation specific humidity over water + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[qss_land] + standard_name = surface_specific_humidity_over_land + long_name = surface air saturation specific humidity over land + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[qss_ice] + standard_name = surface_specific_humidity_over_ice + long_name = surface air saturation specific humidity over ice + units = kg kg-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[radar_reset] + standard_name = flag_for_resetting_radar_reflectivity_calculation + long_name = flag for resetting radar reflectivity calculation + units = flag + dimensions = () + type = logical +[raddt] + standard_name = time_step_for_radiation + long_name = radiation time step + units = s + dimensions = () + type = real + kind = kind_phys +[raincd] + standard_name = lwe_thickness_of_deep_convective_precipitation_amount + long_name = deep convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[raincs] + standard_name = lwe_thickness_of_shallow_convective_precipitation_amount + long_name = shallow convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[rainmcadj] + standard_name = lwe_thickness_of_moist_convective_adj_precipitation_amount + long_name = adjusted moist convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[rainmp] + standard_name = lwe_thickness_of_explicit_rain_amount + long_name = explicit rain on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_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_layer_dimension) + type = real + kind = kind_phys +[rb] + standard_name = bulk_richardson_number_at_lowest_model_level + long_name = bulk Richardson number at the surface + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[rb_water] + standard_name = bulk_richardson_number_at_lowest_model_level_over_water + long_name = bulk Richardson number at the surface over water + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[rb_land] + standard_name = bulk_richardson_number_at_lowest_model_level_over_land + long_name = bulk Richardson number at the surface over land + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[rb_ice] + standard_name = bulk_richardson_number_at_lowest_model_level_over_ice + long_name = bulk Richardson number at the surface over ice + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[max_hourly_reset] + standard_name = flag_reset_maximum_hourly_fields + long_name = flag for resetting maximum hourly fields + units = flag + dimensions = () + type = logical +[ext_diag_thompson_reset] + standard_name = flag_reset_extended_diagnostics_output_arrays_from_thompson_microphysics + long_name = flag for resetting extended diagnostics output arrays from thompson microphysics + units = flag + dimensions = () + type = logical +[rhc] + standard_name = critical_relative_humidity + long_name = critical relative humidity + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys +[rho1] + standard_name = air_density_at_lowest_model_layer + long_name = air density at lowest model layer + units = kg m-3 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[runoff] + standard_name = surface_runoff_flux + long_name = surface runoff flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_layer_dimension) + type = real + kind = kind_phys +[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_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_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_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_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_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_layer_dimension) + type = real + kind = kind_phys +[sbsno] + standard_name = snow_deposition_sublimation_upward_latent_heat_flux + long_name = latent heat flux from snow depo/subl + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[scmpsw] + standard_name = components_of_surface_downward_shortwave_fluxes + long_name = derived type for special components of surface downward shortwave fluxes + units = W m-2 + dimensions = (horizontal_loop_extent) + type = cmpfsw_type +[sfcalb] + standard_name = surface_albedo_components + long_name = surface albedo IR/UV/VIS components + units = frac + dimensions = (horizontal_loop_extent,number_of_components_for_surface_albedo) + type = real + kind = kind_phys +[sfcalb(:,1)] + standard_name = surface_albedo_due_to_near_IR_direct + long_name = surface albedo due to near IR direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sfcalb(:,2)] + standard_name = surface_albedo_due_to_near_IR_diffused + long_name = surface albedo due to near IR diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sfcalb(:,3)] + standard_name = surface_albedo_due_to_UV_and_VIS_direct + long_name = surface albedo due to UV+VIS direct beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sfcalb(:,4)] + standard_name = surface_albedo_due_to_UV_and_VIS_diffused + long_name = surface albedo due to UV+VIS diffused beam + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sigma] + standard_name = slope_of_subgrid_orography + long_name = slope of subgrid height_above_mean_sea_level + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sigmaf] + standard_name = bounded_vegetation_area_fraction + long_name = areal fractional cover of green vegetation bounded on the bottom + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sigmafrac] + standard_name = convective_updraft_area_fraction + long_name = convective updraft area fraction + units = frac + 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_layer_dimension) + type = real + kind = kind_phys +[skip_macro] + standard_name = flag_skip_macro + long_name = flag to skip cloud macrophysics in Morrison scheme + units = flag + dimensions = () + type = logical +[snowc] + standard_name = surface_snow_area_fraction + long_name = surface snow area fraction + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[snohf] + standard_name = snow_freezing_rain_upward_latent_heat_flux + long_name = latent heat flux due to snow and frz rain + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[snowmp] + standard_name = lwe_thickness_of_snow_amount + long_name = explicit snow fall on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_microphysics_scheme) +[snowmt] + standard_name = surface_snow_melt + long_name = snow melt during timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[stress] + standard_name = surface_wind_stress + long_name = surface wind stress + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[stress_water] + standard_name = surface_wind_stress_over_water + long_name = surface wind stress over water + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[stress_land] + standard_name = surface_wind_stress_over_land + long_name = surface wind stress over land + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[stress_ice] + standard_name = surface_wind_stress_over_ice + long_name = surface wind stress over ice + units = m2 s-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[t2mmp] + standard_name = temperature_at_2m_from_noahmp + long_name = 2 meter temperature from noahmp + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + 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 + units = degree + 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 + units = K + dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) + type = real + kind = kind_phys +[tlyr] + standard_name = air_temperature_at_layer_for_radiation + long_name = air temperature at vertical layer for radiation calculation + units = K + dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) + type = real + kind = kind_phys +[tprcp_water] + standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water + long_name = total precipitation amount in each time step over water + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tprcp_land] + standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land + long_name = total precipitation amount in each time step over land + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tprcp_ice] + standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice + long_name = total precipitation amount in each time step over ice + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tracers_start_index] + standard_name = start_index_of_other_tracers + long_name = beginning index of the non-water tracer species + units = index + dimensions = () + type = integer +[tracers_total] + standard_name = number_of_total_tracers + long_name = total number of tracers + units = count + dimensions = () + type = integer +[trans_aero] + standard_name = flag_for_aerosol_convective_transport_and_PBL_diffusion + long_name = flag for aerosol convective transport and PBL diffusion + units = flag + dimensions = () + type = logical +[trans] + standard_name = transpiration_flux + long_name = total plant transpiration rate + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tseal] + standard_name = surface_skin_temperature_for_nsst + long_name = ocean surface skin temperature + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tsfa] + standard_name = surface_air_temperature_for_radiation + long_name = lowest model layer air temperature for radiation + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tsfc_water] + 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 +[tsfg] + standard_name = surface_ground_temperature_for_radiation + long_name = surface ground temperature for radiation + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tsurf_water] + standard_name = surface_skin_temperature_after_iteration_over_water + long_name = surface skin temperature after iteration over water + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tsurf_land] + standard_name = surface_skin_temperature_after_iteration_over_land + long_name = surface skin temperature after iteration over land + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tsurf_ice] + standard_name = surface_skin_temperature_after_iteration_over_ice + long_name = surface skin temperature after iteration over ice + units = K + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tracers_water] + standard_name = number_of_water_tracers + long_name = number of water-related tracers + units = count + dimensions = () + type = integer +[ud_mf] + standard_name = instantaneous_atmosphere_updraft_convective_mass_flux + long_name = (updraft mass flux) * delt + units = kg m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys +[uustar_water] + standard_name = surface_friction_velocity_over_water + long_name = surface friction velocity over water + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[uustar_land] + standard_name = surface_friction_velocity_over_land + long_name = surface friction velocity over land + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[uustar_ice] + standard_name = surface_friction_velocity_over_ice + long_name = surface friction velocity over ice + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[vdftra] + standard_name = vertically_diffused_tracer_concentration + long_name = tracer concentration diffused by PBL scheme + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys +[lndp_vgf] + standard_name = magnitude_of_perturbation_of_vegetation_fraction + long_name = magnitude of perturbation of vegetation fraction + units = frac + dimensions = () + type = real + kind = kind_phys +[vegf1d] + standard_name = perturbation_of_vegetation_fraction + long_name = perturbation of vegetation fraction + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[w_upi] + standard_name = vertical_velocity_for_updraft + long_name = vertical velocity for updraft + units = m s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + 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 + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[wind] + standard_name = wind_speed_at_lowest_model_layer + long_name = wind speed at lowest model level + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[work1] + standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes + long_name = grid size related coefficient used in scale-sensitive schemes + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[work2] + standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement + long_name = complement to work1 + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[work3] + standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer + long_name = Exner function ratio bt midlayer and interface at 1st layer + units = ratio + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[xcosz] + standard_name = instantaneous_cosine_of_zenith_angle + long_name = cosine of zenith angle at current time + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[xlai1d] + standard_name = perturbation_of_leaf_area_index + long_name = perturbation of leaf area index + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[xmu] + standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes + long_name = zenith angle temporal adjustment factor for shortwave + units = none + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[z01d] + standard_name = perturbation_of_momentum_roughness_length + long_name = perturbation of momentum roughness length + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ztmax_water] + standard_name = bounded_surface_roughness_length_for_heat_over_water + long_name = bounded surface roughness length for heat over water + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ztmax_land] + standard_name = bounded_surface_roughness_length_for_heat_over_land + long_name = bounded surface roughness length for heat over land + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[ztmax_ice] + standard_name = bounded_surface_roughness_length_for_heat_over_ice + long_name = bounded surface roughness length for heat over ice + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[zt1d] + standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio + long_name = perturbation of heat to momentum roughness length ratio + units = frac + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[zmtb] + standard_name = height_of_mountain_blocking + long_name = height of mountain blocking drag + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dudt_ngw] + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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_layer_dimension) + type = real + kind = kind_phys + 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 + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[zogw] + standard_name = height_of_launch_level_of_orographic_gravity_wave + long_name = height of launch level of orographic gravity wave + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[zngw] + standard_name = height_of_launch_level_of_nonorographic_gravity_waves + long_name = height of launch level of non-stationary GWs + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tau_tofd] + standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag + long_name = instantaneous momentum flux due to TOFD + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tau_mtb] + standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag + long_name = instantaneous momentum flux due to mountain blocking drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tau_ogw] + standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag + long_name = instantaneous momentum flux due to orographic gravity wave drag + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tau_oss] + standard_name = momentum_flux_due_to_subgrid_scale_orographic_gravity_wave_drag + long_name = momentum flux or stress due to SSO including OBL-OSS-OFD + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[tau_ngw] + standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave + long_name = instantaneous momentum flux due to nonstationary gravity waves + units = Pa + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[dudt_mtb] + 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_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_layer_dimension) + type = real + kind = kind_phys +[qs_lay] + standard_name = saturation_vapor_pressure + long_name = saturation vapor pressure + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[q_lay] + standard_name = water_vapor_mixing_ratio + long_name = water vaport mixing ratio + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[p_lay] + standard_name = air_pressure_at_layer_for_RRTMGP + long_name = air pressure layer + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[p_lev] + standard_name = air_pressure_at_interface_for_RRTMGP + long_name = air pressure level + units = Pa + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[t_lay] + standard_name = air_temperature_at_layer_for_RRTMGP + long_name = air temperature layer + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[t_lev] + standard_name = air_temperature_at_interface_for_RRTMGP + long_name = air temperature layer + units = K + dimensions = (horizontal_loop_extent,vertical_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[tv_lay] + standard_name = virtual_temperature + long_name = layer virtual temperature + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[relhum] + standard_name = relative_humidity + long_name = layer relative humidity + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[deltaZ] + standard_name = layer_thickness + long_name = layer_thickness + units = m + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[deltaZc] + standard_name = layer_thickness_from_layer_center + long_name = layer_thickness + units = m + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[deltaP] + standard_name = layer_thickness_in_Pa + long_name = layer_thickness_in_Pa + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[tracer] + standard_name = chemical_tracers + long_name = chemical tracers + units = g g-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cloud_overlap_param] + standard_name = cloud_overlap_param + long_name = cloud overlap parameter for RRTMGP (but not for RRTMG) + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[precip_overlap_param] + standard_name = precip_overlap_param + long_name = precipitation overlap parameter + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxlwUP_allsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxlwDOWN_allsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxlwDOWN_clrsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxswUP_allsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxswDOWN_allsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxswUP_clrsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[fluxswDOWN_clrsky] + 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_interface_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[flxprf_lw] + 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_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_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 = mixed + 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) +[aerosolslw(:,:,:,1)] + 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_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_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_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 = mixed + 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) +[aerosolssw(:,:,:,1)] + 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_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_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_layer_dimension, number_of_shortwave_bands) + type = real + kind = kind_phys +[precip_frac] + standard_name = precipitation_fraction_by_layer + long_name = precipitation fraction in each layer + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cnv_cloud_overlap_param] + standard_name = convective_cloud_overlap_param + long_name = convective cloud overlap parameter + units = km + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_cnv_frac] + standard_name = convective_cloud_fraction_for_RRTMGP + long_name = layer convective cloud fraction + units = frac + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_cnv_lwp] + standard_name = convective_cloud_liquid_water_path + long_name = layer convective cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_cnv_iwp] + standard_name = convective_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_cnv_reliq] + standard_name = mean_effective_radius_for_liquid_convective_cloud + long_name = mean effective radius for liquid convective cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_cnv_reice] + standard_name = mean_effective_radius_for_ice_convective_cloud + long_name = mean effective radius for ice convective cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_pbl_lwp] + standard_name = MYNN_SGS_cloud_liquid_water_path + long_name = layer convective cloud liquid water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_pbl_iwp] + standard_name = MYNN_SGS_cloud_ice_water_path + long_name = layer convective cloud ice water path + units = g m-2 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_pbl_reliq] + standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud + long_name = mean effective radius for liquid MYNN_SGS cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[cld_pbl_reice] + standard_name = mean_effective_radius_for_ice_MYNN_SGS_cloud + long_name = mean effective radius for ice MYNN_SGS cloud + units = um + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_clrsky] + standard_name = shortwave_optical_properties_for_clear_sky + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_cloudsByBand] + standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_cnvcloudsByBand] + standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str +[sw_optical_props_MYNNcloudsByBand] + standard_name = shortwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_cnvclouds] + standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_precipByBand] + standard_name = shortwave_optical_properties_for_precipitation_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_precip] + standard_name = shortwave_optical_properties_for_precipitation + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_clouds] + standard_name = shortwave_optical_properties_for_cloudy_atmosphere + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[sw_optical_props_aerosol] + standard_name = shortwave_optical_properties_for_aerosols + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[gas_concentrations] + standard_name = Gas_concentrations_for_RRTMGP_suite + long_name = DDT containing gas concentrations for RRTMGP radiation scheme + units = DDT + dimensions = () + type = ty_gas_concs + active = (flag_for_rrtmgp_radiation_scheme) +[sources] + standard_name = longwave_source_function + long_name = Fortran DDT containing RRTMGP source functions + units = DDT + dimensions = () + type = ty_source_func_lw + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_clrsky] + standard_name = longwave_optical_properties_for_clear_sky + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_1scl + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_clouds] + standard_name = longwave_optical_properties_for_cloudy_atmosphere + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_precip] + standard_name = longwave_optical_properties_for_precipitation + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_cloudsByBand] + standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_cnvcloudsByBand] + standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_MYNNcloudsByBand] + standard_name = longwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_cnvclouds] + standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_precipByBand] + standard_name = longwave_optical_properties_for_precipitation_by_band + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_2str + active = (flag_for_rrtmgp_radiation_scheme) +[lw_optical_props_aerosol] + standard_name = longwave_optical_properties_for_aerosols + long_name = Fortran DDT containing RRTMGP optical properties + units = DDT + dimensions = () + type = ty_optical_props_1scl + active = (flag_for_rrtmgp_radiation_scheme) +[sfc_emiss_byband] + standard_name = surface_emissivity_in_each_RRTMGP_LW_band + long_name = surface emissivity in each RRTMGP LW band + units = none + dimensions = (number_of_longwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sec_diff_byband] + 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_longwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sfc_alb_nir_dir] + standard_name = surface_albedo_nearIR_direct + long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sfc_alb_nir_dif] + standard_name = surface_albedo_nearIR_diffuse + long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sfc_alb_uvvis_dir] + standard_name = surface_albedo_uvvis_direct + long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[sfc_alb_uvvis_dif] + standard_name = surface_albedo_uvvis_diffuse + long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) + units = none + dimensions = (number_of_shortwave_bands,horizontal_loop_extent) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[toa_src_lw] + 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_longwave_spectral_points) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[toa_src_sw] + 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_shortwave_spectral_points) + type = real + kind = kind_phys + active = (flag_for_rrtmgp_radiation_scheme) +[rtg_ozone_index] + standard_name = vertically_diffused_tracer_index_of_ozone + long_name = number of tracers + units = count + dimensions = () + type = integer + +######################################################################## +[ccpp-table-properties] + name = GFDL_interstitial_type + type = ddt + dependencies = + +[ccpp-arg-table] + name = GFDL_interstitial_type type = ddt [akap] standard_name = kappa_dry_for_fast_physics @@ -343,14 +3306,25 @@ [ccpp-table-properties] name = CCPP_typedefs type = module - dependencies = ../physics/physics/machine.F + relative_path = ../physics/physics + dependencies = machine.F,ozne_def.f,radlw_param.f,radsw_param.f + dependencies = rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90,rte-rrtmgp/rte/mo_optical_props.F90 + dependencies = rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90 + dependencies = rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90,rte-rrtmgp/rte/mo_rte_config.F90 + dependencies = rte-rrtmgp/rte/mo_source_functions.F90 [ccpp-arg-table] name = CCPP_typedefs type = module -[CCPP_interstitial_type] - standard_name = CCPP_interstitial_type - long_name = definition of type CCPP_interstitial_type +[GFS_interstitial_type] + standard_name = GFS_interstitial_type + long_name = definition of type GFS_interstitial_type + units = DDT + dimensions = () + type = GFS_interstitial_type +[GFDL_interstitial_type] + standard_name = GFDL_interstitial_type + long_name = definition of type GFDL_interstitial_type units = DDT dimensions = () - type = CCPP_interstitial_type + type = GFDL_interstitial_type diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index fe5aaa9243..8a7bf7417e 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1,83 +1,64 @@ - module GFS_typedefs - use machine, only: kind_phys,kind_dbl_prec - use physcons, only: con_cp, con_fvirt, con_g, & - con_hvap, con_hfus, con_pi, con_rd, con_rv, & - con_t0c, con_cvap, con_cliq, con_eps, con_epsq, & - 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_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 - use ozne_def, only: levozp, oz_coeff - use h2o_def, only: levh2o, h2o_coeff - use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp - use mo_optical_props, only: ty_optical_props_1scl,ty_optical_props_2str - use mo_cloud_optics, only: ty_cloud_optics - use mo_gas_concentrations, only: ty_gas_concs - use mo_source_functions, only: ty_source_func_lw - - implicit none - - ! To ensure that these values match what's in the physics, array - ! sizes are compared in the auto-generated physics caps in debug mode - private :: NF_AESW, NF_AELW, NSPC, NSPC1, NF_CLDS, NF_VGAS, NF_ALBD, ntrcaerm - ! from module_radiation_aerosols - integer, parameter :: NF_AESW = 3 - integer, parameter :: NF_AELW = 3 - integer, parameter :: NSPC = 5 - integer, parameter :: NSPC1 = NSPC + 1 - ! from module_radiation_clouds - integer, parameter :: NF_CLDS = 9 - ! from module_radiation_gases - integer, parameter :: NF_VGAS = 10 - ! from module_radiation_surface - integer, parameter :: NF_ALBD = 4 - ! from aerclm_def - integer, parameter :: ntrcaerm = 15 - - ! This will be set later in GFS_Control%initialize, since - ! it depends on the runtime config (Model%aero_in) - private :: ntrcaer - integer :: ntrcaer - - ! If these are changed to >99, need to adjust formatting string in GFS_diagnostics.F90 (and names in diag_tables) - integer, parameter :: naux2dmax = 20 !< maximum number of auxiliary 2d arrays in output (for debugging) - integer, parameter :: naux3dmax = 20 !< maximum number of auxiliary 3d arrays in output (for debugging) - - integer, parameter :: dfi_radar_max_intervals = 4 !< Number of radar-derived temperature tendency and/or convection suppression intervals. Do not change. - - real(kind=kind_phys), parameter :: limit_unspecified = 1e12 !< special constant for "namelist value was not provided" in radar-derived temperature tendency limit range + use machine, only: kind_phys, kind_dbl_prec + use physcons, only: con_cp, con_fvirt, con_g, & + con_hvap, con_hfus, con_pi, con_rd, con_rv, & + con_t0c, con_cvap, con_cliq, con_eps, con_epsq, & + 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_psat, karman, rainmin + + use module_radsw_parameters, only: topfsw_type, sfcfsw_type + use module_radlw_parameters, only: topflw_type, sfcflw_type + use ozne_def, only: levozp, oz_coeff + use h2o_def, only: levh2o, h2o_coeff + + implicit none + + ! To ensure that these values match what's in the physics, array + ! sizes are compared in the auto-generated physics caps in debug mode + ! from aerclm_def + integer, parameter, private :: ntrcaerm = 15 + + ! This will be set later in GFS_Control%initialize, since + ! it depends on the runtime config (Model%aero_in) + integer, private :: ntrcaer + + ! If these are changed to >99, need to adjust formatting string in GFS_diagnostics.F90 (and names in diag_tables) + integer, parameter :: naux2dmax = 20 !< maximum number of auxiliary 2d arrays in output (for debugging) + integer, parameter :: naux3dmax = 20 !< maximum number of auxiliary 3d arrays in output (for debugging) + + integer, parameter :: dfi_radar_max_intervals = 4 !< Number of radar-derived temperature tendency and/or convection suppression intervals. Do not change. + + real(kind=kind_phys), parameter :: limit_unspecified = 1e12 !< special constant for "namelist value was not provided" in radar-derived temperature tendency limit range !> \section arg_table_GFS_typedefs !! \htmlinclude GFS_typedefs.html !! - !--- version of physics - character(len=64) :: phys_version = 'v2018 FV3GFS BETA VERSION PHYSICS' - - !--- parameter constants used for default initializations - real(kind=kind_phys), parameter :: zero = 0.0_kind_phys -! real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue - real(kind=kind_phys), parameter :: clear_val = zero - !real(kind=kind_phys), parameter :: clear_val = -9.9999e80 - real(kind=kind_phys), parameter :: rann_init = 0.6_kind_phys - real(kind=kind_phys), parameter :: cn_one = 1._kind_phys - real(kind=kind_phys), parameter :: cn_100 = 100._kind_phys - real(kind=kind_phys), parameter :: cn_th = 1000._kind_phys - real(kind=kind_phys), parameter :: cn_hr = 3600._kind_phys - - ! optional extra top layer on top of low ceiling models - ! this parameter was originally defined in the radiation driver - ! (and is still for standard non-CCPP builds), but is required - ! here for CCPP to allocate arrays used for the interstitial - ! calculations previously in GFS_{physics,radiation}_driver.F90 - ! LTP=0: no extra top layer - integer, parameter :: LTP = 0 ! no extra top layer - !integer, parameter :: LTP = 1 ! add an extra top layer + !--- version of physics + character(len=64) :: phys_version = 'v2021 UFS PHYSICS' + + !--- parameter constants used for default initializations + real(kind=kind_phys), parameter :: zero = 0.0_kind_phys + !real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue + real(kind=kind_phys), parameter :: clear_val = zero + !real(kind=kind_phys), parameter :: clear_val = -9.9999e80 + real(kind=kind_phys), parameter :: rann_init = 0.6_kind_phys + real(kind=kind_phys), parameter :: cn_one = 1._kind_phys + real(kind=kind_phys), parameter :: cn_100 = 100._kind_phys + real(kind=kind_phys), parameter :: cn_th = 1000._kind_phys + real(kind=kind_phys), parameter :: cn_hr = 3600._kind_phys + + ! optional extra top layer on top of low ceiling models + ! this parameter was originally defined in the radiation driver + ! (and is still for standard non-CCPP builds), but is required + ! here for CCPP to allocate arrays used for the interstitial + ! calculations previously in GFS_{physics,radiation}_driver.F90 + ! LTP=0: no extra top layer + integer, parameter :: LTP = 0 ! no extra top layer + !integer, parameter :: LTP = 1 ! add an extra top layer !---------------- ! Data Containers @@ -96,8 +77,7 @@ module GFS_typedefs ! GFS_cldprop_type !< cloud fields needed by radiation from physics ! GFS_radtend_type !< radiation tendencies needed in physics ! GFS_diag_type !< fields targetted for diagnostic output -! GFS_interstitial_type !< fields required to replace interstitial code in GFS_{physics,radiation}_driver.F90 in CCPP -! GFS_data_type !< combined type of all of the above except GFS_control_type and GFS_interstitial_type +! GFS_data_type !< combined type of all of the above except GFS_control_type !-------------------------------------------------------------------------------- ! GFS_init_type @@ -900,9 +880,6 @@ module GFS_typedefs logical :: usemonalb !< flag to read surface diffused shortwave albedo from input file for NOAH LSM WRFv4 real(kind=kind_phys) :: aoasis !< potential evaporation multiplication factor for NOAH LSM WRFv4 integer :: fasdas !< flag to use "flux-adjusting surface data assimilation system"; 0 = OFF, 1 = ON - integer :: isurban !< vegetation/land use type corresponding to the urban environment for the chosen ivegsrc - integer :: isice !< vegetation/land use type corresponding to permanent ice/snow for the chosen ivegsrc - integer :: iswater !< vegetation/land use type corresponding to water bodies for the chosen ivegsrc integer :: iopt_thcnd !< option to treat thermal conductivity in Noah LSM (new in 3.8) !< = 1, original (default) !< = 2, McCumber and Pielke for silt loam and sandy loam @@ -1859,419 +1836,9 @@ module GFS_typedefs procedure :: phys_zero => diag_phys_zero end type GFS_diag_type -!--------------------------------------------------------------------- -! GFS_interstitial_type -! fields required for interstitial code in CCPP schemes, previously -! in GFS_{physics,radiation}_driver.F90 -!--------------------------------------------------------------------- -!! \section arg_table_GFS_interstitial_type -!! \htmlinclude GFS_interstitial_type.html -!! - type GFS_interstitial_type - - real (kind=kind_phys), pointer :: adjsfculw_land(:) => null() !< - real (kind=kind_phys), pointer :: adjsfculw_ice(:) => null() !< - real (kind=kind_phys), pointer :: adjsfculw_water(:) => null() !< - real (kind=kind_phys), pointer :: adjnirbmd(:) => null() !< - real (kind=kind_phys), pointer :: adjnirbmu(:) => null() !< - real (kind=kind_phys), pointer :: adjnirdfd(:) => null() !< - real (kind=kind_phys), pointer :: adjnirdfu(:) => null() !< - real (kind=kind_phys), pointer :: adjvisbmd(:) => null() !< - real (kind=kind_phys), pointer :: adjvisbmu(:) => null() !< - real (kind=kind_phys), pointer :: adjvisdfu(:) => null() !< - real (kind=kind_phys), pointer :: adjvisdfd(:) => null() !< - real (kind=kind_phys), pointer :: aerodp(:,:) => null() !< - real (kind=kind_phys), pointer :: alb1d(:) => null() !< - real (kind=kind_phys), pointer :: alpha(:,:) => null() !< - real (kind=kind_phys), pointer :: bexp1d(:) => null() !< - real (kind=kind_phys), pointer :: cd(:) => null() !< - real (kind=kind_phys), pointer :: cd_ice(:) => null() !< - real (kind=kind_phys), pointer :: cd_land(:) => null() !< - real (kind=kind_phys), pointer :: cd_water(:) => null() !< - real (kind=kind_phys), pointer :: cdq(:) => null() !< - real (kind=kind_phys), pointer :: cdq_ice(:) => null() !< - real (kind=kind_phys), pointer :: cdq_land(:) => null() !< - real (kind=kind_phys), pointer :: cdq_water(:) => null() !< - real (kind=kind_phys), pointer :: cf_upi(:,:) => null() !< - real (kind=kind_phys), pointer :: chh_ice(:) => null() !< - real (kind=kind_phys), pointer :: chh_land(:) => null() !< - real (kind=kind_phys), pointer :: chh_water(:) => null() !< - real (kind=kind_phys), pointer :: clcn(:,:) => null() !< - real (kind=kind_phys), pointer :: cldf(:) => null() !< - real (kind=kind_phys), pointer :: cldsa(:,:) => null() !< - real (kind=kind_phys), pointer :: cldtaulw(:,:) => null() !< - real (kind=kind_phys), pointer :: cldtausw(:,:) => null() !< - real (kind=kind_phys), pointer :: cld1d(:) => null() !< - real (kind=kind_phys), pointer :: clouds(:,:,:) => null() !< - real (kind=kind_phys), pointer :: clw(:,:,:) => null() !< - real (kind=kind_phys), pointer :: clx(:,:) => null() !< - real (kind=kind_phys), pointer :: cmm_ice(:) => null() !< - real (kind=kind_phys), pointer :: cmm_land(:) => null() !< - real (kind=kind_phys), pointer :: cmm_water(:) => null() !< - real (kind=kind_phys), pointer :: cnv_dqldt(:,:) => null() !< - real (kind=kind_phys), pointer :: cnv_fice(:,:) => null() !< - real (kind=kind_phys), pointer :: cnv_mfd(:,:) => null() !< - real (kind=kind_phys), pointer :: cnv_ndrop(:,:) => null() !< - real (kind=kind_phys), pointer :: cnv_nice(:,:) => null() !< - real (kind=kind_phys), pointer :: cnvc(:,:) => null() !< - real (kind=kind_phys), pointer :: cnvw(:,:) => null() !< - real (kind=kind_phys), pointer :: ctei_r(:) => null() !< - real (kind=kind_phys), pointer :: ctei_rml(:) => null() !< - real (kind=kind_phys), pointer :: cumabs(:) => null() !< - real (kind=kind_phys), pointer :: dd_mf(:,:) => null() !< - real (kind=kind_phys), pointer :: de_lgth(:) => null() !< - real (kind=kind_phys), pointer :: del(:,:) => null() !< - real (kind=kind_phys), pointer :: del_gz(:,:) => null() !< - real (kind=kind_phys), pointer :: delr(:,:) => null() !< - real (kind=kind_phys), pointer :: dlength(:) => null() !< - real (kind=kind_phys), pointer :: dqdt(:,:,:) => null() !< - real (kind=kind_phys), pointer :: dqsfc1(:) => null() !< - real (kind=kind_phys), pointer :: drain(:) => null() !< - real (kind=kind_phys), pointer :: dtdt(:,:) => null() !< - real (kind=kind_phys), pointer :: dtsfc1(:) => null() !< - real (kind=kind_phys), pointer :: dtzm(:) => null() !< - real (kind=kind_phys), pointer :: dt_mf(:,:) => null() !< - real (kind=kind_phys), pointer :: dudt(:,:) => null() !< - real (kind=kind_phys), pointer :: dusfcg(:) => null() !< - real (kind=kind_phys), pointer :: dusfc1(:) => null() !< - real (kind=kind_phys), pointer :: dvdftra(:,:,:) => null() !< - real (kind=kind_phys), pointer :: dvdt(:,:) => null() !< - real (kind=kind_phys), pointer :: dvsfcg(:) => null() !< - real (kind=kind_phys), pointer :: dvsfc1(:) => null() !< - real (kind=kind_phys), pointer :: dzlyr(:,:) => null() !< - real (kind=kind_phys), pointer :: elvmax(:) => null() !< - real (kind=kind_phys), pointer :: ep1d(:) => null() !< - real (kind=kind_phys), pointer :: ep1d_ice(:) => null() !< - real (kind=kind_phys), pointer :: ep1d_land(:) => null() !< - real (kind=kind_phys), pointer :: ep1d_water(:) => null() !< - real (kind=kind_phys), pointer :: evap_ice(:) => null() !< - real (kind=kind_phys), pointer :: evap_land(:) => null() !< - real (kind=kind_phys), pointer :: evap_water(:) => null() !< - real (kind=kind_phys), pointer :: evbs(:) => null() !< - real (kind=kind_phys), pointer :: evcw(:) => null() !< - real (kind=kind_phys), pointer :: pah(:) => null() !< - real (kind=kind_phys), pointer :: ecan(:) => null() !< - real (kind=kind_phys), pointer :: etran(:) => null() !< - real (kind=kind_phys), pointer :: edir(:) => null() !< - real (kind=kind_phys), pointer :: faerlw(:,:,:,:) => null() !< - real (kind=kind_phys), pointer :: faersw(:,:,:,:) => null() !< - real (kind=kind_phys), pointer :: ffhh_ice(:) => null() !< - real (kind=kind_phys), pointer :: ffhh_land(:) => null() !< - real (kind=kind_phys), pointer :: ffhh_water(:) => null() !< - real (kind=kind_phys), pointer :: fh2(:) => null() !< - real (kind=kind_phys), pointer :: fh2_ice(:) => null() !< - real (kind=kind_phys), pointer :: fh2_land(:) => null() !< - real (kind=kind_phys), pointer :: fh2_water(:) => null() !< - logical, pointer :: flag_cice(:) => null() !< - logical, pointer :: flag_guess(:) => null() !< - logical, pointer :: flag_iter(:) => null() !< - real (kind=kind_phys), pointer :: ffmm_ice(:) => null() !< - real (kind=kind_phys), pointer :: ffmm_land(:) => null() !< - real (kind=kind_phys), pointer :: ffmm_water(:) => null() !< - real (kind=kind_phys), pointer :: fm10(:) => null() !< - real (kind=kind_phys), pointer :: fm10_ice(:) => null() !< - real (kind=kind_phys), pointer :: fm10_land(:) => null() !< - real (kind=kind_phys), pointer :: fm10_water(:) => null() !< - real (kind=kind_phys) :: frain !< - real (kind=kind_phys), pointer :: frland(:) => null() !< - real (kind=kind_phys), pointer :: fscav(:) => null() !< - real (kind=kind_phys), pointer :: fswtr(:) => null() !< - real (kind=kind_phys), pointer :: gabsbdlw(:) => null() !< - real (kind=kind_phys), pointer :: gabsbdlw_ice(:) => null() !< - real (kind=kind_phys), pointer :: gabsbdlw_land(:) => null() !< - real (kind=kind_phys), pointer :: gabsbdlw_water(:) => null() !< - real (kind=kind_phys), pointer :: gamma(:) => null() !< - real (kind=kind_phys), pointer :: gamq(:) => null() !< - real (kind=kind_phys), pointer :: gamt(:) => null() !< - real (kind=kind_phys), pointer :: gasvmr(:,:,:) => null() !< - real (kind=kind_phys), pointer :: gflx(:) => null() !< - real (kind=kind_phys), pointer :: gflx_ice(:) => null() !< - real (kind=kind_phys), pointer :: gflx_land(:) => null() !< - real (kind=kind_phys), pointer :: gflx_water(:) => null() !< - real (kind=kind_phys), pointer :: graupelmp(:) => null() !< - real (kind=kind_phys), pointer :: gwdcu(:,:) => null() !< - real (kind=kind_phys), pointer :: gwdcv(:,:) => null() !< - real (kind=kind_phys), pointer :: zvfun(:) => null() !< - real (kind=kind_phys), pointer :: hffac(:) => null() !< - real (kind=kind_phys), pointer :: hflxq(:) => null() !< - real (kind=kind_phys), pointer :: hflx_ice(:) => null() !< - real (kind=kind_phys), pointer :: hflx_land(:) => null() !< - real (kind=kind_phys), pointer :: hflx_water(:) => null() !< - !--- radiation variables that need to be carried over from radiation to physics - real (kind=kind_phys), pointer :: htlwc(:,:) => null() !< - real (kind=kind_phys), pointer :: htlw0(:,:) => null() !< - real (kind=kind_phys), pointer :: htswc(:,:) => null() !< - real (kind=kind_phys), pointer :: htsw0(:,:) => null() !< - ! - real (kind=kind_phys), pointer :: icemp(:) => null() !< - logical, pointer :: dry(:) => null() !< - integer, pointer :: idxday(:) => null() !< - logical, pointer :: icy(:) => null() !< - logical, pointer :: lake(:) => null() !< - logical, pointer :: use_flake(:) => null() !< - logical, pointer :: ocean(:) => null() !< - integer :: ipr !< - integer, pointer :: islmsk(:) => null() !< - integer, pointer :: islmsk_cice(:) => null() !< - integer :: itc !< - logical, pointer :: wet(:) => null() !< - integer :: kb !< - integer, pointer :: kbot(:) => null() !< - integer, pointer :: kcnv(:) => null() !< - integer :: kd !< - integer, pointer :: kinver(:) => null() !< - integer, pointer :: kpbl(:) => null() !< - integer :: kt !< - integer, pointer :: ktop(:) => null() !< - integer :: latidxprnt !< - integer :: levi !< - integer :: lmk !< - integer :: lmp !< - integer, pointer :: mbota(:,:) => null() !< - logical :: mg3_as_mg2 !< - integer, pointer :: mtopa(:,:) => null() !< - integer :: nbdlw !< - integer :: nbdsw !< - real (kind=kind_phys), pointer :: ncgl(:,:) => null() !< - real (kind=kind_phys), pointer :: ncpi(:,:) => null() !< - real (kind=kind_phys), pointer :: ncpl(:,:) => null() !< - real (kind=kind_phys), pointer :: ncpr(:,:) => null() !< - real (kind=kind_phys), pointer :: ncps(:,:) => null() !< - integer :: ncstrac !< - integer :: nday !< - integer :: nf_aelw !< - integer :: nf_aesw !< - integer :: nn !< - integer :: nsamftrac !< - integer :: nscav !< - integer :: nspc1 !< - integer :: ntcwx !< - integer :: ntiwx !< - integer :: ntrwx !< - integer :: ntk !< - integer :: ntkev !< - integer :: nvdiff !< - real (kind=kind_phys), pointer :: oa4(:,:) => null() !< - real (kind=kind_phys), pointer :: oc(:) => null() !< - real (kind=kind_phys), pointer :: olyr(:,:) => null() !< - logical , pointer :: otspt(:,:) => null() !< - logical , pointer :: otsptflag(:) => null() !< - integer :: oz_coeffp5 !< - logical :: phys_hydrostatic !< - real (kind=kind_phys), pointer :: plvl(:,:) => null() !< - real (kind=kind_phys), pointer :: plyr(:,:) => null() !< - real (kind=kind_phys), pointer :: prcpmp(:) => null() !< - real (kind=kind_phys), pointer :: prnum(:,:) => null() !< - real (kind=kind_phys), pointer :: q2mp(:) => null() !< - real (kind=kind_phys), pointer :: qgl(:,:) => null() !< - real (kind=kind_phys), pointer :: qicn(:,:) => null() !< - real (kind=kind_phys), pointer :: qlcn(:,:) => null() !< - real (kind=kind_phys), pointer :: qlyr(:,:) => null() !< - real (kind=kind_phys), pointer :: qrn(:,:) => null() !< - real (kind=kind_phys), pointer :: qsnw(:,:) => null() !< - real (kind=kind_phys), pointer :: qss_ice(:) => null() !< - real (kind=kind_phys), pointer :: qss_land(:) => null() !< - real (kind=kind_phys), pointer :: qss_water(:) => null() !< - logical :: radar_reset !< - real (kind=kind_phys) :: raddt !< - real (kind=kind_phys), pointer :: rainmp(:) => null() !< - real (kind=kind_phys), pointer :: raincd(:) => null() !< - real (kind=kind_phys), pointer :: raincs(:) => null() !< - real (kind=kind_phys), pointer :: rainmcadj(:) => null() !< - real (kind=kind_phys), pointer :: rainp(:,:) => null() !< - real (kind=kind_phys), pointer :: rb(:) => null() !< - real (kind=kind_phys), pointer :: rb_ice(:) => null() !< - real (kind=kind_phys), pointer :: rb_land(:) => null() !< - real (kind=kind_phys), pointer :: rb_water(:) => null() !< - logical :: max_hourly_reset !< - logical :: ext_diag_thompson_reset !< - real (kind=kind_phys), pointer :: rhc(:,:) => null() !< - real (kind=kind_phys), pointer :: runoff(:) => null() !< - real (kind=kind_phys), pointer :: save_q(:,:,:) => null() !< - real (kind=kind_phys), pointer :: save_t(:,:) => null() !< - real (kind=kind_phys), pointer :: save_tcp(:,:) => null() !< - real (kind=kind_phys), pointer :: save_u(:,:) => null() !< - real (kind=kind_phys), pointer :: save_v(:,:) => null() !< - real (kind=kind_phys), pointer :: sbsno(:) => null() !< - type (cmpfsw_type), pointer :: scmpsw(:) => null() !< - real (kind=kind_phys), pointer :: sfcalb(:,:) => null() !< - real (kind=kind_phys), pointer :: sigma(:) => null() !< - real (kind=kind_phys), pointer :: sigmaf(:) => null() !< - real (kind=kind_phys), pointer :: sigmafrac(:,:) => null() !< - real (kind=kind_phys), pointer :: sigmatot(:,:) => null() !< - logical :: skip_macro !< - real (kind=kind_phys), pointer :: snowc(:) => null() !< - real (kind=kind_phys), pointer :: snohf(:) => null() !< - real (kind=kind_phys), pointer :: snowmp(:) => null() !< - real (kind=kind_phys), pointer :: snowmt(:) => null() !< - real (kind=kind_phys), pointer :: stress(:) => null() !< - real (kind=kind_phys), pointer :: stress_ice(:) => null() !< - real (kind=kind_phys), pointer :: stress_land(:) => null() !< - real (kind=kind_phys), pointer :: stress_water(:) => null() !< - real (kind=kind_phys), pointer :: t2mmp(:) => null() !< - real (kind=kind_phys), pointer :: theta(:) => null() !< - real (kind=kind_phys), pointer :: tlvl(:,:) => null() !< - real (kind=kind_phys), pointer :: tlyr(:,:) => null() !< - real (kind=kind_phys), pointer :: tprcp_ice(:) => null() !< - real (kind=kind_phys), pointer :: tprcp_land(:) => null() !< - real (kind=kind_phys), pointer :: tprcp_water(:) => null() !< - integer :: tracers_start_index !< - integer :: tracers_total !< - integer :: tracers_water !< - logical :: trans_aero !< - real (kind=kind_phys), pointer :: trans(:) => null() !< - real (kind=kind_phys), pointer :: tseal(:) => null() !< - real (kind=kind_phys), pointer :: tsfa(:) => null() !< - real (kind=kind_phys), pointer :: tsfc_water(:) => null() !< - real (kind=kind_phys), pointer :: tsfg(:) => null() !< - real (kind=kind_phys), pointer :: tsurf_ice(:) => null() !< - real (kind=kind_phys), pointer :: tsurf_land(:) => null() !< - real (kind=kind_phys), pointer :: tsurf_water(:) => null() !< - real (kind=kind_phys), pointer :: ud_mf(:,:) => null() !< - real (kind=kind_phys), pointer :: uustar_ice(:) => null() !< - real (kind=kind_phys), pointer :: uustar_land(:) => null() !< - real (kind=kind_phys), pointer :: uustar_water(:) => null() !< - real (kind=kind_phys), pointer :: vdftra(:,:,:) => null() !< - real (kind=kind_phys), pointer :: vegf1d(:) => null() !< - real (kind=kind_phys) :: lndp_vgf !< - - real (kind=kind_phys), pointer :: w_upi(:,:) => null() !< - real (kind=kind_phys), pointer :: wcbmax(:) => null() !< - real (kind=kind_phys), pointer :: wind(:) => null() !< - real (kind=kind_phys), pointer :: work1(:) => null() !< - real (kind=kind_phys), pointer :: work2(:) => null() !< - real (kind=kind_phys), pointer :: work3(:) => null() !< - real (kind=kind_phys), pointer :: xcosz(:) => null() !< - real (kind=kind_phys), pointer :: xlai1d(:) => null() !< - real (kind=kind_phys), pointer :: xmu(:) => null() !< - real (kind=kind_phys), pointer :: z01d(:) => null() !< - real (kind=kind_phys), pointer :: zt1d(:) => null() !< - real (kind=kind_phys), pointer :: ztmax_ice(:) => null() !< - real (kind=kind_phys), pointer :: ztmax_land(:) => null() !< - real (kind=kind_phys), pointer :: ztmax_water(:) => null() !< -!================================================================================================== -! UGWP - five mechnanisms of momentum deposition due to various types of GWs -! (oss, ofd, obl, ogw) + ngw = sum( sso + ngw) -!================================================================================================== -! nGWs - real (kind=kind_phys), pointer :: dudt_ngw(:,:) => null() !< - real (kind=kind_phys), pointer :: dvdt_ngw(:,:) => null() !< - real (kind=kind_phys), pointer :: dtdt_ngw(:,:) => null() !< - real (kind=kind_phys), pointer :: kdis_ngw(:,:) => null() !< - - real (kind=kind_phys), pointer :: tau_oss(: ) => null() !< instantaneous momentum flux due to OSS - real (kind=kind_phys), pointer :: tau_tofd(:) => null() !< instantaneous momentum flux due to TOFD - real (kind=kind_phys), pointer :: tau_mtb(:) => null() !< instantaneous momentum of mountain blocking drag - real (kind=kind_phys), pointer :: tau_ogw(:) => null() !< instantaneous momentum flux of OGWs - real (kind=kind_phys), pointer :: tau_ngw(:) => null() !< instantaneous momentum flux of NGWs - - real (kind=kind_phys), pointer :: zngw(:) => null() !< launch levels of NGWs - real (kind=kind_phys), pointer :: zmtb(:) => null() !< mountain blocking height - real (kind=kind_phys), pointer :: zlwb(:) => null() !< low level wave breaking height - real (kind=kind_phys), pointer :: zogw(:) => null() !< height of OGW-launch - - real (kind=kind_phys), pointer :: dudt_mtb(:,:) => null() !< daily aver u-wind tend due to mountain blocking - real (kind=kind_phys), pointer :: dudt_tms(:,:) => null() !< daily aver u-wind tend due to TMS - - ! RRTMGP - real (kind=kind_phys), pointer :: p_lay(:,:) => null() !< - real (kind=kind_phys), pointer :: p_lev(:,:) => null() !< - real (kind=kind_phys), pointer :: t_lev(:,:) => null() !< - real (kind=kind_phys), pointer :: t_lay(:,:) => null() !< - real (kind=kind_phys), pointer :: relhum(:,:) => null() !< - real (kind=kind_phys), pointer :: tv_lay(:,:) => null() !< - real (kind=kind_phys), pointer :: qs_lay(:,:) => null() !< - real (kind=kind_phys), pointer :: q_lay(:,:) => null() !< - real (kind=kind_phys), pointer :: deltaZ(:,:) => null() !< - real (kind=kind_phys), pointer :: deltaZc(:,:) => null() !< - real (kind=kind_phys), pointer :: deltaP(:,:) => null() !< - real (kind=kind_phys), pointer :: cloud_overlap_param(:,:) => null() !< Cloud overlap parameter - real (kind=kind_phys), pointer :: cnv_cloud_overlap_param(:,:) => null() !< Convective cloud overlap parameter - real (kind=kind_phys), pointer :: precip_overlap_param(:,:) => null() !< Precipitation overlap parameter - real (kind=kind_phys), pointer :: tracer(:,:,:) => null() !< - real (kind=kind_phys), pointer :: aerosolslw(:,:,:,:) => null() !< Aerosol radiative properties in each LW band. - real (kind=kind_phys), pointer :: aerosolssw(:,:,:,:) => null() !< Aerosol radiative properties in each SW band. - real (kind=kind_phys), pointer :: cld_frac(:,:) => null() !< Total cloud fraction - real (kind=kind_phys), pointer :: cld_lwp(:,:) => null() !< Cloud liquid water path - real (kind=kind_phys), pointer :: cld_reliq(:,:) => null() !< Cloud liquid effective radius - real (kind=kind_phys), pointer :: cld_iwp(:,:) => null() !< Cloud ice water path - real (kind=kind_phys), pointer :: cld_reice(:,:) => null() !< Cloud ice effecive radius - real (kind=kind_phys), pointer :: cld_swp(:,:) => null() !< Cloud snow water path - real (kind=kind_phys), pointer :: cld_resnow(:,:) => null() !< Cloud snow effective radius - real (kind=kind_phys), pointer :: cld_rwp(:,:) => null() !< Cloud rain water path - real (kind=kind_phys), pointer :: cld_rerain(:,:) => null() !< Cloud rain effective radius - real (kind=kind_phys), pointer :: precip_frac(:,:) => null() !< Precipitation fraction - real (kind=kind_phys), pointer :: cld_cnv_frac(:,:) => null() !< SGS convective cloud fraction - real (kind=kind_phys), pointer :: cld_cnv_lwp(:,:) => null() !< SGS convective cloud liquid water path - real (kind=kind_phys), pointer :: cld_cnv_reliq(:,:) => null() !< SGS convective cloud liquid effective radius - real (kind=kind_phys), pointer :: cld_cnv_iwp(:,:) => null() !< SGS convective cloud ice water path - real (kind=kind_phys), pointer :: cld_cnv_reice(:,:) => null() !< SGS convective cloud ice effecive radius - real (kind=kind_phys), pointer :: cld_pbl_lwp(:,:) => null() !< SGS PBL cloud liquid water path - real (kind=kind_phys), pointer :: cld_pbl_reliq(:,:) => null() !< SGS PBL cloud liquid effective radius - real (kind=kind_phys), pointer :: cld_pbl_iwp(:,:) => null() !< SGS PBL cloud ice water path - real (kind=kind_phys), pointer :: cld_pbl_reice(:,:) => null() !< SGS PBL cloud ice effecive radius - real (kind=kind_phys), pointer :: fluxlwUP_allsky(:,:) => null() !< RRTMGP upward longwave all-sky flux profile - real (kind=kind_phys), pointer :: fluxlwDOWN_allsky(:,:) => null() !< RRTMGP downward longwave all-sky flux profile - real (kind=kind_phys), pointer :: fluxlwUP_clrsky(:,:) => null() !< RRTMGP upward longwave clr-sky flux profile - real (kind=kind_phys), pointer :: fluxlwDOWN_clrsky(:,:) => null() !< RRTMGP downward longwave clr-sky flux profile - real (kind=kind_phys), pointer :: fluxswUP_allsky(:,:) => null() !< RRTMGP upward shortwave all-sky flux profile - real (kind=kind_phys), pointer :: fluxswDOWN_allsky(:,:) => null() !< RRTMGP downward shortwave all-sky flux profile - real (kind=kind_phys), pointer :: fluxswUP_clrsky(:,:) => null() !< RRTMGP upward shortwave clr-sky flux profile - real (kind=kind_phys), pointer :: fluxswDOWN_clrsky(:,:) => null() !< RRTMGP downward shortwave clr-sky flux profile - real (kind=kind_phys), pointer :: sfc_emiss_byband(:,:) => null() !< - real (kind=kind_phys), pointer :: sec_diff_byband(:,:) => null() !< - real (kind=kind_phys), pointer :: sfc_alb_nir_dir(:,:) => null() !< - real (kind=kind_phys), pointer :: sfc_alb_nir_dif(:,:) => null() !< - real (kind=kind_phys), pointer :: sfc_alb_uvvis_dir(:,:) => null() !< - real (kind=kind_phys), pointer :: sfc_alb_uvvis_dif(:,:) => null() !< - real (kind=kind_phys), pointer :: toa_src_lw(:,:) => null() !< - real (kind=kind_phys), pointer :: toa_src_sw(:,:) => null() !< - type(proflw_type), pointer :: flxprf_lw(:,:) => null() !< DDT containing RRTMGP longwave fluxes - type(profsw_type), pointer :: flxprf_sw(:,:) => null() !< DDT containing RRTMGP shortwave fluxes - type(ty_optical_props_2str) :: lw_optical_props_cloudsByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_clouds !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_precipByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_precip !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_cnvcloudsByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_cnvclouds !< RRTMGP DDT - type(ty_optical_props_2str) :: lw_optical_props_MYNNcloudsByBand !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_clrsky !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_aerosol !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_cloudsByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_clouds !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_precipByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_precip !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_clrsky !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_aerosol !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_cnvcloudsByBand !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_cnvclouds !< RRTMGP DDT - type(ty_optical_props_2str) :: sw_optical_props_MYNNcloudsByBand !< RRTMGP DDT - type(ty_gas_concs) :: gas_concentrations !< RRTMGP DDT - type(ty_source_func_lw) :: sources !< RRTMGP DDT - - !-- GSL drag suite - real (kind=kind_phys), pointer :: varss(:) => null() !< - real (kind=kind_phys), pointer :: ocss(:) => null() !< - real (kind=kind_phys), pointer :: oa4ss(:,:) => null() !< - real (kind=kind_phys), pointer :: clxss(:,:) => null() !< - - !-- 3D diagnostics - integer :: rtg_ozone_index, rtg_tke_index - - contains - procedure :: create => interstitial_create !< allocate array data - procedure :: rad_reset => interstitial_rad_reset !< reset array data for radiation - procedure :: phys_reset => interstitial_phys_reset !< reset array data for physics - - end type GFS_interstitial_type - -!------------------------- -! GFS sub-containers -!------------------------- - -!------------------------------------------------------------------------------------ -! combined type of all of the above except GFS_control_type and GFS_interstitial_type -!------------------------------------------------------------------------------------ +!---------------------------------------------------------- +! combined type of all of the above except GFS_control_type +!---------------------------------------------------------- !! \section arg_table_GFS_data_type !! \htmlinclude GFS_data_type.html !! @@ -2295,7 +1862,7 @@ module GFS_typedefs GFS_coupling_type public GFS_control_type, GFS_grid_type, GFS_tbd_type, & GFS_cldprop_type, GFS_radtend_type, GFS_diag_type - public GFS_interstitial_type, GFS_data_type + public GFS_data_type !******************************************************************************************* CONTAINS @@ -4264,8 +3831,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & end if ! DH* TODO - need to clean up how different land surface models handle initializing zs and dzs ! For Noah and NoahMP, hardcode here for the moment; for RUC, these variables get initialized - ! in the RUC LSM init calls; for Noah WRF4, dzs gets initialized in sfc_noah_wrfv4_interstitial - ! init, and zs doesn't get used at all. + ! in the RUC LSM init calls. ! Allocate variables to store depth/thickness of soil layers allocate (Model%zs (Model%lsoil_lsm)) allocate (Model%dzs(Model%lsoil_lsm)) @@ -4326,9 +3892,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%lsnow_lsm_lbound = 0 Model%lsnow_lsm_ubound = 0 end if - Model%isurban = -999 !GJF isurban is only used in NOAH WRFv4 and is initialized in sfc_noah_GFS_interstitial.F90/sfc_noah_GFS_pre_init - Model%isice = -999 !GJF isice is only used in NOAH WRFv4 and is initialized in sfc_noah_GFS_interstitial.F90/sfc_noah_GFS_pre_init - Model%iswater = -999 !GJF iswater is only used in NOAH WRFv4 and is initialized in sfc_noah_GFS_interstitial.F90/sfc_noah_GFS_pre_init Model%iopt_thcnd = iopt_thcnd Model%ua_phys = ua_phys Model%usemonalb = usemonalb @@ -7375,1100 +6938,4 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center) end subroutine diag_phys_zero - !------------------------- - ! GFS_interstitial_type%create - !------------------------- - subroutine interstitial_create (Interstitial, IM, Model) - ! - implicit none - ! - class(GFS_interstitial_type) :: Interstitial - integer, intent(in) :: IM - type(GFS_control_type), intent(in) :: Model - integer :: iGas - ! - allocate (Interstitial%otspt (Model%ntracp1,2)) - allocate (Interstitial%otsptflag (Model%ntrac)) - ! Set up numbers of tracers for PBL, convection, etc: sets - ! 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)) - allocate (Interstitial%adjsfculw_ice (IM)) - allocate (Interstitial%adjsfculw_water (IM)) - allocate (Interstitial%adjnirbmd (IM)) - allocate (Interstitial%adjnirbmu (IM)) - allocate (Interstitial%adjnirdfd (IM)) - allocate (Interstitial%adjnirdfu (IM)) - allocate (Interstitial%adjvisbmd (IM)) - allocate (Interstitial%adjvisbmu (IM)) - allocate (Interstitial%adjvisdfu (IM)) - allocate (Interstitial%adjvisdfd (IM)) - allocate (Interstitial%aerodp (IM,NSPC1)) - allocate (Interstitial%alb1d (IM)) - if (.not. Model%do_RRTMGP) then - ! RRTMGP uses its own cloud_overlap_param - allocate (Interstitial%alpha (IM,Model%levr+LTP)) - end if - allocate (Interstitial%bexp1d (IM)) - allocate (Interstitial%cd (IM)) - allocate (Interstitial%cd_ice (IM)) - allocate (Interstitial%cd_land (IM)) - allocate (Interstitial%cd_water (IM)) - allocate (Interstitial%cdq (IM)) - allocate (Interstitial%cdq_ice (IM)) - allocate (Interstitial%cdq_land (IM)) - allocate (Interstitial%cdq_water (IM)) - allocate (Interstitial%chh_ice (IM)) - allocate (Interstitial%chh_land (IM)) - allocate (Interstitial%chh_water (IM)) - allocate (Interstitial%cldf (IM)) - allocate (Interstitial%cldsa (IM,5)) - allocate (Interstitial%cldtaulw (IM,Model%levr+LTP)) - allocate (Interstitial%cldtausw (IM,Model%levr+LTP)) - allocate (Interstitial%cld1d (IM)) - allocate (Interstitial%clouds (IM,Model%levr+LTP,NF_CLDS)) - allocate (Interstitial%clw (IM,Model%levs,Interstitial%nn)) - allocate (Interstitial%clx (IM,4)) - allocate (Interstitial%cmm_ice (IM)) - allocate (Interstitial%cmm_land (IM)) - allocate (Interstitial%cmm_water (IM)) - allocate (Interstitial%cnvc (IM,Model%levs)) - allocate (Interstitial%cnvw (IM,Model%levs)) - allocate (Interstitial%ctei_r (IM)) - allocate (Interstitial%ctei_rml (IM)) - allocate (Interstitial%cumabs (IM)) - allocate (Interstitial%dd_mf (IM,Model%levs)) - allocate (Interstitial%de_lgth (IM)) - allocate (Interstitial%del (IM,Model%levs)) - allocate (Interstitial%del_gz (IM,Model%levs+1)) - allocate (Interstitial%delr (IM,Model%levr+LTP)) - allocate (Interstitial%dlength (IM)) - allocate (Interstitial%dqdt (IM,Model%levs,Model%ntrac)) - allocate (Interstitial%dqsfc1 (IM)) - allocate (Interstitial%drain (IM)) - allocate (Interstitial%dtdt (IM,Model%levs)) - allocate (Interstitial%dtsfc1 (IM)) - allocate (Interstitial%dt_mf (IM,Model%levs)) - allocate (Interstitial%dtzm (IM)) - allocate (Interstitial%dudt (IM,Model%levs)) - allocate (Interstitial%dusfcg (IM)) - allocate (Interstitial%dusfc1 (IM)) - allocate (Interstitial%dvdt (IM,Model%levs)) - allocate (Interstitial%dvsfcg (IM)) - allocate (Interstitial%dvsfc1 (IM)) - allocate (Interstitial%dvdftra (IM,Model%levs,Interstitial%nvdiff)) - allocate (Interstitial%dzlyr (IM,Model%levr+LTP)) - allocate (Interstitial%elvmax (IM)) - allocate (Interstitial%ep1d (IM)) - allocate (Interstitial%ep1d_ice (IM)) - allocate (Interstitial%ep1d_land (IM)) - allocate (Interstitial%ep1d_water (IM)) - allocate (Interstitial%evap_ice (IM)) - allocate (Interstitial%evap_land (IM)) - allocate (Interstitial%evap_water (IM)) - allocate (Interstitial%evbs (IM)) - allocate (Interstitial%evcw (IM)) - allocate (Interstitial%pah (IM)) - allocate (Interstitial%ecan (IM)) - allocate (Interstitial%etran (IM)) - allocate (Interstitial%edir (IM)) - allocate (Interstitial%faerlw (IM,Model%levr+LTP,NBDLW,NF_AELW)) - allocate (Interstitial%faersw (IM,Model%levr+LTP,NBDSW,NF_AESW)) - allocate (Interstitial%ffhh_ice (IM)) - allocate (Interstitial%ffhh_land (IM)) - allocate (Interstitial%ffhh_water (IM)) - allocate (Interstitial%fh2 (IM)) - allocate (Interstitial%fh2_ice (IM)) - allocate (Interstitial%fh2_land (IM)) - allocate (Interstitial%fh2_water (IM)) - allocate (Interstitial%flag_cice (IM)) - allocate (Interstitial%flag_guess (IM)) - allocate (Interstitial%flag_iter (IM)) - allocate (Interstitial%ffmm_ice (IM)) - allocate (Interstitial%ffmm_land (IM)) - allocate (Interstitial%ffmm_water (IM)) - allocate (Interstitial%fm10 (IM)) - allocate (Interstitial%fm10_ice (IM)) - allocate (Interstitial%fm10_land (IM)) - allocate (Interstitial%fm10_water (IM)) - allocate (Interstitial%frland (IM)) - allocate (Interstitial%fscav (Interstitial%nscav)) - allocate (Interstitial%fswtr (Interstitial%nscav)) - allocate (Interstitial%gabsbdlw (IM)) - allocate (Interstitial%gabsbdlw_ice (IM)) - allocate (Interstitial%gabsbdlw_land (IM)) - allocate (Interstitial%gabsbdlw_water (IM)) - allocate (Interstitial%gamma (IM)) - allocate (Interstitial%gamq (IM)) - allocate (Interstitial%gamt (IM)) - allocate (Interstitial%gasvmr (IM,Model%levr+LTP,NF_VGAS)) - allocate (Interstitial%gflx (IM)) - allocate (Interstitial%gflx_ice (IM)) - allocate (Interstitial%gflx_land (IM)) - allocate (Interstitial%gflx_water (IM)) - allocate (Interstitial%gwdcu (IM,Model%levs)) - allocate (Interstitial%gwdcv (IM,Model%levs)) - allocate (Interstitial%zvfun (IM)) - allocate (Interstitial%hffac (IM)) - allocate (Interstitial%hflxq (IM)) - allocate (Interstitial%hflx_ice (IM)) - allocate (Interstitial%hflx_land (IM)) - allocate (Interstitial%hflx_water (IM)) - allocate (Interstitial%htlwc (IM,Model%levr+LTP)) - allocate (Interstitial%htlw0 (IM,Model%levr+LTP)) - allocate (Interstitial%htswc (IM,Model%levr+LTP)) - allocate (Interstitial%htsw0 (IM,Model%levr+LTP)) - allocate (Interstitial%dry (IM)) - allocate (Interstitial%idxday (IM)) - allocate (Interstitial%icy (IM)) - allocate (Interstitial%lake (IM)) - allocate (Interstitial%use_flake (IM)) - allocate (Interstitial%ocean (IM)) - allocate (Interstitial%islmsk (IM)) - allocate (Interstitial%islmsk_cice (IM)) - allocate (Interstitial%wet (IM)) - allocate (Interstitial%kbot (IM)) - allocate (Interstitial%kcnv (IM)) - allocate (Interstitial%kinver (IM)) - allocate (Interstitial%kpbl (IM)) - allocate (Interstitial%ktop (IM)) - allocate (Interstitial%mbota (IM,3)) - allocate (Interstitial%mtopa (IM,3)) - allocate (Interstitial%oa4 (IM,4)) - allocate (Interstitial%oc (IM)) - allocate (Interstitial%olyr (IM,Model%levr+LTP)) - allocate (Interstitial%plvl (IM,Model%levr+1+LTP)) - allocate (Interstitial%plyr (IM,Model%levr+LTP)) - allocate (Interstitial%prnum (IM,Model%levs)) - allocate (Interstitial%qlyr (IM,Model%levr+LTP)) - allocate (Interstitial%prcpmp (IM)) - allocate (Interstitial%qss_ice (IM)) - allocate (Interstitial%qss_land (IM)) - allocate (Interstitial%qss_water (IM)) - allocate (Interstitial%raincd (IM)) - allocate (Interstitial%raincs (IM)) - allocate (Interstitial%rainmcadj (IM)) - allocate (Interstitial%rainp (IM,Model%levs)) - allocate (Interstitial%rb (IM)) - allocate (Interstitial%rb_ice (IM)) - allocate (Interstitial%rb_land (IM)) - allocate (Interstitial%rb_water (IM)) - allocate (Interstitial%rhc (IM,Model%levs)) - allocate (Interstitial%runoff (IM)) - allocate (Interstitial%save_q (IM,Model%levs,Model%ntrac)) - allocate (Interstitial%save_t (IM,Model%levs)) - allocate (Interstitial%save_tcp (IM,Model%levs)) - allocate (Interstitial%save_u (IM,Model%levs)) - allocate (Interstitial%save_v (IM,Model%levs)) - allocate (Interstitial%sbsno (IM)) - allocate (Interstitial%scmpsw (IM)) - allocate (Interstitial%sfcalb (IM,NF_ALBD)) - allocate (Interstitial%sigma (IM)) - allocate (Interstitial%sigmaf (IM)) - allocate (Interstitial%sigmafrac (IM,Model%levs)) - allocate (Interstitial%sigmatot (IM,Model%levs)) - allocate (Interstitial%snowc (IM)) - allocate (Interstitial%snohf (IM)) - allocate (Interstitial%snowmt (IM)) - allocate (Interstitial%stress (IM)) - allocate (Interstitial%stress_ice (IM)) - allocate (Interstitial%stress_land (IM)) - allocate (Interstitial%stress_water (IM)) - allocate (Interstitial%theta (IM)) - allocate (Interstitial%tlvl (IM,Model%levr+1+LTP)) - allocate (Interstitial%tlyr (IM,Model%levr+LTP)) - allocate (Interstitial%tprcp_ice (IM)) - allocate (Interstitial%tprcp_land (IM)) - allocate (Interstitial%tprcp_water (IM)) - allocate (Interstitial%trans (IM)) - allocate (Interstitial%tseal (IM)) - allocate (Interstitial%tsfa (IM)) - allocate (Interstitial%tsfc_water (IM)) - allocate (Interstitial%tsfg (IM)) - allocate (Interstitial%tsurf_ice (IM)) - allocate (Interstitial%tsurf_land (IM)) - allocate (Interstitial%tsurf_water (IM)) - allocate (Interstitial%ud_mf (IM,Model%levs)) - allocate (Interstitial%uustar_ice (IM)) - allocate (Interstitial%uustar_land (IM)) - allocate (Interstitial%uustar_water (IM)) - allocate (Interstitial%vdftra (IM,Model%levs,Interstitial%nvdiff)) !GJF first dimension was set as 'IX' in GFS_physics_driver - allocate (Interstitial%vegf1d (IM)) - allocate (Interstitial%wcbmax (IM)) - allocate (Interstitial%wind (IM)) - allocate (Interstitial%work1 (IM)) - allocate (Interstitial%work2 (IM)) - allocate (Interstitial%work3 (IM)) - allocate (Interstitial%xcosz (IM)) - allocate (Interstitial%xlai1d (IM)) - allocate (Interstitial%xmu (IM)) - allocate (Interstitial%z01d (IM)) - allocate (Interstitial%zt1d (IM)) - allocate (Interstitial%ztmax_ice (IM)) - allocate (Interstitial%ztmax_land (IM)) - allocate (Interstitial%ztmax_water (IM)) - - ! RRTMGP - if (Model%do_RRTMGP) then - allocate (Interstitial%tracer (IM, Model%levs,Model%ntrac)) - allocate (Interstitial%tv_lay (IM, Model%levs)) - allocate (Interstitial%relhum (IM, Model%levs)) - allocate (Interstitial%qs_lay (IM, Model%levs)) - allocate (Interstitial%q_lay (IM, Model%levs)) - allocate (Interstitial%deltaZ (IM, Model%levs)) - allocate (Interstitial%deltaZc (IM, Model%levs)) - allocate (Interstitial%deltaP (IM, Model%levs)) - allocate (Interstitial%p_lev (IM, Model%levs+1)) - allocate (Interstitial%p_lay (IM, Model%levs)) - allocate (Interstitial%t_lev (IM, Model%levs+1)) - allocate (Interstitial%t_lay (IM, Model%levs)) - allocate (Interstitial%cloud_overlap_param (IM, Model%levs)) - allocate (Interstitial%precip_overlap_param (IM, Model%levs)) - allocate (Interstitial%fluxlwUP_allsky (IM, Model%levs+1)) - allocate (Interstitial%fluxlwDOWN_allsky (IM, Model%levs+1)) - allocate (Interstitial%fluxlwUP_clrsky (IM, Model%levs+1)) - allocate (Interstitial%fluxlwDOWN_clrsky (IM, Model%levs+1)) - allocate (Interstitial%fluxswUP_allsky (IM, Model%levs+1)) - allocate (Interstitial%fluxswDOWN_allsky (IM, Model%levs+1)) - allocate (Interstitial%fluxswUP_clrsky (IM, Model%levs+1)) - allocate (Interstitial%fluxswDOWN_clrsky (IM, Model%levs+1)) - allocate (Interstitial%aerosolslw (IM, Model%levs, Model%rrtmgp_nBandsLW, NF_AELW)) - allocate (Interstitial%aerosolssw (IM, Model%levs, Model%rrtmgp_nBandsSW, NF_AESW)) - allocate (Interstitial%cld_frac (IM, Model%levs)) - allocate (Interstitial%cld_lwp (IM, Model%levs)) - allocate (Interstitial%cld_reliq (IM, Model%levs)) - allocate (Interstitial%cld_iwp (IM, Model%levs)) - allocate (Interstitial%cld_reice (IM, Model%levs)) - allocate (Interstitial%cld_swp (IM, Model%levs)) - allocate (Interstitial%cld_resnow (IM, Model%levs)) - allocate (Interstitial%cld_rwp (IM, Model%levs)) - allocate (Interstitial%cld_rerain (IM, Model%levs)) - allocate (Interstitial%precip_frac (IM, Model%levs)) - allocate (Interstitial%cld_cnv_frac (IM, Model%levs)) - allocate (Interstitial%cnv_cloud_overlap_param(IM, Model%levs)) - allocate (Interstitial%cld_cnv_lwp (IM, Model%levs)) - allocate (Interstitial%cld_cnv_reliq (IM, Model%levs)) - allocate (Interstitial%cld_cnv_iwp (IM, Model%levs)) - allocate (Interstitial%cld_cnv_reice (IM, Model%levs)) - allocate (Interstitial%cld_pbl_lwp (IM, Model%levs)) - allocate (Interstitial%cld_pbl_reliq (IM, Model%levs)) - allocate (Interstitial%cld_pbl_iwp (IM, Model%levs)) - allocate (Interstitial%cld_pbl_reice (IM, Model%levs)) - allocate (Interstitial%flxprf_lw (IM, Model%levs+1)) - allocate (Interstitial%flxprf_sw (IM, Model%levs+1)) - allocate (Interstitial%sfc_emiss_byband (Model%rrtmgp_nBandsLW,IM)) - allocate (Interstitial%sec_diff_byband (Model%rrtmgp_nBandsLW,IM)) - allocate (Interstitial%sfc_alb_nir_dir (Model%rrtmgp_nBandsSW,IM)) - allocate (Interstitial%sfc_alb_nir_dif (Model%rrtmgp_nBandsSW,IM)) - allocate (Interstitial%sfc_alb_uvvis_dir (Model%rrtmgp_nBandsSW,IM)) - allocate (Interstitial%sfc_alb_uvvis_dif (Model%rrtmgp_nBandsSW,IM)) - allocate (Interstitial%toa_src_sw (IM,Model%rrtmgp_nGptsSW)) - allocate (Interstitial%toa_src_lw (IM,Model%rrtmgp_nGptsLW)) - ! - ! gas_concentrations (ty_gas_concs) - ! - Interstitial%gas_concentrations%ncol = IM - Interstitial%gas_concentrations%nlay = Model%levs - allocate(Interstitial%gas_concentrations%gas_name(Model%nGases)) - allocate(Interstitial%gas_concentrations%concs(Model%nGases)) - do iGas=1,Model%nGases - allocate(Interstitial%gas_concentrations%concs(iGas)%conc(IM, Model%levs)) - enddo - ! - ! 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 )) - allocate(Interstitial%lw_optical_props_clrsky%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_clrsky%gpt2band( Model%rrtmgp_nGptsLW )) - ! - ! lw_optical_props_aerosol (ty_optical_props_1scl) - ! - allocate(Interstitial%lw_optical_props_aerosol%tau( IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_aerosol%band2gpt (2, Model%rrtmgp_nBandsLW )) - 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) - ! - 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 )) - allocate(Interstitial%lw_optical_props_cloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) - ! - ! lw_optical_props_cnvcloudsByBand (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) - ! - ! lw_optical_props_MYNNcloudsByBand (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW )) - ! - ! lw_optical_props_precipByBand (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_precipByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precipByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precipByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precipByBand%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precipByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precipByBand%gpt2band( Model%rrtmgp_nBandsLW )) - ! - ! lw_optical_props_clouds (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_clouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_clouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_clouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_clouds%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_clouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_clouds%gpt2band( Model%rrtmgp_nGptsLW )) - ! - ! lw_optical_props_cnvclouds (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_cnvclouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_cnvclouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_cnvclouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_cnvclouds%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvclouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_cnvclouds%gpt2band( Model%rrtmgp_nGptsLW )) - ! - ! lw_optical_props_precip (ty_optical_props_2str) - ! - allocate(Interstitial%lw_optical_props_precip%tau( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_precip%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_precip%g( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%lw_optical_props_precip%band2gpt (2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precip%band_lims_wvn(2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%lw_optical_props_precip%gpt2band( Model%rrtmgp_nGptsLW )) - ! - ! sources (ty_source_func_lw) - ! - allocate(Interstitial%sources%sfc_source( IM, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%sources%lay_source( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%sources%lev_source_inc( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%sources%lev_source_dec( IM, Model%levs, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%sources%sfc_source_Jac( IM, Model%rrtmgp_nGptsLW )) - allocate(Interstitial%sources%band2gpt ( 2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%sources%band_lims_wvn ( 2, Model%rrtmgp_nBandsLW )) - allocate(Interstitial%sources%gpt2band( Model%rrtmgp_nGptsLW )) - end if - -! UGWP common - allocate (Interstitial%tau_mtb (IM)) - allocate (Interstitial%tau_ogw (IM)) - allocate (Interstitial%tau_tofd (IM)) - allocate (Interstitial%tau_ngw (IM)) - allocate (Interstitial%tau_oss (IM)) - allocate (Interstitial%dudt_mtb (IM,Model%levs)) - allocate (Interstitial%dudt_tms (IM,Model%levs)) - allocate (Interstitial%zmtb (IM) ) - allocate (Interstitial%zlwb (IM) ) - allocate (Interstitial%zogw (IM) ) - allocate (Interstitial%zngw (IM) ) - -! CIRES UGWP v1 - if (Model%do_ugwp_v1) then - allocate (Interstitial%dudt_ngw (IM,Model%levs)) - allocate (Interstitial%dvdt_ngw (IM,Model%levs)) - allocate (Interstitial%dtdt_ngw (IM,Model%levs)) - allocate (Interstitial%kdis_ngw (IM,Model%levs)) - end if - -!-- GSL drag suite - if (Model%gwd_opt==3 .or. Model%gwd_opt==33 .or. & - Model%gwd_opt==2 .or. Model%gwd_opt==22 ) then - allocate (Interstitial%varss (IM)) - allocate (Interstitial%ocss (IM)) - allocate (Interstitial%oa4ss (IM,4)) - allocate (Interstitial%clxss (IM,4)) - end if -! - ! Allocate arrays that are conditional on physics choices - if (Model%imp_physics == Model%imp_physics_gfdl .or. Model%imp_physics == Model%imp_physics_thompson & - .or. Model%imp_physics == Model%imp_physics_nssl & - ) then - allocate (Interstitial%graupelmp (IM)) - allocate (Interstitial%icemp (IM)) - allocate (Interstitial%rainmp (IM)) - allocate (Interstitial%snowmp (IM)) - else if (Model%imp_physics == Model%imp_physics_mg) then - allocate (Interstitial%ncgl (IM,Model%levs)) - allocate (Interstitial%ncpr (IM,Model%levs)) - allocate (Interstitial%ncps (IM,Model%levs)) - allocate (Interstitial%qgl (IM,Model%levs)) - allocate (Interstitial%qrn (IM,Model%levs)) - allocate (Interstitial%qsnw (IM,Model%levs)) - allocate (Interstitial%qlcn (IM,Model%levs)) - allocate (Interstitial%qicn (IM,Model%levs)) - allocate (Interstitial%w_upi (IM,Model%levs)) - allocate (Interstitial%cf_upi (IM,Model%levs)) - allocate (Interstitial%cnv_mfd (IM,Model%levs)) - allocate (Interstitial%cnv_dqldt (IM,Model%levs)) - allocate (Interstitial%clcn (IM,Model%levs)) - allocate (Interstitial%cnv_fice (IM,Model%levs)) - allocate (Interstitial%cnv_ndrop (IM,Model%levs)) - allocate (Interstitial%cnv_nice (IM,Model%levs)) - end if - if (Model%do_shoc) then - if (.not. associated(Interstitial%qrn)) allocate (Interstitial%qrn (IM,Model%levs)) - if (.not. associated(Interstitial%qsnw)) allocate (Interstitial%qsnw (IM,Model%levs)) - ! DH* updated version of shoc from May 22 2019 (not yet in CCPP) doesn't use qgl? remove? - if (.not. associated(Interstitial%qgl)) allocate (Interstitial%qgl (IM,Model%levs)) - ! *DH - allocate (Interstitial%ncpi (IM,Model%levs)) - allocate (Interstitial%ncpl (IM,Model%levs)) - end if - if (Model%lsm == Model%lsm_noahmp) then - allocate (Interstitial%t2mmp (IM)) - allocate (Interstitial%q2mp (IM)) - end if - ! - ! Set components that do not change - Interstitial%frain = Model%dtf/Model%dtp - Interstitial%ipr = min(IM,10) - Interstitial%latidxprnt = 1 - Interstitial%levi = Model%levs+1 - Interstitial%lmk = Model%levr+LTP - Interstitial%lmp = Model%levr+1+LTP - Interstitial%nbdlw = NBDLW - Interstitial%nbdsw = NBDSW - Interstitial%nf_aelw = NF_AELW - Interstitial%nf_aesw = NF_AESW - Interstitial%nspc1 = NSPC1 - if (Model%oz_phys .or. Model%oz_phys_2015) then - Interstitial%oz_coeffp5 = oz_coeff+5 - else - Interstitial%oz_coeffp5 = 5 - endif - ! - Interstitial%skip_macro = .false. - ! The value phys_hydrostatic from dynamics does not match the - ! hardcoded value for calling GFDL MP in GFS_physics_driver.F90, - ! which is set to .true. - Interstitial%phys_hydrostatic = .true. - ! - ! Reset all other variables - call Interstitial%rad_reset (Model) - call Interstitial%phys_reset (Model) - ! - end subroutine interstitial_create - - subroutine interstitial_setup_tracers(Interstitial, Model) - ! - implicit none - ! - class(GFS_interstitial_type) :: Interstitial - type(GFS_control_type), intent(in) :: Model - integer :: n, tracers - logical :: ltest - - !first, initialize the values (in case the values don't get initialized within if statements below) - Interstitial%nvdiff = Model%ntrac - Interstitial%mg3_as_mg2 = .false. - Interstitial%nn = Model%ntrac + 1 - Interstitial%itc = 0 - Interstitial%ntk = 0 - Interstitial%ntkev = 0 - Interstitial%tracers_total = 0 - Interstitial%otspt(:,:) = .true. - Interstitial%otsptflag(:) = .true. - Interstitial%nsamftrac = 0 - Interstitial%ncstrac = 0 - Interstitial%ntcwx = 0 - Interstitial%ntiwx = 0 - Interstitial%ntrwx = 0 - - ! perform aerosol convective transport and PBL diffusion - Interstitial%trans_aero = Model%cplchm .and. Model%trans_trac - - if (Model%imp_physics == Model%imp_physics_thompson) then - if (Model%ltaerosol) then - Interstitial%nvdiff = 12 - else - Interstitial%nvdiff = 9 - endif - if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 - elseif ( Model%imp_physics == Model%imp_physics_nssl ) then - if (Model%me == Model%master) write(0,*) 'nssl_settings1: nvdiff,ntrac = ', Interstitial%nvdiff, Model%ntrac - - IF ( Model%nssl_hail_on ) THEN - Interstitial%nvdiff = 16 ! Model%ntrac ! 17 - ELSE - Interstitial%nvdiff = 13 ! turn off hail q,N, and volume - ENDIF - ! write(*,*) 'NSSL: nvdiff, ntrac = ',Interstitial%nvdiff, Model%ntrac - if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 - IF ( Model%nssl_ccn_on ) THEN - Interstitial%nvdiff = Interstitial%nvdiff + 1 - ENDIF - if (Model%me == Model%master) write(0,*) 'nssl_settings2: nvdiff,ntrac = ', Interstitial%nvdiff, Model%ntrac - - elseif (Model%imp_physics == Model%imp_physics_wsm6) then - Interstitial%nvdiff = Model%ntrac -3 - if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1 - elseif (Model%ntclamt > 0) then ! for GFDL MP don't diffuse cloud amount - Interstitial%nvdiff = Model%ntrac - 1 - endif - - if (Model%imp_physics == Model%imp_physics_mg) then - if (abs(Model%fprcp) == 1) then - Interstitial%mg3_as_mg2 = .false. - elseif (Model%fprcp >= 2) then - if(Model%ntgl > 0 .and. (Model%mg_do_graupel .or. Model%mg_do_hail)) then - Interstitial%mg3_as_mg2 = .false. - else ! MG3 code run without graupel/hail i.e. as MG2 - Interstitial%mg3_as_mg2 = .true. - endif - endif - endif - - Interstitial%nscav = Model%ntrac - Model%ncnd + 2 - - if (Interstitial%nvdiff == Model%ntrac) then - Interstitial%ntcwx = Model%ntcw - Interstitial%ntiwx = Model%ntiw - Interstitial%ntrwx = Model%ntrw - else - if (Model%imp_physics == Model%imp_physics_wsm6) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - elseif (Model%imp_physics == Model%imp_physics_thompson) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - Interstitial%ntrwx = 4 - elseif (Model%imp_physics == Model%imp_physics_nssl) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - Interstitial%ntrwx = 4 - elseif (Model%imp_physics == Model%imp_physics_gfdl) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - Interstitial%ntrwx = 4 - ! F-A MP scheme - elseif (Model%imp_physics == Model%imp_physics_fer_hires) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - Interstitial%ntrwx = 4 - elseif (Model%imp_physics == Model%imp_physics_mg) then - Interstitial%ntcwx = 2 - Interstitial%ntiwx = 3 - Interstitial%ntrwx = 4 - elseif (Model%imp_physics == Model%imp_physics_zhao_carr) then - Interstitial%ntcwx = 2 - endif - endif - - if (Model%cplchm) then - ! Only the following microphysics schemes are supported with coupled chemistry - if (Model%imp_physics == Model%imp_physics_zhao_carr) then - Interstitial%nvdiff = 3 - elseif (Model%imp_physics == Model%imp_physics_mg) then - if (Model%ntgl > 0) then - Interstitial%nvdiff = 12 - else - Interstitial%nvdiff = 10 - endif - elseif (Model%imp_physics == Model%imp_physics_gfdl) then - Interstitial%nvdiff = 7 - elseif (Model%imp_physics == Model%imp_physics_thompson) then - if (Model%ltaerosol) then - Interstitial%nvdiff = 12 - else - Interstitial%nvdiff = 9 - endif - else - write(0,*) "Selected microphysics scheme is not supported when coupling with chemistry" - stop - endif - if (Interstitial%trans_aero) Interstitial%nvdiff = Interstitial%nvdiff + Model%ntchm - if (Model%ntke > 0) Interstitial%nvdiff = Interstitial%nvdiff + 1 ! adding tke to the list - endif - - if (Model%ntke > 0) Interstitial%ntkev = Interstitial%nvdiff - - if (Model%ntiw > 0) then - if (Model%ntclamt > 0) then - Interstitial%nn = Model%ntrac - 2 - else - Interstitial%nn = Model%ntrac - 1 - endif - elseif (Model%ntcw > 0) then - Interstitial%nn = Model%ntrac - else - Interstitial%nn = Model%ntrac + 1 - endif - - if (Model%cscnv .or. Model%satmedmf .or. Model%trans_trac ) then - Interstitial%otspt(:,:) = .true. ! otspt is used only for cscnv - Interstitial%otspt(1:3,:) = .false. ! this is for sp.hum, ice and liquid water - Interstitial%otsptflag(:) = .true. - tracers = 2 - do n=2,Model%ntrac - ltest = ( n /= Model%ntcw .and. n /= Model%ntiw .and. n /= Model%ntclamt .and. & - n /= Model%ntrw .and. n /= Model%ntsw .and. n /= Model%ntrnc .and. & - n /= Model%ntsnc .and. n /= Model%ntgl .and. n /= Model%ntgnc .and. & - n /= Model%nthl .and. n /= Model%nthnc .and. n /= Model%ntgv .and. & - n /= Model%nthv .and. n /= Model%ntccn .and. n /= Model%ntccna ) - Interstitial%otsptflag(n) = ltest - if ( ltest ) then - tracers = tracers + 1 - if (Model%ntke == n ) then - Interstitial%otspt(tracers+1,1) = .false. - Interstitial%ntk = tracers - endif - if (Model%ntlnc == n .or. Model%ntinc == n .or. Model%ntrnc == n .or. Model%ntsnc == n .or. Model%ntgnc == n) & -! if (ntlnc == n .or. ntinc == n .or. ntrnc == n .or. ntsnc == n .or.& -! ntrw == n .or. ntsw == n .or. ntgl == n) & - Interstitial%otspt(tracers+1,1) = .false. - if (Interstitial%trans_aero .and. Model%ntchs == n) Interstitial%itc = tracers - endif - enddo - Interstitial%tracers_total = tracers - 2 - endif ! end if_ras or cfscnv or samf - if (.not. Model%satmedmf .and. .not. Model%trans_trac .and. & - .not. Model%ras .and. .not. Model%do_shoc) then - Interstitial%nsamftrac = 0 - else - Interstitial%nsamftrac = Interstitial%tracers_total - endif - Interstitial%ncstrac = Interstitial%tracers_total + 3 - - end subroutine interstitial_setup_tracers - - subroutine interstitial_rad_reset (Interstitial, Model) - ! - implicit none - ! - class(GFS_interstitial_type) :: Interstitial - type(GFS_control_type), intent(in) :: Model - integer :: iGas - ! - Interstitial%aerodp = clear_val - Interstitial%alb1d = clear_val - if (.not. Model%do_RRTMGP) then - Interstitial%alpha = clear_val - end if - Interstitial%cldsa = clear_val - Interstitial%cldtaulw = clear_val - Interstitial%cldtausw = clear_val - Interstitial%clouds = clear_val - Interstitial%de_lgth = clear_val - Interstitial%delr = clear_val - Interstitial%dzlyr = clear_val - Interstitial%faerlw = clear_val - Interstitial%faersw = clear_val - Interstitial%gasvmr = clear_val - Interstitial%htlwc = clear_val - Interstitial%htlw0 = clear_val - Interstitial%htswc = clear_val - Interstitial%htsw0 = clear_val - Interstitial%idxday = 0 - Interstitial%kb = 0 - Interstitial%kd = 0 - Interstitial%kt = 0 - Interstitial%mbota = 0 - Interstitial%mtopa = 0 - Interstitial%nday = 0 - Interstitial%olyr = clear_val - Interstitial%plvl = clear_val - Interstitial%plyr = clear_val - Interstitial%qlyr = clear_val - Interstitial%raddt = clear_val - Interstitial%sfcalb = clear_val - Interstitial%tlvl = clear_val - Interstitial%tlyr = clear_val - Interstitial%tsfa = clear_val - Interstitial%tsfg = clear_val - - ! Interstitials used by both RRTMG and RRTMGP - Interstitial%scmpsw%uvbfc = clear_val - Interstitial%scmpsw%uvbf0 = clear_val - Interstitial%scmpsw%nirbm = clear_val - Interstitial%scmpsw%nirdf = clear_val - Interstitial%scmpsw%visbm = clear_val - Interstitial%scmpsw%visdf = clear_val - if (Model%do_RRTMGP) then - Interstitial%tracer = clear_val - Interstitial%tv_lay = clear_val - Interstitial%relhum = clear_val - Interstitial%qs_lay = clear_val - Interstitial%q_lay = clear_val - Interstitial%deltaZ = clear_val - Interstitial%deltaZc = clear_val - Interstitial%deltaP = clear_val - Interstitial%p_lev = clear_val - Interstitial%p_lay = clear_val - Interstitial%t_lev = clear_val - Interstitial%t_lay = clear_val - Interstitial%cloud_overlap_param = clear_val - Interstitial%precip_overlap_param = clear_val - Interstitial%fluxlwUP_allsky = clear_val - Interstitial%fluxlwDOWN_allsky = clear_val - Interstitial%fluxlwUP_clrsky = clear_val - Interstitial%fluxlwDOWN_clrsky = clear_val - Interstitial%fluxswUP_allsky = clear_val - Interstitial%fluxswDOWN_allsky = clear_val - Interstitial%fluxswUP_clrsky = clear_val - Interstitial%fluxswDOWN_clrsky = clear_val - Interstitial%aerosolslw = clear_val - Interstitial%aerosolssw = clear_val - Interstitial%cld_frac = clear_val - Interstitial%cld_lwp = clear_val - Interstitial%cld_reliq = clear_val - Interstitial%cld_iwp = clear_val - Interstitial%cld_reice = clear_val - Interstitial%cld_swp = clear_val - Interstitial%cld_resnow = clear_val - Interstitial%cld_rwp = clear_val - Interstitial%cld_rerain = clear_val - Interstitial%precip_frac = clear_val - Interstitial%cld_cnv_frac = clear_val - Interstitial%cnv_cloud_overlap_param = clear_val - Interstitial%cld_cnv_lwp = clear_val - Interstitial%cld_cnv_reliq = clear_val - Interstitial%cld_cnv_iwp = clear_val - Interstitial%cld_cnv_reice = clear_val - Interstitial%cld_pbl_lwp = clear_val - Interstitial%cld_pbl_reliq = clear_val - Interstitial%cld_pbl_iwp = clear_val - Interstitial%cld_pbl_reice = clear_val - Interstitial%sfc_emiss_byband = clear_val - Interstitial%sec_diff_byband = clear_val - Interstitial%sfc_alb_nir_dir = clear_val - Interstitial%sfc_alb_nir_dif = clear_val - Interstitial%sfc_alb_uvvis_dir = clear_val - Interstitial%sfc_alb_uvvis_dif = clear_val - Interstitial%toa_src_sw = clear_val - Interstitial%toa_src_lw = clear_val - do iGas=1,Model%nGases - Interstitial%gas_concentrations%concs(iGas)%conc = clear_val - end do - Interstitial%lw_optical_props_clrsky%tau = clear_val - Interstitial%lw_optical_props_aerosol%tau = clear_val - Interstitial%lw_optical_props_clouds%tau = clear_val - Interstitial%lw_optical_props_clouds%ssa = clear_val - Interstitial%lw_optical_props_clouds%g = clear_val - Interstitial%lw_optical_props_precip%tau = clear_val - Interstitial%lw_optical_props_precip%ssa = clear_val - Interstitial%lw_optical_props_precip%g = clear_val - Interstitial%lw_optical_props_cloudsByBand%tau = clear_val - Interstitial%lw_optical_props_cloudsByBand%ssa = clear_val - Interstitial%lw_optical_props_cloudsByBand%g = clear_val - Interstitial%lw_optical_props_precipByBand%tau = clear_val - Interstitial%lw_optical_props_precipByBand%ssa = clear_val - Interstitial%lw_optical_props_precipByBand%g = clear_val - Interstitial%lw_optical_props_cnvcloudsByBand%tau = clear_val - Interstitial%lw_optical_props_cnvcloudsByBand%ssa = clear_val - Interstitial%lw_optical_props_cnvcloudsByBand%g = clear_val - Interstitial%lw_optical_props_MYNNcloudsByBand%tau = clear_val - Interstitial%lw_optical_props_MYNNcloudsByBand%ssa = clear_val - Interstitial%lw_optical_props_MYNNcloudsByBand%g = clear_val - Interstitial%lw_optical_props_cnvclouds%tau = clear_val - Interstitial%lw_optical_props_cnvclouds%ssa = clear_val - Interstitial%lw_optical_props_cnvclouds%g = clear_val - Interstitial%sources%sfc_source = clear_val - Interstitial%sources%lay_source = clear_val - Interstitial%sources%lev_source_inc = clear_val - Interstitial%sources%lev_source_dec = clear_val - Interstitial%sources%sfc_source_Jac = clear_val - Interstitial%flxprf_lw%upfxc = clear_val - Interstitial%flxprf_lw%dnfxc = clear_val - Interstitial%flxprf_lw%upfx0 = clear_val - Interstitial%flxprf_lw%dnfx0 = clear_val - Interstitial%flxprf_sw%upfxc = clear_val - Interstitial%flxprf_sw%dnfxc = clear_val - Interstitial%flxprf_sw%upfx0 = clear_val - Interstitial%flxprf_sw%dnfx0 = clear_val - end if - ! - end subroutine interstitial_rad_reset - - subroutine interstitial_phys_reset (Interstitial, Model) - ! - implicit none - ! - class(GFS_interstitial_type) :: Interstitial - type(GFS_control_type), intent(in) :: Model - ! - Interstitial%adjsfculw_land = clear_val - Interstitial%adjsfculw_ice = clear_val - Interstitial%adjsfculw_water = clear_val - Interstitial%adjnirbmd = clear_val - Interstitial%adjnirbmu = clear_val - Interstitial%adjnirdfd = clear_val - Interstitial%adjnirdfu = clear_val - Interstitial%adjvisbmd = clear_val - Interstitial%adjvisbmu = clear_val - Interstitial%adjvisdfu = clear_val - Interstitial%adjvisdfd = clear_val - Interstitial%bexp1d = clear_val - Interstitial%cd = clear_val - Interstitial%cd_ice = Model%huge - Interstitial%cd_land = Model%huge - Interstitial%cd_water = Model%huge - Interstitial%cdq = clear_val - Interstitial%cdq_ice = Model%huge - Interstitial%cdq_land = Model%huge - Interstitial%cdq_water = Model%huge - Interstitial%chh_ice = Model%huge - Interstitial%chh_land = Model%huge - Interstitial%chh_water = Model%huge - Interstitial%cld1d = clear_val - Interstitial%cldf = clear_val - Interstitial%clw = clear_val - Interstitial%clw(:,:,2) = -999.9 - Interstitial%clx = clear_val - Interstitial%cmm_ice = Model%huge - Interstitial%cmm_land = Model%huge - Interstitial%cmm_water = Model%huge - Interstitial%cnvc = clear_val - Interstitial%cnvw = clear_val - Interstitial%ctei_r = clear_val - Interstitial%ctei_rml = clear_val - Interstitial%cumabs = clear_val - Interstitial%dd_mf = clear_val - Interstitial%del = clear_val - Interstitial%del_gz = clear_val - Interstitial%dlength = clear_val - Interstitial%dqdt = clear_val - Interstitial%dqsfc1 = clear_val - Interstitial%drain = clear_val - Interstitial%dt_mf = clear_val - Interstitial%dtdt = clear_val - Interstitial%dtsfc1 = clear_val - Interstitial%dtzm = clear_val - Interstitial%dudt = clear_val - Interstitial%dusfcg = clear_val - Interstitial%dusfc1 = clear_val - Interstitial%dvdftra = clear_val - Interstitial%dvdt = clear_val - Interstitial%dvsfcg = clear_val - Interstitial%dvsfc1 = clear_val - Interstitial%elvmax = clear_val - Interstitial%ep1d = clear_val - Interstitial%ep1d_ice = Model%huge - Interstitial%ep1d_land = Model%huge - Interstitial%ep1d_water = Model%huge - Interstitial%evap_ice = Model%huge - Interstitial%evap_land = Model%huge - Interstitial%evap_water = Model%huge - Interstitial%evbs = clear_val - Interstitial%evcw = clear_val - Interstitial%pah = clear_val - Interstitial%ecan = clear_val - Interstitial%etran = clear_val - Interstitial%edir = clear_val - Interstitial%ffhh_ice = Model%huge - Interstitial%ffhh_land = Model%huge - Interstitial%ffhh_water = Model%huge - Interstitial%fh2 = clear_val - Interstitial%fh2_ice = Model%huge - Interstitial%fh2_land = Model%huge - Interstitial%fh2_water = Model%huge - Interstitial%flag_cice = .false. - Interstitial%flag_guess = .false. - Interstitial%flag_iter = .true. - Interstitial%ffmm_ice = Model%huge - Interstitial%ffmm_land = Model%huge - Interstitial%ffmm_water = Model%huge - Interstitial%fm10 = clear_val - Interstitial%fm10_ice = Model%huge - Interstitial%fm10_land = Model%huge - Interstitial%fm10_water = Model%huge - Interstitial%frland = clear_val - Interstitial%fscav = clear_val - Interstitial%fswtr = clear_val - Interstitial%gabsbdlw = clear_val - Interstitial%gabsbdlw_ice = clear_val - Interstitial%gabsbdlw_land = clear_val - Interstitial%gabsbdlw_water = clear_val - Interstitial%gamma = clear_val - Interstitial%gamq = clear_val - Interstitial%gamt = clear_val - Interstitial%gflx = clear_val - Interstitial%gflx_ice = clear_val - Interstitial%gflx_land = clear_val - Interstitial%gflx_water = clear_val - Interstitial%gwdcu = clear_val - Interstitial%gwdcv = clear_val - Interstitial%zvfun = clear_val - Interstitial%hffac = clear_val - Interstitial%hflxq = clear_val - Interstitial%hflx_ice = Model%huge - Interstitial%hflx_land = Model%huge - Interstitial%hflx_water = Model%huge - Interstitial%dry = .false. - Interstitial%icy = .false. - Interstitial%lake = .false. - Interstitial%use_flake = .false. - Interstitial%ocean = .false. - Interstitial%islmsk = 0 - Interstitial%islmsk_cice = 0 - Interstitial%wet = .false. - Interstitial%kbot = Model%levs - Interstitial%kcnv = 0 - Interstitial%kinver = Model%levs - Interstitial%kpbl = 0 - Interstitial%ktop = 1 - Interstitial%oa4 = clear_val - Interstitial%oc = clear_val - Interstitial%prcpmp = clear_val - Interstitial%prnum = clear_val - Interstitial%qss_ice = Model%huge - Interstitial%qss_land = Model%huge - Interstitial%qss_water = Model%huge - Interstitial%raincd = clear_val - Interstitial%raincs = clear_val - Interstitial%rainmcadj = clear_val - Interstitial%rainp = clear_val - Interstitial%rb = clear_val - Interstitial%rb_ice = Model%huge - Interstitial%rb_land = Model%huge - Interstitial%rb_water = Model%huge - Interstitial%rhc = clear_val - Interstitial%runoff = clear_val - Interstitial%save_q = clear_val - Interstitial%save_t = clear_val - Interstitial%save_tcp = clear_val - Interstitial%save_u = clear_val - Interstitial%save_v = clear_val - Interstitial%sbsno = clear_val - Interstitial%sigma = clear_val - Interstitial%sigmaf = clear_val - Interstitial%sigmafrac = clear_val - Interstitial%sigmatot = clear_val - Interstitial%snowc = clear_val - Interstitial%snohf = clear_val - Interstitial%snowmt = clear_val - Interstitial%stress = clear_val - Interstitial%stress_ice = Model%huge - Interstitial%stress_land = Model%huge - Interstitial%stress_water = Model%huge - Interstitial%theta = clear_val - Interstitial%tprcp_ice = Model%huge - Interstitial%tprcp_land = Model%huge - Interstitial%tprcp_water = Model%huge - Interstitial%trans = clear_val - Interstitial%tseal = clear_val - Interstitial%tsfc_water = Model%huge - Interstitial%tsurf_ice = Model%huge - Interstitial%tsurf_land = Model%huge - Interstitial%tsurf_water = Model%huge - Interstitial%ud_mf = clear_val - Interstitial%uustar_ice = Model%huge - Interstitial%uustar_land = Model%huge - Interstitial%uustar_water = Model%huge - Interstitial%vdftra = clear_val - Interstitial%vegf1d = clear_val - Interstitial%lndp_vgf = clear_val - Interstitial%wcbmax = clear_val - Interstitial%wind = Model%huge - Interstitial%work1 = clear_val - Interstitial%work2 = clear_val - Interstitial%work3 = clear_val - Interstitial%xcosz = clear_val - Interstitial%xlai1d = clear_val - Interstitial%xmu = clear_val - Interstitial%z01d = clear_val - Interstitial%zt1d = clear_val - Interstitial%ztmax_ice = clear_val - Interstitial%ztmax_land = clear_val - Interstitial%ztmax_water = clear_val - -! UGWP common - Interstitial%tau_mtb = clear_val - Interstitial%tau_ogw = clear_val - Interstitial%tau_tofd = clear_val - Interstitial%tau_ngw = clear_val - Interstitial%tau_oss = clear_val - Interstitial%dudt_mtb = clear_val - Interstitial%dudt_tms = clear_val - Interstitial%zmtb = clear_val - Interstitial%zlwb = clear_val - Interstitial%zogw = clear_val - Interstitial%zngw = clear_val - -! CIRES UGWP v1 - if (Model%do_ugwp_v1) then - Interstitial%dudt_ngw = clear_val - Interstitial%dvdt_ngw = clear_val - Interstitial%dtdt_ngw = clear_val - Interstitial%kdis_ngw = clear_val - end if - -!-- GSL drag suite - if (Model%gwd_opt==3 .or. Model%gwd_opt==33 .or. & - Model%gwd_opt==2 .or. Model%gwd_opt==22) then - Interstitial%varss = clear_val - Interstitial%ocss = clear_val - Interstitial%oa4ss = clear_val - Interstitial%clxss = clear_val - end if -! - ! Reset fields that are conditional on physics choices - if (Model%imp_physics == Model%imp_physics_gfdl .or. Model%imp_physics == Model%imp_physics_thompson & - .or. Model%imp_physics == Model%imp_physics_nssl & - ) then - Interstitial%graupelmp = clear_val - Interstitial%icemp = clear_val - Interstitial%rainmp = clear_val - Interstitial%snowmp = clear_val - else if (Model%imp_physics == Model%imp_physics_mg) then - Interstitial%ncgl = clear_val - Interstitial%ncpr = clear_val - Interstitial%ncps = clear_val - Interstitial%qgl = clear_val - Interstitial%qrn = clear_val - Interstitial%qsnw = clear_val - Interstitial%qlcn = clear_val - Interstitial%qicn = clear_val - Interstitial%w_upi = clear_val - Interstitial%cf_upi = clear_val - Interstitial%cnv_mfd = clear_val - Interstitial%cnv_dqldt = clear_val - Interstitial%clcn = clear_val - Interstitial%cnv_fice = clear_val - Interstitial%cnv_ndrop = clear_val - Interstitial%cnv_nice = clear_val - end if - if (Model%do_shoc) then - Interstitial%qrn = clear_val - Interstitial%qsnw = clear_val - ! DH* updated version of shoc from May 22 2019 doesn't use qgl? remove? - Interstitial%qgl = clear_val - ! *DH - Interstitial%ncpi = clear_val - Interstitial%ncpl = clear_val - end if - if (Model%lsm == Model%lsm_noahmp) then - Interstitial%t2mmp = clear_val - Interstitial%q2mp = clear_val - end if - ! - ! Set flag for resetting maximum hourly output fields - Interstitial%max_hourly_reset = mod(Model%kdt-1, nint(Model%avg_max_length/Model%dtp)) == 0 - ! Use same logic in UFS to reset Thompson extended diagnostics - Interstitial%ext_diag_thompson_reset = Interstitial%max_hourly_reset - ! - ! Set flag for resetting radar reflectivity calculation - if (Model%nsradar_reset<0) then - Interstitial%radar_reset = .true. - else - Interstitial%radar_reset = mod(Model%kdt-1, nint(Model%nsradar_reset/Model%dtp)) == 0 - end if - ! - end subroutine interstitial_phys_reset - end module GFS_typedefs diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 48f5eadad4..e49b2b2696 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2556,6 +2556,7 @@ dimensions = (number_of_lines_in_internal_namelist) type = character kind = len=256 + active = (number_of_lines_in_internal_namelist > 0) [logunit] standard_name = iounit_of_log long_name = fortran unit number for logfile @@ -3949,24 +3950,6 @@ units = index dimensions = () type = integer -[isurban] - 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 = 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 = 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 = control_for_land_surface_scheme_thermal_conductivity_option long_name = choice for thermal conductivity option (see module_sf_noahlsm) @@ -7943,2975 +7926,12 @@ ######################################################################## [ccpp-table-properties] - name = GFS_interstitial_type + name = GFS_data_type type = ddt dependencies = [ccpp-arg-table] - name = GFS_interstitial_type - type = ddt -[adjsfculw_water] - 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 - 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 - long_name = surface upwelling longwave flux at current time over ice - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjnirbmd] - standard_name = surface_downwelling_direct_near_infrared_shortwave_flux - long_name = surface downwelling beam near-infrared shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjnirbmu] - standard_name = surface_upwelling_direct_near_infrared_shortwave_flux - long_name = surface upwelling beam near-infrared shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjnirdfd] - standard_name = surface_downwelling_diffuse_near_infrared_shortwave_flux - long_name = surface downwelling diffuse near-infrared shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjnirdfu] - standard_name = surface_upwelling_diffuse_near_infrared_shortwave_flux - long_name = surface upwelling diffuse near-infrared shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjvisbmd] - standard_name = surface_downwelling_direct_ultraviolet_and_visible_shortwave_flux - long_name = surface downwelling beam ultraviolet plus visible shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjvisbmu] - standard_name = surface_upwelling_direct_ultraviolet_and_visible_shortwave_flux - long_name = surface upwelling beam ultraviolet plus visible shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjvisdfu] - standard_name = surface_upwelling_diffuse_ultraviolet_and_visible_shortwave_flux - long_name = surface upwelling diffuse ultraviolet plus visible shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[adjvisdfd] - standard_name = surface_downwelling_diffuse_ultraviolet_and_visible_shortwave_flux - long_name = surface downwelling diffuse ultraviolet plus visible shortwave flux at current time - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[aerodp] - standard_name = atmosphere_optical_thickness_due_to_ambient_aerosol_particles - long_name = vertical integrated optical depth for various aerosol species - units = none - dimensions = (horizontal_loop_extent,number_of_species_for_aerosol_optical_depth) - type = real - kind = kind_phys -[alb1d] - standard_name = surface_albedo_perturbation - long_name = surface albedo perturbation - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[alpha] - standard_name = cloud_overlap_decorrelation_parameter - long_name = cloud overlap decorrelation parameter for RRTMG (but not for RRTMGP) - units = frac - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[bexp1d] - standard_name = perturbation_of_soil_type_b_parameter - long_name = perturbation of soil type "b" parameter - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cd] - standard_name = surface_drag_coefficient_for_momentum_in_air - long_name = surface exchange coeff for momentum - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cd_water] - standard_name = surface_drag_coefficient_for_momentum_in_air_over_water - long_name = surface exchange coeff for momentum over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cd_land] - standard_name = surface_drag_coefficient_for_momentum_in_air_over_land - long_name = surface exchange coeff for momentum over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cd_ice] - standard_name = surface_drag_coefficient_for_momentum_in_air_over_ice - long_name = surface exchange coeff for momentum over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cdq] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air - long_name = surface exchange coeff heat & moisture - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cdq_water] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_water - long_name = surface exchange coeff heat surface exchange coeff heat & moisture over ocean moisture over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cdq_land] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_land - long_name = surface exchange coeff heat & moisture over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cdq_ice] - standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ice - long_name = surface exchange coeff heat & moisture over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[chh_water] - standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_water - long_name = thermal exchange coefficient over water - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[chh_land] - standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_land - long_name = thermal exchange coefficient over land - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[chh_ice] - standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ice - long_name = thermal exchange coefficient over ice - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cf_upi] - standard_name = convective_cloud_fraction_for_microphysics - long_name = convective cloud fraction for microphysics - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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 - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cldsa] - standard_name = cloud_area_fraction_for_radiation - long_name = fraction of clouds for low, middle, high, total and BL - units = frac - dimensions = (horizontal_loop_extent,5) - type = real - kind = kind_phys -[cldtaulw] - standard_name = cloud_optical_depth_layers_at_10mu_band - long_name = approx 10mu band layer cloud optical depth - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[cldtausw] - standard_name = cloud_optical_depth_layers_at_0p55mu_band - long_name = approx .55mu band layer cloud optical depth - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[cld1d] - standard_name = cloud_work_function - long_name = cloud work function - units = m2 s-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[clouds(:,:,1)] - standard_name = total_cloud_fraction - long_name = layer total cloud fraction - units = frac - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,2)] - standard_name = cloud_liquid_water_path - long_name = layer cloud liquid water path - units = g m-2 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,3)] - standard_name = mean_effective_radius_for_liquid_cloud - long_name = mean effective radius for liquid cloud - units = um - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,4)] - standard_name = cloud_ice_water_path - long_name = layer cloud ice water path - units = g m-2 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,5)] - standard_name = mean_effective_radius_for_ice_cloud - long_name = mean effective radius for ice cloud - units = um - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,6)] - standard_name = cloud_rain_water_path - long_name = cloud rain water path - units = g m-2 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,7)] - standard_name = mean_effective_radius_for_rain_drop - long_name = mean effective radius for rain drop - units = um - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,8)] - standard_name = cloud_snow_water_path - long_name = cloud snow water path - units = g m-2 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clouds(:,:,9)] - standard_name = mean_effective_radius_for_snow_flake - long_name = mean effective radius for snow flake - units = um - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[clw] - 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_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_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_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_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 height_above_mean_sea_level higher than critical height - units = frac - dimensions = (horizontal_loop_extent,4) - type = real - kind = kind_phys -[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 height_above_mean_sea_level higher than critical height small scale - units = frac - dimensions = (horizontal_loop_extent,4) - type = real - kind = kind_phys - 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 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cmm_land] - standard_name = surface_drag_wind_speed_for_momentum_in_air_over_land - long_name = momentum exchange coefficient over land - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cmm_ice] - standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ice - long_name = momentum exchange coefficient over ice - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cnv_dqldt] - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_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_layer_dimension) - type = real - kind = kind_phys -[ctei_r] - standard_name = cloud_top_entrainment_instability_value - long_name = cloud top entrainment instability value - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ctei_rml] - standard_name = grid_sensitive_critical_cloud_top_entrainment_instability_criteria - long_name = grid sensitive critical cloud top entrainment instability criteria - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[cumabs] - standard_name = maximum_column_heating_rate - long_name = maximum heating rate in column - units = K s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dd_mf] - standard_name = instantaneous_atmosphere_downdraft_convective_mass_flux - long_name = (downdraft mass flux) * delt - units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[de_lgth] - standard_name = cloud_decorrelation_length - long_name = cloud decorrelation length - units = km - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[del] - standard_name = air_pressure_difference_between_midlayers - long_name = air pressure difference between midlayers - units = Pa - 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_interface_dimension) - type = real - kind = kind_phys -[delr] - standard_name = layer_pressure_thickness_for_radiation - long_name = layer pressure thickness on radiation levels - units = hPa - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[dlength] - standard_name = characteristic_grid_length_scale - long_name = representative horizontal length scale of grid box - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dqdt] - 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_layer_dimension,number_of_tracers) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - active = (index_of_mass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_in_tracer_concentration_array > 0) -[dqdt(:,:,index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array)] - standard_name = tendency_of_cloud_condensation_nuclei_number_concentration_due_to_model_physics - long_name = number concentration of cloud condensation nuclei tendency due to model physics - units = kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = ( index_of_cloud_condensation_nuclei_number_concentration_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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[dqsfc1] - standard_name = instantaneous_surface_upward_latent_heat_flux - long_name = surface upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[drain] - standard_name = subsurface_runoff_flux - long_name = subsurface runoff flux - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dtdt] - 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_layer_dimension) - type = real - kind = kind_phys -[dtsfc1] - standard_name = instantaneous_surface_upward_sensible_heat_flux - long_name = surface upward sensible heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dtzm] - standard_name = mean_change_over_depth_in_sea_water_temperature - long_name = mean of dT(z) (zsea1 to zsea2) - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dt_mf] - standard_name = instantaneous_atmosphere_detrainment_convective_mass_flux - long_name = (detrainment mass flux) * delt - units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[dudt] - 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_layer_dimension) - type = real - kind = kind_phys -[dusfcg] - standard_name = instantaneous_x_stress_due_to_gravity_wave_drag - long_name = zonal surface stress due to orographic gravity wave drag - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dusfc1] - standard_name = instantaneous_surface_x_momentum_flux - long_name = x momentum flux - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dvdftra] - 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_layer_dimension,number_of_vertical_diffusion_tracers) - type = real - kind = kind_phys -[dvdt] - 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_layer_dimension) - type = real - kind = kind_phys -[dvsfcg] - standard_name = instantaneous_y_stress_due_to_gravity_wave_drag - long_name = meridional surface stress due to orographic gravity wave drag - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dvsfc1] - standard_name = instantaneous_surface_y_momentum_flux - long_name = y momentum flux - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dzlyr] - standard_name = layer_thickness_for_radiation - long_name = layer thickness on radiation levels - units = km - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[elvmax] - standard_name = maximum_subgrid_orography - long_name = maximum of subgrid height_above_mean_sea_level - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ep1d] - standard_name = surface_upward_potential_latent_heat_flux - long_name = surface upward potential latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ep1d_water] - standard_name = surface_upward_potential_latent_heat_flux_over_water - long_name = surface upward potential latent heat flux over water - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ep1d_land] - standard_name = surface_upward_potential_latent_heat_flux_over_land - long_name = surface upward potential latent heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ep1d_ice] - standard_name = surface_upward_potential_latent_heat_flux_over_ice - long_name = surface upward potential latent heat flux over ice - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[evap_water] - standard_name = kinematic_surface_upward_latent_heat_flux_over_water - long_name = kinematic surface upward latent heat flux over water - units = kg kg-1 m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[evap_land] - standard_name = kinematic_surface_upward_latent_heat_flux_over_land - long_name = kinematic surface upward latent heat flux over land - units = kg kg-1 m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[evap_ice] - standard_name = kinematic_surface_upward_latent_heat_flux_over_ice - long_name = kinematic surface upward latent heat flux over ice - units = kg kg-1 m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[evbs] - standard_name = soil_upward_latent_heat_flux - long_name = soil upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[evcw] - standard_name = canopy_upward_latent_heat_flux - long_name = canopy upward latent heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[pah] - standard_name = total_precipitation_advected_heat - long_name = precipitation advected heat - total - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ecan] - standard_name = evaporation_of_intercepted_water - long_name = evaporation of intercepted water - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[etran] - standard_name = transpiration_rate - long_name = transpiration rate - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[edir] - standard_name = soil_surface_evaporation_rate - long_name = soil surface evaporation rate - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[faerlw] - standard_name = aerosol_optical_properties_for_longwave_bands_01_16 - long_name = aerosol optical properties for longwave bands 01-16 - units = mixed - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation,number_of_aerosol_output_fields_for_longwave_radiation) - type = real - kind = kind_phys -[faerlw(:,:,:,1)] - standard_name = aerosol_optical_depth_for_longwave_bands_01_16 - long_name = aerosol optical depth for longwave bands 01-16 - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) - type = real - kind = kind_phys -[faerlw(:,:,:,2)] - standard_name = 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,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) - type = real - kind = kind_phys -[faerlw(:,:,:,3)] - standard_name = aerosol_asymmetry_parameter_for_longwave_bands_01_16 - long_name = aerosol asymmetry parameter for longwave bands 01-16 - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_longwave_radiation) - type = real - kind = kind_phys -[faersw] - standard_name = aerosol_optical_properties_for_shortwave_bands_01_16 - long_name = aerosol optical properties for shortwave bands 01-16 - units = mixed - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation,number_of_aerosol_output_fields_for_shortwave_radiation) - type = real - kind = kind_phys -[faersw(:,:,:,1)] - standard_name = aerosol_optical_depth_for_shortwave_bands_01_16 - long_name = aerosol optical depth for shortwave bands 01-16 - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) - type = real - kind = kind_phys -[faersw(:,:,:,2)] - standard_name = 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,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) - type = real - kind = kind_phys -[faersw(:,:,:,3)] - standard_name = aerosol_asymmetry_parameter_for_shortwave_bands_01_16 - long_name = aerosol asymmetry parameter for shortwave bands 01-16 - units = none - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation,number_of_aerosol_bands_for_shortwave_radiation) - type = real - kind = kind_phys -[ffhh_water] - standard_name = Monin_Obukhov_similarity_function_for_heat_over_water - long_name = Monin-Obukhov similarity function for heat over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ffhh_land] - standard_name = Monin_Obukhov_similarity_function_for_heat_over_land - long_name = Monin-Obukhov similarity function for heat over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ffhh_ice] - standard_name = Monin_Obukhov_similarity_function_for_heat_over_ice - long_name = Monin-Obukhov similarity function for heat over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fh2] - standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m - long_name = Monin-Obukhov similarity parameter for heat at 2m - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fh2_water] - standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_water - long_name = Monin-Obukhov similarity parameter for heat at 2m over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fh2_land] - standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_land - long_name = Monin-Obukhov similarity parameter for heat at 2m over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fh2_ice] - standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ice - long_name = Monin-Obukhov similarity parameter for heat at 2m over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[flag_cice] - standard_name = flag_for_cice - long_name = flag for cice - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[flag_guess] - standard_name = flag_for_guess_run - long_name = flag for guess run - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[flag_iter] - standard_name = flag_for_iteration - long_name = flag for iteration - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[ffmm_water] - standard_name = Monin_Obukhov_similarity_function_for_momentum_over_water - long_name = Monin-Obukhov similarity function for momentum over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ffmm_land] - standard_name = Monin_Obukhov_similarity_function_for_momentum_over_land - long_name = Monin-Obukhov similarity function for momentum over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ffmm_ice] - standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ice - long_name = Monin-Obukhov similarity function for momentum over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fm10] - standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m - long_name = Monin-Obukhov similarity parameter for momentum at 10m - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fm10_water] - standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_water - long_name = Monin-Obukhov similarity parameter for momentum at 10m over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fm10_land] - standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_land - long_name = Monin-Obukhov similarity parameter for momentum at 10m over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fm10_ice] - standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ice - long_name = Monin-Obukhov similarity parameter for momentum at 10m over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[frain] - standard_name = dynamics_to_physics_timestep_ratio - long_name = ratio of dynamics timestep to physics timestep - units = none - dimensions = () - type = real - kind = kind_phys -[frland] - standard_name = land_area_fraction_for_microphysics - long_name = land area fraction used in microphysics schemes - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fscav] - standard_name = fraction_of_tracer_scavenged - long_name = fraction of the tracer (aerosols) that is scavenged by convection - units = km-1 - dimensions = (number_of_tracers_scavenged) - type = real - kind = kind_phys -[fswtr] - standard_name = fraction_of_cloud_top_water_scavenged - long_name = fraction of the tracer (cloud top water) that is scavenged by convection - units = km-1 - dimensions = (number_of_tracers_scavenged) - type = real - kind = kind_phys -[gabsbdlw] - standard_name = surface_downwelling_longwave_flux_absorbed_by_ground - long_name = total sky surface downward longwave flux absorbed by the ground - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gabsbdlw_water] - standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_water - long_name = total sky surface downward longwave flux absorbed by the ground over water - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gabsbdlw_land] - standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_land - long_name = total sky surface downward longwave flux absorbed by the ground over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gabsbdlw_ice] - standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_ice - long_name = total sky surface downward longwave flux absorbed by the ground over ice - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gamma] - standard_name = anisotropy_of_subgrid_orography - long_name = anisotropy of subgrid height_above_mean_sea_level - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gamq] - standard_name = countergradient_mixing_term_for_water_vapor - long_name = countergradient mixing term for water vapor - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gamt] - standard_name = countergradient_mixing_term_for_temperature - long_name = countergradient mixing term for temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gasvmr(:,:,1)] - standard_name = volume_mixing_ratio_of_co2 - long_name = volume mixing ratio co2 - 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_of_n2o - long_name = volume mixing ratio no2 - 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_of_ch4 - long_name = volume mixing ratio ch4 - 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_of_o2 - long_name = volume mixing ratio o2 - 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_of_co - long_name = volume mixing ratio co - 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_of_cfc11 - long_name = volume mixing ratio cfc11 - 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_of_cfc12 - long_name = volume mixing ratio cfc12 - 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_of_cfc22 - long_name = volume mixing ratio cfc22 - 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_of_ccl4 - long_name = volume mixing ratio ccl4 - 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_of_cfc113 - long_name = volume mixing ratio cfc113 - units = m3 m-3 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[gflx] - standard_name = upward_heat_flux_in_soil - long_name = soil heat flux - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gflx_water] - standard_name = upward_heat_flux_in_soil_over_water - long_name = soil heat flux over water - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gflx_land] - standard_name = upward_heat_flux_in_soil_over_land - long_name = soil heat flux over land - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[gflx_ice] - standard_name = upward_heat_flux_in_soil_over_ice - long_name = soil heat flux over ice - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[graupelmp] - standard_name = lwe_thickness_of_graupel_amount - long_name = explicit graupel fall on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_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_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_layer_dimension) - type = real - kind = kind_phys -[zvfun] - standard_name = function_of_surface_roughness_length_and_green_vegetation_fraction - long_name = function of surface roughness length and green vegetation fraction - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[hffac] - standard_name = surface_upward_sensible_heat_flux_reduction_factor - long_name = surface upward sensible heat flux reduction factor from canopy heat storage - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[hflxq] - standard_name = kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation - long_name = kinematic surface upward sensible heat flux reduced by surface roughness and vegetation - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[hflx_water] - standard_name = kinematic_surface_upward_sensible_heat_flux_over_water - long_name = kinematic surface upward sensible heat flux over water - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[hflx_land] - standard_name = kinematic_surface_upward_sensible_heat_flux_over_land - long_name = kinematic surface upward sensible heat flux over land - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[hflx_ice] - standard_name = kinematic_surface_upward_sensible_heat_flux_over_ice - long_name = kinematic surface upward sensible heat flux over ice - units = K m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[htlwc] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step_and_radiation_levels - long_name = total sky heating rate due to longwave radiation - units = K s-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[htlw0] - standard_name = tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels - long_name = clear sky heating rate due to longwave radiation - units = K s-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[htswc] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels - long_name = total sky heating rate due to shortwave radiation - units = K s-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[htsw0] - standard_name = tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels - long_name = clear sky heating rates due to shortwave radiation - units = K s-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[icemp] - standard_name = lwe_thickness_of_ice_amount - long_name = explicit ice fall on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_microphysics_scheme) -[dry] - standard_name = flag_nonzero_land_surface_fraction - long_name = flag indicating presence of some land surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[idxday] - standard_name = daytime_points - long_name = daytime points - units = index - dimensions = (horizontal_loop_extent) - type = integer -[icy] - standard_name = flag_nonzero_sea_ice_surface_fraction - long_name = flag indicating presence of some sea ice surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[lake] - standard_name = flag_nonzero_lake_surface_fraction - long_name = flag indicating presence of some lake surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[use_flake] - standard_name = flag_for_using_flake - long_name = flag indicating lake points using flake model - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[ocean] - standard_name = flag_nonzero_ocean_surface_fraction - long_name = flag indicating presence of some ocean surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[ipr] - standard_name = horizontal_index_of_printed_column - long_name = horizontal index of printed column - units = index - dimensions = () - type = integer -[islmsk] - standard_name = sea_land_ice_mask - long_name = sea/land/ice mask (=0/1/2) - units = flag - dimensions = (horizontal_loop_extent) - type = integer -[islmsk_cice] - standard_name = sea_land_ice_mask_cice - long_name = sea/land/ice mask cice (=0/1/2) - units = flag - dimensions = (horizontal_loop_extent) - type = integer -[itc] - 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] - standard_name = flag_nonzero_wet_surface_fraction - long_name = flag indicating presence of some ocean or lake surface area fraction - units = flag - dimensions = (horizontal_loop_extent) - type = logical -[kb] - standard_name = vertical_index_difference_between_layer_and_lower_bound - long_name = vertical index difference between layer and lower bound - units = index - dimensions = () - type = integer -[kbot] - standard_name = vertical_index_at_cloud_base - long_name = vertical index at cloud base - units = index - dimensions = (horizontal_loop_extent) - type = integer -[kcnv] - standard_name = flag_deep_convection - long_name = flag indicating whether convection occurs in column (0 or 1) - units = flag - dimensions = (horizontal_loop_extent) - type = integer -[kd] - standard_name = vertical_index_difference_between_inout_and_local - long_name = vertical index difference between in/out and local - units = index - dimensions = () - type = integer -[kinver] - standard_name = index_of_highest_temperature_inversion - long_name = index of highest temperature inversion - units = index - dimensions = (horizontal_loop_extent) - type = integer -[kpbl] - standard_name = vertical_index_at_top_of_atmosphere_boundary_layer - long_name = vertical index at top atmospheric boundary layer - units = index - dimensions = (horizontal_loop_extent) - type = integer -[kt] - standard_name = vertical_index_difference_between_layer_and_upper_bound - long_name = vertical index difference between layer and upper bound - units = index - dimensions = () - type = integer -[ktop] - standard_name = vertical_index_at_cloud_top - long_name = vertical index at cloud top - units = index - dimensions = (horizontal_loop_extent) - type = integer -[latidxprnt] - standard_name = latitude_index_in_debug_printouts - long_name = latitude index in debug printouts - units = index - dimensions = () - type = integer -[levi] - standard_name = vertical_interface_dimension_interstitial - long_name = vertical interface dimension - units = count - dimensions = () - type = integer -[lmk] - standard_name = adjusted_vertical_layer_dimension_for_radiation - long_name = adjusted number of vertical layers for radiation - units = count - dimensions = () - type = integer -[lmp] - standard_name = adjusted_vertical_level_dimension_for_radiation - long_name = adjusted number of vertical levels for radiation - units = count - dimensions = () - type = integer -[mbota] - standard_name = model_layer_number_at_cloud_base - long_name = vertical indices for low, middle and high cloud bases - units = index - dimensions = (horizontal_loop_extent,3) - type = integer -[mg3_as_mg2] - standard_name = flag_mg3_as_mg2 - long_name = flag for controlling prep for Morrison-Gettelman microphysics - units = flag - dimensions = () - type = logical -[mtopa] - standard_name = model_layer_number_at_cloud_top - long_name = vertical indices for low, middle and high cloud tops - units = index - dimensions = (horizontal_loop_extent,3) - type = integer -[nbdlw] - standard_name = number_of_aerosol_bands_for_longwave_radiation - long_name = number of aerosol bands for longwave radiation - units = count - dimensions = () - type = integer -[nbdsw] - standard_name = number_of_aerosol_bands_for_shortwave_radiation - long_name = number of aerosol bands for shortwave radiation - units = count - dimensions = () - type = integer -[ncgl] - standard_name = local_graupel_number_concentration - long_name = number concentration of graupel local to physics - units = kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_shoc) -[ncpl] - 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_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_shoc) -[ncpr] - standard_name = local_rain_number_concentration - long_name = number concentration of rain local to physics - units = kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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 - units = count - dimensions = () - type = integer -[nday] - standard_name = daytime_points_dimension - long_name = daytime points dimension - units = count - dimensions = () - type = integer -[nf_aelw] - standard_name = number_of_aerosol_output_fields_for_longwave_radiation - long_name = number of aerosol output fields for longwave radiation - units = count - dimensions = () - type = integer -[nf_aesw] - standard_name = number_of_aerosol_output_fields_for_shortwave_radiation - long_name = number of aerosol output fields for shortwave radiation - units = count - dimensions = () - type = integer -[nn] - standard_name = number_of_tracers_for_convective_transport - long_name = number of tracers for convective transport - units = count - dimensions = () - type = integer -[nsamftrac] - standard_name = number_of_tracers_for_samf - long_name = number of tracers for scale-aware mass flux schemes - units = count - dimensions = () - type = integer -[nscav] - standard_name = number_of_tracers_scavenged - long_name = number of tracers scavenged - units = count - dimensions = () - type = integer -[nspc1] - standard_name = number_of_species_for_aerosol_optical_depth - long_name = number of species for output aerosol optical depth plus total - 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 - units = index - dimensions = () - type = integer -[ntrwx] - standard_name = index_for_rain_water_vertical_diffusion_tracer - long_name = tracer index for rain water in the vertically diffused tracer array - units = index - dimensions = () - type = integer -[ntk] - standard_name = index_for_turbulent_kinetic_energy_convective_transport_tracer - long_name = index for turbulent kinetic energy in the convectively transported tracer array - units = index - dimensions = () - type = integer -[ntkev] - standard_name = index_for_turbulent_kinetic_energy_vertical_diffusion_tracer - long_name = index for turbulent kinetic energy in the vertically diffused tracer array - units = index - dimensions = () - type = integer -[nvdiff] - standard_name = number_of_vertical_diffusion_tracers - long_name = number of tracers to diffuse vertically - units = count - dimensions = () - type = integer -[oa4] - standard_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 height_above_mean_sea_level small scale - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - 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 height_above_mean_sea_level small scale - units = none - dimensions = (horizontal_loop_extent,4) - type = real - kind = kind_phys - 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 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 height_above_mean_sea_level small scale - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - 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 - units = kg kg-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[otspt] - standard_name = flag_convective_tracer_transport - long_name = flag to enable tracer transport by updrafts/downdrafts[(:,1)] or subsidence [(:,2)] - units = flag - dimensions = (number_of_tracers_plus_one,2) - type = logical -[otsptflag] - standard_name = flag_convective_tracer_transport_interstitial - long_name = flag for interstitial tracer transport - units = flag - dimensions = (number_of_tracers) - type = logical -[oz_coeffp5] - standard_name = number_of_coefficients_in_ozone_forcing_data_plus_five - long_name = number of coefficients in ozone forcing data plus five - units = index - dimensions = () - type = integer -[phys_hydrostatic] - standard_name = flag_for_hydrostatic_heating_from_physics - long_name = flag for use of hydrostatic heating in physics - units = flag - dimensions = () - type = logical -[plvl] - standard_name = air_pressure_at_interface_for_radiation_in_hPa - long_name = air pressure at vertical interface for radiation calculation - units = hPa - dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) - type = real - kind = kind_phys -[plyr] - standard_name = air_pressure_at_layer_for_radiation_in_hPa - long_name = air pressure at vertical layer for radiation calculation - units = hPa - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[prnum] - standard_name = prandtl_number - long_name = turbulent Prandtl number - units = none - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[q2mp] - standard_name = specific_humidity_at_2m_from_noahmp - long_name = 2 meter specific humidity from noahmp - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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 - units = kg kg-1 - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[qrn] - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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 - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[qss_water] - standard_name = surface_specific_humidity_over_water - long_name = surface air saturation specific humidity over water - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[qss_land] - standard_name = surface_specific_humidity_over_land - long_name = surface air saturation specific humidity over land - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[qss_ice] - standard_name = surface_specific_humidity_over_ice - long_name = surface air saturation specific humidity over ice - units = kg kg-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[radar_reset] - standard_name = flag_for_resetting_radar_reflectivity_calculation - long_name = flag for resetting radar reflectivity calculation - units = flag - dimensions = () - type = logical -[raddt] - standard_name = time_step_for_radiation - long_name = radiation time step - units = s - dimensions = () - type = real - kind = kind_phys -[raincd] - standard_name = lwe_thickness_of_deep_convective_precipitation_amount - long_name = deep convective rainfall amount on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[raincs] - standard_name = lwe_thickness_of_shallow_convective_precipitation_amount - long_name = shallow convective rainfall amount on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[rainmcadj] - standard_name = lwe_thickness_of_moist_convective_adj_precipitation_amount - long_name = adjusted moist convective rainfall amount on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[rainmp] - standard_name = lwe_thickness_of_explicit_rain_amount - long_name = explicit rain on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_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_layer_dimension) - type = real - kind = kind_phys -[rb] - standard_name = bulk_richardson_number_at_lowest_model_level - long_name = bulk Richardson number at the surface - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[rb_water] - standard_name = bulk_richardson_number_at_lowest_model_level_over_water - long_name = bulk Richardson number at the surface over water - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[rb_land] - standard_name = bulk_richardson_number_at_lowest_model_level_over_land - long_name = bulk Richardson number at the surface over land - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[rb_ice] - standard_name = bulk_richardson_number_at_lowest_model_level_over_ice - long_name = bulk Richardson number at the surface over ice - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[max_hourly_reset] - standard_name = flag_reset_maximum_hourly_fields - long_name = flag for resetting maximum hourly fields - units = flag - dimensions = () - type = logical -[ext_diag_thompson_reset] - standard_name = flag_reset_extended_diagnostics_output_arrays_from_thompson_microphysics - long_name = flag for resetting extended diagnostics output arrays from thompson microphysics - units = flag - dimensions = () - type = logical -[rhc] - standard_name = critical_relative_humidity - long_name = critical relative humidity - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[rho1] - standard_name = air_density_at_lowest_model_layer - long_name = air density at lowest model layer - units = kg m-3 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[runoff] - standard_name = surface_runoff_flux - long_name = surface runoff flux - units = kg m-2 s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_layer_dimension) - type = real - kind = kind_phys -[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_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_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_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_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_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_layer_dimension) - type = real - kind = kind_phys -[sbsno] - standard_name = snow_deposition_sublimation_upward_latent_heat_flux - long_name = latent heat flux from snow depo/subl - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[scmpsw] - standard_name = components_of_surface_downward_shortwave_fluxes - long_name = derived type for special components of surface downward shortwave fluxes - units = W m-2 - dimensions = (horizontal_loop_extent) - type = cmpfsw_type -[sfcalb] - standard_name = surface_albedo_components - long_name = surface albedo IR/UV/VIS components - units = frac - dimensions = (horizontal_loop_extent,number_of_components_for_surface_albedo) - type = real - kind = kind_phys -[sfcalb(:,1)] - standard_name = surface_albedo_due_to_near_IR_direct - long_name = surface albedo due to near IR direct beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sfcalb(:,2)] - standard_name = surface_albedo_due_to_near_IR_diffused - long_name = surface albedo due to near IR diffused beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sfcalb(:,3)] - standard_name = surface_albedo_due_to_UV_and_VIS_direct - long_name = surface albedo due to UV+VIS direct beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sfcalb(:,4)] - standard_name = surface_albedo_due_to_UV_and_VIS_diffused - long_name = surface albedo due to UV+VIS diffused beam - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sigma] - standard_name = slope_of_subgrid_orography - long_name = slope of subgrid height_above_mean_sea_level - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sigmaf] - standard_name = bounded_vegetation_area_fraction - long_name = areal fractional cover of green vegetation bounded on the bottom - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[sigmafrac] - standard_name = convective_updraft_area_fraction - long_name = convective updraft area fraction - units = frac - 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_layer_dimension) - type = real - kind = kind_phys -[skip_macro] - standard_name = flag_skip_macro - long_name = flag to skip cloud macrophysics in Morrison scheme - units = flag - dimensions = () - type = logical -[snowc] - standard_name = surface_snow_area_fraction - long_name = surface snow area fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[snohf] - standard_name = snow_freezing_rain_upward_latent_heat_flux - long_name = latent heat flux due to snow and frz rain - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[snowmp] - standard_name = lwe_thickness_of_snow_amount - long_name = explicit snow fall on physics timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - active = (control_for_microphysics_scheme == identifier_for_gfdl_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_nssl_microphysics_scheme) -[snowmt] - standard_name = surface_snow_melt - long_name = snow melt during timestep - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[stress] - standard_name = surface_wind_stress - long_name = surface wind stress - units = m2 s-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[stress_water] - standard_name = surface_wind_stress_over_water - long_name = surface wind stress over water - units = m2 s-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[stress_land] - standard_name = surface_wind_stress_over_land - long_name = surface wind stress over land - units = m2 s-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[stress_ice] - standard_name = surface_wind_stress_over_ice - long_name = surface wind stress over ice - units = m2 s-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[t2mmp] - standard_name = temperature_at_2m_from_noahmp - long_name = 2 meter temperature from noahmp - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys - 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 - units = degree - 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 - units = K - dimensions = (horizontal_loop_extent,adjusted_vertical_level_dimension_for_radiation) - type = real - kind = kind_phys -[tlyr] - standard_name = air_temperature_at_layer_for_radiation - long_name = air temperature at vertical layer for radiation calculation - units = K - dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation) - type = real - kind = kind_phys -[tprcp_water] - standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_water - long_name = total precipitation amount in each time step over water - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tprcp_land] - standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_land - long_name = total precipitation amount in each time step over land - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tprcp_ice] - standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ice - long_name = total precipitation amount in each time step over ice - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tracers_start_index] - standard_name = start_index_of_other_tracers - long_name = beginning index of the non-water tracer species - units = index - dimensions = () - type = integer -[tracers_total] - standard_name = number_of_total_tracers - long_name = total number of tracers - units = count - dimensions = () - type = integer -[trans_aero] - standard_name = flag_for_aerosol_convective_transport_and_PBL_diffusion - long_name = flag for aerosol convective transport and PBL diffusion - units = flag - dimensions = () - type = logical -[trans] - standard_name = transpiration_flux - long_name = total plant transpiration rate - units = W m-2 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tseal] - standard_name = surface_skin_temperature_for_nsst - long_name = ocean surface skin temperature - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsfa] - standard_name = surface_air_temperature_for_radiation - long_name = lowest model layer air temperature for radiation - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsfc_water] - 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 -[tsfg] - standard_name = surface_ground_temperature_for_radiation - long_name = surface ground temperature for radiation - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsurf_water] - standard_name = surface_skin_temperature_after_iteration_over_water - long_name = surface skin temperature after iteration over water - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsurf_land] - standard_name = surface_skin_temperature_after_iteration_over_land - long_name = surface skin temperature after iteration over land - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tsurf_ice] - standard_name = surface_skin_temperature_after_iteration_over_ice - long_name = surface skin temperature after iteration over ice - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tracers_water] - standard_name = number_of_water_tracers - long_name = number of water-related tracers - units = count - dimensions = () - type = integer -[ud_mf] - standard_name = instantaneous_atmosphere_updraft_convective_mass_flux - long_name = (updraft mass flux) * delt - units = kg m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys -[uustar_water] - standard_name = surface_friction_velocity_over_water - long_name = surface friction velocity over water - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[uustar_land] - standard_name = surface_friction_velocity_over_land - long_name = surface friction velocity over land - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[uustar_ice] - standard_name = surface_friction_velocity_over_ice - long_name = surface friction velocity over ice - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[vdftra] - standard_name = vertically_diffused_tracer_concentration - long_name = tracer concentration diffused by PBL scheme - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) - type = real - kind = kind_phys -[lndp_vgf] - standard_name = magnitude_of_perturbation_of_vegetation_fraction - long_name = magnitude of perturbation of vegetation fraction - units = frac - dimensions = () - type = real - kind = kind_phys -[vegf1d] - standard_name = perturbation_of_vegetation_fraction - long_name = perturbation of vegetation fraction - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[w_upi] - standard_name = vertical_velocity_for_updraft - long_name = vertical velocity for updraft - units = m s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - 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 - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[wind] - standard_name = wind_speed_at_lowest_model_layer - long_name = wind speed at lowest model level - units = m s-1 - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[work1] - standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes - long_name = grid size related coefficient used in scale-sensitive schemes - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[work2] - standard_name = grid_size_related_coefficient_used_in_scale_sensitive_schemes_complement - long_name = complement to work1 - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[work3] - standard_name = ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer - long_name = Exner function ratio bt midlayer and interface at 1st layer - units = ratio - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[xcosz] - standard_name = instantaneous_cosine_of_zenith_angle - long_name = cosine of zenith angle at current time - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[xlai1d] - standard_name = perturbation_of_leaf_area_index - long_name = perturbation of leaf area index - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[xmu] - standard_name = zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes - long_name = zenith angle temporal adjustment factor for shortwave - units = none - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[z01d] - standard_name = perturbation_of_momentum_roughness_length - long_name = perturbation of momentum roughness length - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ztmax_water] - standard_name = bounded_surface_roughness_length_for_heat_over_water - long_name = bounded surface roughness length for heat over water - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ztmax_land] - standard_name = bounded_surface_roughness_length_for_heat_over_land - long_name = bounded surface roughness length for heat over land - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[ztmax_ice] - standard_name = bounded_surface_roughness_length_for_heat_over_ice - long_name = bounded surface roughness length for heat over ice - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[zt1d] - standard_name = perturbation_of_heat_to_momentum_roughness_length_ratio - long_name = perturbation of heat to momentum roughness length ratio - units = frac - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[zmtb] - standard_name = height_of_mountain_blocking - long_name = height of mountain blocking drag - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dudt_ngw] - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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_layer_dimension) - type = real - kind = kind_phys - 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 - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[zogw] - standard_name = height_of_launch_level_of_orographic_gravity_wave - long_name = height of launch level of orographic gravity wave - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[zngw] - standard_name = height_of_launch_level_of_nonorographic_gravity_waves - long_name = height of launch level of non-stationary GWs - units = m - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tau_tofd] - standard_name = instantaneous_momentum_flux_due_to_turbulent_orographic_form_drag - long_name = instantaneous momentum flux due to TOFD - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tau_mtb] - standard_name = instantaneous_momentum_flux_due_to_mountain_blocking_drag - long_name = instantaneous momentum flux due to mountain blocking drag - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tau_ogw] - standard_name = instantaneous_momentum_flux_due_to_orographic_gravity_wave_drag - long_name = instantaneous momentum flux due to orographic gravity wave drag - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tau_oss] - standard_name = momentum_flux_due_to_subgrid_scale_orographic_gravity_wave_drag - long_name = momentum flux or stress due to SSO including OBL-OSS-OFD - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[tau_ngw] - standard_name = instantaneous_momentum_flux_due_to_nonstationary_gravity_wave - long_name = instantaneous momentum flux due to nonstationary gravity waves - units = Pa - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[dudt_mtb] - 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_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_layer_dimension) - type = real - kind = kind_phys -[qs_lay] - standard_name = saturation_vapor_pressure - long_name = saturation vapor pressure - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[q_lay] - standard_name = water_vapor_mixing_ratio - long_name = water vaport mixing ratio - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[p_lay] - standard_name = air_pressure_at_layer_for_RRTMGP - long_name = air pressure layer - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[p_lev] - standard_name = air_pressure_at_interface_for_RRTMGP - long_name = air pressure level - units = Pa - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[t_lay] - standard_name = air_temperature_at_layer_for_RRTMGP - long_name = air temperature layer - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[t_lev] - standard_name = air_temperature_at_interface_for_RRTMGP - long_name = air temperature layer - units = K - dimensions = (horizontal_loop_extent,vertical_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[tv_lay] - standard_name = virtual_temperature - long_name = layer virtual temperature - units = K - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[relhum] - standard_name = relative_humidity - long_name = layer relative humidity - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[deltaZ] - standard_name = layer_thickness - long_name = layer_thickness - units = m - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[deltaZc] - standard_name = layer_thickness_from_layer_center - long_name = layer_thickness - units = m - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[deltaP] - standard_name = layer_thickness_in_Pa - long_name = layer_thickness_in_Pa - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[tracer] - standard_name = chemical_tracers - long_name = chemical tracers - units = g g-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cloud_overlap_param] - standard_name = cloud_overlap_param - long_name = cloud overlap parameter for RRTMGP (but not for RRTMG) - units = km - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[precip_overlap_param] - standard_name = precip_overlap_param - long_name = precipitation overlap parameter - units = km - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxlwUP_allsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxlwDOWN_allsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxlwDOWN_clrsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxswUP_allsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxswDOWN_allsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxswUP_clrsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[fluxswDOWN_clrsky] - 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_interface_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[flxprf_lw] - 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_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_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 = mixed - 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) -[aerosolslw(:,:,:,1)] - 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_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_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_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 = mixed - 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) -[aerosolssw(:,:,:,1)] - 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_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_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_layer_dimension, number_of_shortwave_bands) - type = real - kind = kind_phys -[precip_frac] - standard_name = precipitation_fraction_by_layer - long_name = precipitation fraction in each layer - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cnv_cloud_overlap_param] - standard_name = convective_cloud_overlap_param - long_name = convective cloud overlap parameter - units = km - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_cnv_frac] - standard_name = convective_cloud_fraction_for_RRTMGP - long_name = layer convective cloud fraction - units = frac - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_cnv_lwp] - standard_name = convective_cloud_liquid_water_path - long_name = layer convective cloud liquid water path - units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_cnv_iwp] - standard_name = convective_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_cnv_reliq] - standard_name = mean_effective_radius_for_liquid_convective_cloud - long_name = mean effective radius for liquid convective cloud - units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_cnv_reice] - standard_name = mean_effective_radius_for_ice_convective_cloud - long_name = mean effective radius for ice convective cloud - units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_pbl_lwp] - standard_name = MYNN_SGS_cloud_liquid_water_path - long_name = layer convective cloud liquid water path - units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_pbl_iwp] - standard_name = MYNN_SGS_cloud_ice_water_path - long_name = layer convective cloud ice water path - units = g m-2 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_pbl_reliq] - standard_name = mean_effective_radius_for_liquid_MYNN_SGS_cloud - long_name = mean effective radius for liquid MYNN_SGS cloud - units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[cld_pbl_reice] - standard_name = mean_effective_radius_for_ice_MYNN_SGS_cloud - long_name = mean effective radius for ice MYNN_SGS cloud - units = um - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_clrsky] - standard_name = shortwave_optical_properties_for_clear_sky - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_cloudsByBand] - standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_cnvcloudsByBand] - standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str -[sw_optical_props_MYNNcloudsByBand] - standard_name = shortwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_cnvclouds] - standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_precipByBand] - standard_name = shortwave_optical_properties_for_precipitation_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_precip] - standard_name = shortwave_optical_properties_for_precipitation - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_clouds] - standard_name = shortwave_optical_properties_for_cloudy_atmosphere - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[sw_optical_props_aerosol] - standard_name = shortwave_optical_properties_for_aerosols - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[gas_concentrations] - standard_name = Gas_concentrations_for_RRTMGP_suite - long_name = DDT containing gas concentrations for RRTMGP radiation scheme - units = DDT - dimensions = () - type = ty_gas_concs - active = (flag_for_rrtmgp_radiation_scheme) -[sources] - standard_name = longwave_source_function - long_name = Fortran DDT containing RRTMGP source functions - units = DDT - dimensions = () - type = ty_source_func_lw - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_clrsky] - standard_name = longwave_optical_properties_for_clear_sky - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_1scl - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_clouds] - standard_name = longwave_optical_properties_for_cloudy_atmosphere - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_precip] - standard_name = longwave_optical_properties_for_precipitation - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_cloudsByBand] - standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_cnvcloudsByBand] - standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_MYNNcloudsByBand] - standard_name = longwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_cnvclouds] - standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_precipByBand] - standard_name = longwave_optical_properties_for_precipitation_by_band - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_2str - active = (flag_for_rrtmgp_radiation_scheme) -[lw_optical_props_aerosol] - standard_name = longwave_optical_properties_for_aerosols - long_name = Fortran DDT containing RRTMGP optical properties - units = DDT - dimensions = () - type = ty_optical_props_1scl - active = (flag_for_rrtmgp_radiation_scheme) -[sfc_emiss_byband] - standard_name = surface_emissivity_in_each_RRTMGP_LW_band - long_name = surface emissivity in each RRTMGP LW band - units = none - dimensions = (number_of_longwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sec_diff_byband] - 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_longwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sfc_alb_nir_dir] - standard_name = surface_albedo_nearIR_direct - long_name = near-IR (direct) surface albedo (sfc_alb_nir_dir) - units = none - dimensions = (number_of_shortwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sfc_alb_nir_dif] - standard_name = surface_albedo_nearIR_diffuse - long_name = near-IR (diffuse) surface albedo (sfc_alb_nir_dif) - units = none - dimensions = (number_of_shortwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sfc_alb_uvvis_dir] - standard_name = surface_albedo_uvvis_direct - long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir) - units = none - dimensions = (number_of_shortwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[sfc_alb_uvvis_dif] - standard_name = surface_albedo_uvvis_diffuse - long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif) - units = none - dimensions = (number_of_shortwave_bands,horizontal_loop_extent) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[toa_src_lw] - 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_longwave_spectral_points) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[toa_src_sw] - 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_shortwave_spectral_points) - type = real - kind = kind_phys - active = (flag_for_rrtmgp_radiation_scheme) -[rtg_ozone_index] - standard_name = vertically_diffused_tracer_index_of_ozone - long_name = number of tracers - units = count - dimensions = () - type = integer - -######################################################################## -[ccpp-table-properties] - name = GFS_data_type - type = ddt - dependencies = - -[ccpp-arg-table] - name = GFS_data_type + name = GFS_data_type type = ddt [Statein] standard_name = GFS_statein_type_instance @@ -10973,9 +7993,8 @@ name = GFS_typedefs type = module relative_path = ../physics/physics - dependencies = machine.F,physcons.F90,radlw_param.f,radsw_param.f,GFDL_parse_tracers.F90 - dependencies = rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90,rte-rrtmgp/rte/mo_optical_props.F90,rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90 - dependencies = rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90,rte-rrtmgp/rte/mo_rte_config.F90,rte-rrtmgp/rte/mo_source_functions.F90 + dependencies = machine.F,physcons.F90,radlw_param.f,radsw_param.f + dependencies = GFDL_parse_tracers.F90,h2o_def.f,ozne_def.f [ccpp-arg-table] name = GFS_typedefs @@ -11016,12 +8035,6 @@ units = DDT dimensions = () type = GFS_grid_type -[GFS_interstitial_type] - standard_name = GFS_interstitial_type - long_name = definition of type GFS_interstitial_type - units = DDT - dimensions = () - type = GFS_interstitial_type [GFS_radtend_type] standard_name = GFS_radtend_type long_name = definition of type GFS_radtend_type diff --git a/ccpp/driver/CCPP_driver.F90 b/ccpp/driver/CCPP_driver.F90 index fa2c8fa542..fd6814bf57 100644 --- a/ccpp/driver/CCPP_driver.F90 +++ b/ccpp/driver/CCPP_driver.F90 @@ -1,6 +1,6 @@ module CCPP_driver - use ccpp_api, only: ccpp_t + use ccpp_types, only: ccpp_t use ccpp_static_api, only: ccpp_physics_init, & ccpp_physics_timestep_init, & diff --git a/ccpp/driver/GFS_init.F90 b/ccpp/driver/GFS_init.F90 index 5e79f15b05..793ed4c2ec 100644 --- a/ccpp/driver/GFS_init.F90 +++ b/ccpp/driver/GFS_init.F90 @@ -6,8 +6,8 @@ module GFS_init GFS_sfcprop_type, GFS_coupling_type, & GFS_control_type, GFS_grid_type, & GFS_tbd_type, GFS_cldprop_type, & - GFS_radtend_type, GFS_diag_type, & - GFS_interstitial_type + GFS_radtend_type, GFS_diag_type + use CCPP_typedefs, only: GFS_interstitial_type implicit none diff --git a/ccpp/framework b/ccpp/framework index 8577ea3b86..e200083f25 160000 --- a/ccpp/framework +++ b/ccpp/framework @@ -1 +1 @@ -Subproject commit 8577ea3b865a6ff7406c6d26c7dd3ce835b7c101 +Subproject commit e200083f2503106541349d1af130f98c72047e11 diff --git a/ccpp/physics b/ccpp/physics index 0ccc8acfee..1ad43991c2 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 0ccc8acfee8a6b2baaa4e20541159fec82f2f8be +Subproject commit 1ad43991c2cbf98a2806efd17c4f1b6d094598f7