@@ -5,6 +5,7 @@ module GFS_typedefs
5
5
6
6
use module_radsw_parameters, only: topfsw_type, sfcfsw_type
7
7
use module_radlw_parameters, only: topflw_type, sfcflw_type
8
+ use module_mp_tempo_params, only: ty_tempo_cfg
8
9
use module_ozphys, only: ty_ozphys
9
10
use module_h2ophys, only: ty_h2ophys
10
11
use module_ccpp_suite_simulator, only: base_physics_process
@@ -938,6 +939,7 @@ module GFS_typedefs
938
939
integer :: imp_physics ! < choice of microphysics scheme
939
940
integer :: imp_physics_gfdl = 11 ! < choice of GFDL microphysics scheme
940
941
integer :: imp_physics_thompson = 8 ! < choice of Thompson microphysics scheme
942
+ integer :: imp_physics_tempo = 88 ! < choice of TEMPO microphysics scheme
941
943
integer :: imp_physics_wsm6 = 6 ! < choice of WSMG microphysics scheme
942
944
integer :: imp_physics_zhao_carr = 99 ! < choice of Zhao-Carr microphysics scheme
943
945
integer :: imp_physics_zhao_carr_pdf = 98 ! < choice of Zhao-Carr microphysics scheme with PDF clouds
@@ -1022,6 +1024,7 @@ module GFS_typedefs
1022
1024
!- -- Thompson's microphysical parameters
1023
1025
logical :: ltaerosol ! < flag for aerosol version
1024
1026
logical :: mraerosol ! < flag for merra2_aerosol_aware
1027
+ logical :: lthailaware ! < flag for TEMPO hail-aware
1025
1028
logical :: lradar ! < flag for radar reflectivity
1026
1029
real (kind= kind_phys) :: nsfullradar_diag! < seconds between resetting radar reflectivity calculation
1027
1030
real (kind= kind_phys) :: ttendlim ! < temperature tendency limiter per time step in K/s
@@ -1030,6 +1033,7 @@ module GFS_typedefs
1030
1033
real (kind= kind_phys) :: dt_inner ! < time step for the inner loop in s
1031
1034
logical :: sedi_semi ! < flag for semi Lagrangian sedi of rain
1032
1035
integer :: decfl ! < deformed CFL factor
1036
+ type (ty_tempo_cfg) :: tempo_cfg ! < Thompson MP configuration information.
1033
1037
logical :: thompson_mp_is_init= .false. ! < Local scheme initialization flag
1034
1038
1035
1039
!- -- GFDL microphysical paramters
@@ -3275,7 +3279,9 @@ subroutine coupling_create (Coupling, Model)
3275
3279
endif
3276
3280
3277
3281
!- -- needed for Thompson's aerosol option
3278
- if (Model% imp_physics == Model% imp_physics_thompson .and. (Model% ltaerosol .or. Model% mraerosol)) then
3282
+ if ((Model% imp_physics == Model% imp_physics_thompson .or. &
3283
+ Model% imp_physics == Model% imp_physics_tempo) .and. &
3284
+ (Model% ltaerosol .or. Model% mraerosol)) then
3279
3285
allocate (Coupling% nwfa2d (IM))
3280
3286
allocate (Coupling% nifa2d (IM))
3281
3287
Coupling% nwfa2d = clear_val
@@ -3602,6 +3608,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
3602
3608
!- -- Thompson microphysical parameters
3603
3609
logical :: ltaerosol = .false. ! < flag for aerosol version
3604
3610
logical :: mraerosol = .false. ! < flag for merra2_aerosol_aware
3611
+ logical :: lthailaware = .false. ! < flag for TEMPO hail-aware
3605
3612
logical :: lradar = .false. ! < flag for radar reflectivity
3606
3613
real (kind= kind_phys) :: nsfullradar_diag = - 999.0 ! < seconds between resetting radar reflectivity calculation, set to <0 for every time step
3607
3614
real (kind= kind_phys) :: ttendlim = - 999.0 ! < temperature tendency limiter, set to <0 to deactivate
@@ -4124,8 +4131,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
4124
4131
mg_do_graupel, mg_do_hail, mg_nccons, mg_nicons, mg_ngcons, &
4125
4132
mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, &
4126
4133
mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, &
4127
- ltaerosol, lradar, nsfullradar_diag, lrefres, ttendlim, &
4128
- ext_diag_thompson, dt_inner, lgfdlmprad, &
4134
+ ltaerosol, lthailaware, lradar, nsfullradar_diag, lrefres, &
4135
+ ttendlim, ext_diag_thompson, dt_inner, lgfdlmprad, &
4129
4136
sedi_semi, decfl, &
4130
4137
nssl_cccn, nssl_alphah, nssl_alphahl, &
4131
4138
nssl_alphar, nssl_ehw0, nssl_ehlw0, &
@@ -4835,6 +4842,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
4835
4842
!- -- Thompson MP parameters
4836
4843
Model% ltaerosol = ltaerosol
4837
4844
Model% mraerosol = mraerosol
4845
+ Model% lthailaware = lthailaware
4838
4846
if (Model% ltaerosol .and. Model% mraerosol) then
4839
4847
write (0 ,* ) ' Logic error: Only one Thompson aerosol option can be true, either ltaerosol or mraerosol)'
4840
4848
error stop
@@ -4850,6 +4858,16 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
4850
4858
endif
4851
4859
Model% sedi_semi = sedi_semi
4852
4860
Model% decfl = decfl
4861
+
4862
+ !- -- TEMPO MP parameters
4863
+ ! DJS to Anders: Maybe we put more of these nml options into the TEMPO configuration type?
4864
+ Model% tempo_cfg% aerosol_aware = (ltaerosol .or. mraerosol)
4865
+ Model% tempo_cfg% hail_aware = lthailaware
4866
+ if (Model% ltaerosol .and. Model% mraerosol) then
4867
+ write (0 ,* ) ' Logic error: Only one TEMPO aerosol option can be true, either ltaerosol or mraerosol)'
4868
+ stop
4869
+ end if
4870
+
4853
4871
!- -- F-A MP parameters
4854
4872
Model% rhgrd = rhgrd
4855
4873
Model% spec_adv = spec_adv
@@ -4953,7 +4971,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
4953
4971
Model% exticeden = exticeden
4954
4972
if (Model% exticeden .and. &
4955
4973
(Model% imp_physics /= Model% imp_physics_gfdl .and. Model% imp_physics /= Model% imp_physics_thompson .and. &
4956
- Model% imp_physics /= Model% imp_physics_nssl )) then
4974
+ Model% imp_physics /= Model% imp_physics_nssl .and. Model % imp_physics /= Model % imp_physics_tempo )) then
4957
4975
! see GFS_MP_generic_post.F90; exticeden is only compatible with GFDL,
4958
4976
! Thompson, or NSSL MP
4959
4977
print * ,' Using exticeden = T is only valid when using GFDL, Thompson, or NSSL microphysics.'
@@ -5875,7 +5893,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
5875
5893
!- -- BEGIN CODE FROM COMPNS_PHYSICS
5876
5894
!- -- shoc scheme
5877
5895
if (do_shoc) then
5878
- if (Model% imp_physics == Model% imp_physics_thompson) then
5896
+ if ((Model% imp_physics == Model% imp_physics_thompson) .or. &
5897
+ (Model% imp_physics == Model% imp_physics_tempo)) then
5879
5898
print * ,' SHOC is not currently compatible with Thompson MP -- shutting down'
5880
5899
error stop
5881
5900
endif
@@ -6236,7 +6255,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
6236
6255
' num_p2d =' ,Model% num_p2d
6237
6256
6238
6257
6239
- elseif (Model% imp_physics == Model% imp_physics_thompson) then ! Thompson microphysics
6258
+ elseif (Model% imp_physics == Model% imp_physics_thompson .or. &
6259
+ Model% imp_physics == Model% imp_physics_tempo) then ! Thompson/TEMPO microphysics
6240
6260
Model% npdf3d = 0
6241
6261
Model% num_p3d = 3
6242
6262
Model% num_p2d = 1
@@ -6253,9 +6273,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
6253
6273
print * ,' Thompson MP requires effr_in to be set to .true. - job aborted'
6254
6274
error stop
6255
6275
end if
6256
- if (Model% me == Model% master) print * ,' Using Thompson double moment microphysics' , &
6276
+ if (Model% me == Model% master) print * ,' Using Thompson/TEMPO double moment microphysics' , &
6257
6277
' ltaerosol = ' ,Model% ltaerosol, &
6258
6278
' mraerosol = ' ,Model% mraerosol, &
6279
+ ' lthailaware = ' ,Model% lthailaware, &
6259
6280
' ttendlim =' ,Model% ttendlim, &
6260
6281
' ext_diag_thompson =' ,Model% ext_diag_thompson, &
6261
6282
' dt_inner =' ,Model% dt_inner, &
@@ -6806,10 +6827,12 @@ subroutine control_print(Model)
6806
6827
print * , ' wminco : ' , Model% wminco
6807
6828
print * , ' '
6808
6829
endif
6809
- if (Model% imp_physics == Model% imp_physics_wsm6 .or. Model% imp_physics == Model% imp_physics_thompson) then
6830
+ if ((Model% imp_physics == Model% imp_physics_wsm6) .or. (Model% imp_physics == Model% imp_physics_thompson) .or. &
6831
+ (Model% imp_physics == Model% imp_physics_tempo)) then
6810
6832
print * , ' Thompson microphysical parameters'
6811
6833
print * , ' ltaerosol : ' , Model% ltaerosol
6812
6834
print * , ' mraerosol : ' , Model% mraerosol
6835
+ print * , ' lthailaware : ' , Model% lthailaware
6813
6836
print * , ' lradar : ' , Model% lradar
6814
6837
print * , ' nsfullradar_diag : ' , Model% nsfullradar_diag
6815
6838
print * , ' lrefres : ' , Model% lrefres
0 commit comments