diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index f170e33ac..04a45711c 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -20,6 +20,7 @@
'physics/physics/Radiation/RRTMG/radsw_param.f',
'physics/physics/Radiation/RRTMG/radlw_param.f',
'physics/physics/photochem/module_ozphys.F90',
+ 'physics/physics/MP/TEMPO/TEMPO/module_mp_tempo_params.F90',
'physics/physics/photochem/module_h2ophys.F90',
'physics/physics/SFC_Models/Land/Noahmp/lnd_iau_mod.F90',
'../ccpp/data/CCPP_typedefs.F90',
@@ -46,6 +47,10 @@
'module_ozphys' : '',
'ty_ozphys' : '',
},
+ 'module_mp_tempo_params' : {
+ 'module_mp_tempo_params' : '',
+ 'ty_tempo_cfg' : '',
+ },
'module_h2ophys' : {
'module_h2ophys' : '',
'ty_h2ophys' : '',
@@ -163,8 +168,9 @@
'physics/physics/photochem/module_h2ophys.F90',
'physics/physics/photochem/module_ozphys.F90',
'physics/physics/MP/Ferrier_Aligo/mp_fer_hires.F90',
- 'physics/physics/MP/GFDL/gfdl_cloud_microphys.F90',
+ 'physics/physics/MP/GFDL/v1_2019/gfdl_cloud_microphys.F90',
'physics/physics/MP/GFDL/fv_sat_adj.F90',
+ 'physics/physics/MP/GFDL/v3_2022/gfdl_cloud_microphys_v3.F90',
'physics/physics/MP/Morrison_Gettelman/m_micro.F90',
'physics/physics/MP/Morrison_Gettelman/m_micro_pre.F90',
'physics/physics/MP/Morrison_Gettelman/m_micro_post.F90',
@@ -172,6 +178,9 @@
'physics/physics/MP/Thompson/mp_thompson_pre.F90',
'physics/physics/MP/Thompson/mp_thompson.F90',
'physics/physics/MP/Thompson/mp_thompson_post.F90',
+ 'physics/physics/MP/TEMPO/mp_tempo_pre.F90',
+ 'physics/physics/MP/TEMPO/mp_tempo.F90',
+ 'physics/physics/MP/TEMPO/mp_tempo_post.F90',
'physics/physics/MP/Zhao_Carr/zhaocarr_gscond.f',
'physics/physics/MP/Zhao_Carr/zhaocarr_precpd.f',
'physics/physics/PBL/HEDMF/hedmf.f',
diff --git a/ccpp/data/CCPP_typedefs.F90 b/ccpp/data/CCPP_typedefs.F90
index 8b24554cc..d9aaebf3b 100644
--- a/ccpp/data/CCPP_typedefs.F90
+++ b/ccpp/data/CCPP_typedefs.F90
@@ -820,7 +820,7 @@ subroutine gfs_interstitial_create (Interstitial, IM, Model)
!
! 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 &
+ .or. Model%imp_physics == Model%imp_physics_tempo .or. Model%imp_physics == Model%imp_physics_nssl &
) then
allocate (Interstitial%graupelmp (IM))
allocate (Interstitial%icemp (IM))
@@ -908,7 +908,8 @@ subroutine gfs_interstitial_setup_tracers(Interstitial, Model)
! 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%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) then
if (Model%ltaerosol) then
Interstitial%nvdiff = 12
else if (Model%mraerosol) then
@@ -961,7 +962,8 @@ subroutine gfs_interstitial_setup_tracers(Interstitial, Model)
if (Model%imp_physics == Model%imp_physics_wsm6) then
Interstitial%ntcwx = 2
Interstitial%ntiwx = 3
- elseif (Model%imp_physics == Model%imp_physics_thompson) then
+ elseif (Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) then
Interstitial%ntcwx = 2
Interstitial%ntiwx = 3
Interstitial%ntrwx = 4
@@ -999,7 +1001,8 @@ subroutine gfs_interstitial_setup_tracers(Interstitial, Model)
endif
elseif (Model%imp_physics == Model%imp_physics_gfdl) then
Interstitial%nvdiff = 7
- elseif (Model%imp_physics == Model%imp_physics_thompson) then
+ elseif (Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) then
if (Model%ltaerosol) then
Interstitial%nvdiff = 12
else if (Model%mraerosol) then
@@ -1421,7 +1424,7 @@ subroutine gfs_interstitial_phys_reset (Interstitial, Model)
!
! 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 &
+ .or. Model%imp_physics == Model%imp_physics_tempo .or. Model%imp_physics == Model%imp_physics_nssl &
) then
Interstitial%graupelmp = clear_val
Interstitial%icemp = clear_val
diff --git a/ccpp/data/CCPP_typedefs.meta b/ccpp/data/CCPP_typedefs.meta
index c4de321ca..6e6f8e90c 100644
--- a/ccpp/data/CCPP_typedefs.meta
+++ b/ccpp/data/CCPP_typedefs.meta
@@ -1128,7 +1128,7 @@
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)
+ 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 .or. control_for_microphysics_scheme == identifier_for_tempo_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
@@ -1220,7 +1220,7 @@
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)
+ 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 .or. control_for_microphysics_scheme == identifier_for_tempo_microphysics_scheme)
[dry]
standard_name = flag_nonzero_land_surface_fraction
long_name = flag indicating presence of some land surface area fraction
@@ -1711,7 +1711,7 @@
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)
+ 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 .or. control_for_microphysics_scheme == identifier_for_tempo_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
@@ -1967,7 +1967,7 @@
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)
+ 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 .or. control_for_microphysics_scheme == identifier_for_tempo_microphysics_scheme)
[snowmt]
standard_name = surface_snow_melt
long_name = snow melt during timestep
diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90
index dcc9bf9b8..f8d60e67b 100644
--- a/ccpp/data/GFS_typedefs.F90
+++ b/ccpp/data/GFS_typedefs.F90
@@ -11,10 +11,12 @@ module GFS_typedefs
con_omega, con_rerth, con_psat, karman, rainmin,&
con_c, con_plnk, con_boltz, con_solr_2008, &
con_solr_2002, con_thgni, con_1ovg, con_rgas, &
- con_avgd, con_amd, con_amw
+ con_avgd, con_amd, con_amw, con_one, con_p001, &
+ con_secinday
use module_radsw_parameters, only: topfsw_type, sfcfsw_type
use module_radlw_parameters, only: topflw_type, sfcflw_type
+ use module_mp_tempo_params, only: ty_tempo_cfg
use module_ozphys, only: ty_ozphys
use module_h2ophys, only: ty_h2ophys
use land_iau_mod, only: land_iau_external_data_type, land_iau_control_type, &
@@ -950,6 +952,7 @@ module GFS_typedefs
integer :: imp_physics !< choice of microphysics scheme
integer :: imp_physics_gfdl = 11 !< choice of GFDL microphysics scheme
integer :: imp_physics_thompson = 8 !< choice of Thompson microphysics scheme
+ integer :: imp_physics_tempo = 88 !< choice of TEMPO microphysics scheme
integer :: imp_physics_wsm6 = 6 !< choice of WSMG microphysics scheme
integer :: imp_physics_zhao_carr = 99 !< choice of Zhao-Carr microphysics scheme
integer :: imp_physics_zhao_carr_pdf = 98 !< choice of Zhao-Carr microphysics scheme with PDF clouds
@@ -1034,6 +1037,7 @@ module GFS_typedefs
!--- Thompson's microphysical parameters
logical :: ltaerosol !< flag for aerosol version
logical :: mraerosol !< flag for merra2_aerosol_aware
+ logical :: lthailaware !< flag for TEMPO hail-aware
logical :: lradar !< flag for radar reflectivity
real(kind=kind_phys) :: nsfullradar_diag!< seconds between resetting radar reflectivity calculation
real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s
@@ -1042,6 +1046,7 @@ module GFS_typedefs
real(kind=kind_phys) :: dt_inner !< time step for the inner loop in s
logical :: sedi_semi !< flag for semi Lagrangian sedi of rain
integer :: decfl !< deformed CFL factor
+ type(ty_tempo_cfg) :: tempo_cfg !< Thompson MP configuration information.
logical :: thompson_mp_is_init=.false. !< Local scheme initialization flag
!--- GFDL microphysical paramters
@@ -3292,7 +3297,9 @@ subroutine coupling_create (Coupling, Model)
endif
!--- needed for Thompson's aerosol option
- if(Model%imp_physics == Model%imp_physics_thompson .and. (Model%ltaerosol .or. Model%mraerosol)) then
+ if((Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) .and. &
+ (Model%ltaerosol .or. Model%mraerosol)) then
allocate (Coupling%nwfa2d (IM))
allocate (Coupling%nifa2d (IM))
Coupling%nwfa2d = clear_val
@@ -3618,6 +3625,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- Thompson microphysical parameters
logical :: ltaerosol = .false. !< flag for aerosol version
logical :: mraerosol = .false. !< flag for merra2_aerosol_aware
+ logical :: lthailaware = .false. !< flag for TEMPO hail-aware
logical :: lradar = .false. !< flag for radar reflectivity
real(kind=kind_phys) :: nsfullradar_diag = -999.0 !< seconds between resetting radar reflectivity calculation, set to <0 for every time step
real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate
@@ -4130,8 +4138,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
mg_do_graupel, mg_do_hail, mg_nccons, mg_nicons, mg_ngcons, &
mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, &
mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, &
- ltaerosol, lradar, nsfullradar_diag, lrefres, ttendlim, &
- ext_diag_thompson, dt_inner, lgfdlmprad, &
+ ltaerosol, lthailaware, lradar, nsfullradar_diag, lrefres, &
+ ttendlim, ext_diag_thompson, dt_inner, lgfdlmprad, &
sedi_semi, decfl, &
nssl_cccn, nssl_alphah, nssl_alphahl, &
nssl_alphar, nssl_ehw0, nssl_ehlw0, &
@@ -4793,6 +4801,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- Thompson MP parameters
Model%ltaerosol = ltaerosol
Model%mraerosol = mraerosol
+ Model%lthailaware = lthailaware
if (Model%ltaerosol .and. Model%mraerosol) then
write(0,*) 'Logic error: Only one Thompson aerosol option can be true, either ltaerosol or mraerosol)'
stop
@@ -4808,6 +4817,16 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
endif
Model%sedi_semi = sedi_semi
Model%decfl = decfl
+
+!--- TEMPO MP parameters
+ ! DJS to Anders: Maybe we put more of these nml options into the TEMPO configuration type?
+ Model%tempo_cfg%aerosol_aware = (ltaerosol .or. mraerosol)
+ Model%tempo_cfg%hail_aware = lthailaware
+ if (Model%ltaerosol .and. Model%mraerosol) then
+ write(0,*) 'Logic error: Only one TEMPO aerosol option can be true, either ltaerosol or mraerosol)'
+ stop
+ end if
+
!--- F-A MP parameters
Model%rhgrd = rhgrd
Model%spec_adv = spec_adv
@@ -4911,7 +4930,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%exticeden = exticeden
if (Model%exticeden .and. &
(Model%imp_physics /= Model%imp_physics_gfdl .and. Model%imp_physics /= Model%imp_physics_thompson .and. &
- Model%imp_physics /= Model%imp_physics_nssl )) then
+ Model%imp_physics /= Model%imp_physics_nssl .and. Model%imp_physics /= Model%imp_physics_tempo)) then
!see GFS_MP_generic_post.F90; exticeden is only compatible with GFDL,
!Thompson, or NSSL MP
print *,' Using exticeden = T is only valid when using GFDL, Thompson, or NSSL microphysics.'
@@ -5840,8 +5859,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- BEGIN CODE FROM COMPNS_PHYSICS
!--- shoc scheme
if (do_shoc) then
- if (Model%imp_physics == Model%imp_physics_thompson) then
- print *,'SHOC is not currently compatible with Thompson MP -- shutting down'
+ if ((Model%imp_physics == Model%imp_physics_thompson) .or. &
+ (Model%imp_physics == Model%imp_physics_tempo)) then
+ print *,'SHOC is not currently compatible with Thompson/TEMPO MP -- shutting down'
stop
endif
Model%nshoc_3d = 3
@@ -6201,7 +6221,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
' num_p2d =',Model%num_p2d
- elseif (Model%imp_physics == Model%imp_physics_thompson) then !Thompson microphysics
+ elseif (Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) then !Thompson/TEMPO microphysics
Model%npdf3d = 0
Model%num_p3d = 3
Model%num_p2d = 1
@@ -6218,9 +6239,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
print *,' Thompson MP requires effr_in to be set to .true. - job aborted'
stop
end if
- if (Model%me == Model%master) print *,' Using Thompson double moment microphysics', &
+ if (Model%me == Model%master) print *,' Using Thompson/TEMPO double moment microphysics', &
' ltaerosol = ',Model%ltaerosol, &
' mraerosol = ',Model%mraerosol, &
+ ' lthailaware = ',Model%lthailaware, &
' ttendlim =',Model%ttendlim, &
' ext_diag_thompson =',Model%ext_diag_thompson, &
' dt_inner =',Model%dt_inner, &
@@ -6768,10 +6790,12 @@ subroutine control_print(Model)
print *, ' wminco : ', Model%wminco
print *, ' '
endif
- if (Model%imp_physics == Model%imp_physics_wsm6 .or. Model%imp_physics == Model%imp_physics_thompson) then
+ if ((Model%imp_physics == Model%imp_physics_wsm6) .or. (Model%imp_physics == Model%imp_physics_thompson) .or. &
+ (Model%imp_physics == Model%imp_physics_tempo)) then
print *, ' Thompson microphysical parameters'
print *, ' ltaerosol : ', Model%ltaerosol
print *, ' mraerosol : ', Model%mraerosol
+ print *, ' lthailaware : ', Model%lthailaware
print *, ' lradar : ', Model%lradar
print *, ' nsfullradar_diag : ', Model%nsfullradar_diag
print *, ' lrefres : ', Model%lrefres
diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta
index 7ad9c6bae..b05d879d7 100644
--- a/ccpp/data/GFS_typedefs.meta
+++ b/ccpp/data/GFS_typedefs.meta
@@ -3219,7 +3219,7 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
- active = (control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .and. (flag_for_aerosol_physics .or. do_merra2_aerosol_awareness))
+ active = ((control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_tempo_microphysics_scheme) .and. (flag_for_aerosol_physics .or. do_merra2_aerosol_awareness))
[nifa2d]
standard_name = tendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layer
long_name = instantaneous ice-friendly sfc aerosol source
@@ -3227,7 +3227,7 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
- active = (control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .and. (flag_for_aerosol_physics .or. do_merra2_aerosol_awareness))
+ active = ((control_for_microphysics_scheme == identifier_for_thompson_microphysics_scheme .or. control_for_microphysics_scheme == identifier_for_tempo_microphysics_scheme) .and. (flag_for_aerosol_physics .or. do_merra2_aerosol_awareness))
[ebu_smoke]
standard_name = ebu_smoke
long_name = buffer of vertical fire emission
@@ -4401,6 +4401,12 @@
units = flag
dimensions = ()
type = integer
+[imp_physics_tempo]
+ standard_name = identifier_for_tempo_microphysics_scheme
+ long_name = choice of TEMPO microphysics scheme
+ units = flag
+ dimensions = ()
+ type = integer
[imp_physics_wsm6]
standard_name = identifier_for_wsm6_microphysics_scheme
long_name = choice of WSM6 microphysics scheme
@@ -4925,6 +4931,12 @@
units = flag
dimensions = ()
type = logical
+[lthailaware]
+ standard_name = flag_for_hail_physics
+ long_name = flag for hail physics
+ units = flag
+ dimensions = ()
+ type = logical
[mraerosol]
standard_name = do_merra2_aerosol_awareness
long_name = flag for merra2 aerosol-aware physics for example the thompson microphysics
@@ -4975,6 +4987,12 @@
units = count
dimensions = ()
type = integer
+[tempo_cfg]
+ standard_name = configuration_for_TEMPO_microphysics
+ long_name = configuration information for TEMPO microphysics
+ units = mixed
+ dimensions = ()
+ type = ty_tempo_cfg
[thompson_mp_is_init]
standard_name = flag_for_thompson_mp_scheme_initialization
long_name = flag carrying scheme initialization status
@@ -10254,6 +10272,7 @@
relative_path = ../physics/physics/
dependencies = hooks/machine.F,hooks/physcons.F90
dependencies = Radiation/RRTMG/radlw_param.f,Radiation/RRTMG/radsw_param.f
+ dependencies = MP/TEMPO/TEMPO/module_mp_tempo_params.F90
dependencies = photochem/module_ozphys.F90,photochem/module_h2ophys.F90
dependencies = SFC_Models/Land/Noahmp/lnd_iau_mod.F90
@@ -10634,3 +10653,24 @@
dimensions = ()
type = real
kind = kind_phys
+[con_one]
+ standard_name = constant_one
+ long_name = mathematical constant of one
+ units = 1
+ dimensions = ()
+ type = real
+ kind = kind_phys
+[con_p001]
+ standard_name = constant_one_hundredth
+ long_name = mathematical constant for one hundredth
+ units = 1
+ dimensions = ()
+ type = real
+ kind = kind_phys
+[con_secinday]
+ standard_name = seconds_in_a_day
+ long_name = number of seconds in a day
+ units = s
+ dimensions = ()
+ type = real
+ kind = kind_phys
diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90
index a45610d07..86e61bbc7 100644
--- a/ccpp/driver/GFS_diagnostics.F90
+++ b/ccpp/driver/GFS_diagnostics.F90
@@ -3851,7 +3851,7 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
! Cloud effective radii from Microphysics
if (Model%imp_physics == Model%imp_physics_thompson .or. Model%imp_physics == Model%imp_physics_fer_hires .or. &
- Model%imp_physics == Model%imp_physics_nssl ) then
+ Model%imp_physics == Model%imp_physics_nssl .or. Model%imp_physics == Model%imp_physics_tempo ) then
idx = idx + 1
ExtDiag(idx)%axes = 3
ExtDiag(idx)%name = 'cleffr'
diff --git a/ccpp/driver/GFS_restart.F90 b/ccpp/driver/GFS_restart.F90
index 2af537395..fcca0afd9 100644
--- a/ccpp/driver/GFS_restart.F90
+++ b/ccpp/driver/GFS_restart.F90
@@ -140,7 +140,8 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop,
num2d = num2d + 2
endif
! Thompson aerosol-aware
- if (Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
+ if ((Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) .and. (Model%ltaerosol)) then
num2d = num2d + 2
endif
if (Model%do_cap_suppress .and. Model%num_dfi_radar>0) then
@@ -421,7 +422,8 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop,
Restart(idx)%data%var2 => Sfcprop%rainncprv(:)
endif
! Thompson aerosol-aware
- if (Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
+ if ((Model%imp_physics == Model%imp_physics_thompson .or. &
+ Model%imp_physics == Model%imp_physics_tempo) .and. Model%ltaerosol) then
idx = idx + 1
Restart(idx)%name = 'thompson_2d_nwfa2d'
Restart(idx)%axes = 2
diff --git a/ccpp/physics b/ccpp/physics
index c86be50a3..54672d250 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit c86be50a34c600423fcd5df558ff802d5286af10
+Subproject commit 54672d25027e1c6814ddce8cda5853d824ec1de5
diff --git a/ccpp/suites/suite_FV3_GFS_v16_gfdlmpv3.xml b/ccpp/suites/suite_FV3_GFS_v16_gfdlmpv3.xml
new file mode 100644
index 000000000..604343d63
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_v16_gfdlmpv3.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ fv_sat_adj
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_rrtmg_pre
+ GFS_radiation_surface
+ rad_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw
+ rrtmg_lw_post
+ GFS_rrtmg_post
+
+
+
+
+ GFS_suite_stateout_reset
+ get_prs_fv3
+ GFS_suite_interstitial_1
+ GFS_surface_generic_pre
+ GFS_surface_composites_pre
+ dcyc2t3
+ GFS_surface_composites_inter
+ GFS_suite_interstitial_2
+
+
+
+ sfc_diff
+ GFS_surface_loop_control_part1
+ sfc_nst_pre
+ sfc_nst
+ sfc_nst_post
+ lsm_noah
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ satmedmfvdifq
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ GFS_suite_stateout_update
+
+
+
+
+ GFS_photochemistry
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ GFS_DCNV_generic_pre
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ gfdl_cloud_microphys_v3
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+ GFS_physics_post
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1_tempo.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1_tempo.xml
new file mode 100644
index 000000000..cd1d1aff5
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1_tempo.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_rrtmg_pre
+ GFS_radiation_surface
+ rad_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw
+ rrtmg_lw_post
+ GFS_rrtmg_post
+
+
+
+
+ GFS_suite_stateout_reset
+ get_prs_fv3
+ GFS_suite_interstitial_1
+ GFS_surface_generic_pre
+ GFS_surface_composites_pre
+ dcyc2t3
+ GFS_surface_composites_inter
+ GFS_suite_interstitial_2
+
+
+
+ sfc_diff
+ GFS_surface_loop_control_part1
+ sfc_nst_pre
+ sfc_nst
+ sfc_nst_post
+ noahmpdrv
+ sfc_land
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ satmedmfvdifq
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ ugwpv1_gsldrag
+ ugwpv1_gsldrag_post
+ GFS_GWD_generic_post
+ GFS_suite_stateout_update
+
+
+
+
+ GFS_photochemistry
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ GFS_DCNV_generic_pre
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ mp_tempo_pre
+
+
+ mp_tempo
+
+
+ mp_tempo_post
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+ GFS_physics_post
+
+
+
+
diff --git a/ccpp/suites/suite_FV3_HAFS_v1_gfdlmpv3_tedmf.xml b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmpv3_tedmf.xml
new file mode 100644
index 000000000..b222245f2
--- /dev/null
+++ b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmpv3_tedmf.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ fv_sat_adj
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_rrtmg_pre
+ GFS_radiation_surface
+ rad_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw
+ rrtmg_lw_post
+ GFS_rrtmg_post
+
+
+
+
+ GFS_suite_stateout_reset
+ get_prs_fv3
+ GFS_suite_interstitial_1
+ GFS_surface_generic_pre
+ GFS_surface_composites_pre
+ dcyc2t3
+ GFS_surface_composites_inter
+ GFS_suite_interstitial_2
+
+
+
+ sfc_diff
+ GFS_surface_loop_control_part1
+ sfc_nst_pre
+ sfc_nst
+ sfc_nst_post
+ lsm_noah
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ satmedmfvdifq
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ unified_ugwp
+ unified_ugwp_post
+ GFS_GWD_generic_post
+ GFS_suite_stateout_update
+
+
+
+
+ GFS_photochemistry
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ GFS_DCNV_generic_pre
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ gfdl_cloud_microphys_v3
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+ GFS_physics_post
+
+
+
+
+ GFS_stochastics
+
+
+
+