Skip to content

Commit 1ecd7f4

Browse files
committed
Code update to connect MMM WSM6 to CCPP SCM
modified: Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta modified: Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta modified: Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.meta modified: Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.F90 modified: Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.F90 modified: Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.F90 modified: Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta modified: PBL/MYNN_EDMF/mynnedmf_wrapper.F90 modified: PBL/MYNN_EDMF/mynnedmf_wrapper.meta modified: Radiation/radiation_clouds.f modified: mmm_physics MP/wsm6/gfs_mmm_mp_wsm6_post.F90 MP/wsm6/gfs_mmm_mp_wsm6_post.meta MP/wsm6/gfs_mmm_mp_wsm6_pre.F90 MP/wsm6/gfs_mmm_mp_wsm6_pre.meta
1 parent d7e08a8 commit 1ecd7f4

21 files changed

+151
-180
lines changed

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90

+2
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,8 @@ subroutine GFS_MP_generic_post_run(
499499
do k=1,levs
500500
do i=1,im
501501
dtend(i,k,idtend) = dtend(i,k,idtend) + (gq0(i,k,itrac)-save_q(i,k,itrac)) * frain
502+
!if(itrac==3) &
503+
!print*,'YYYY, itrac,gq0(i,k,itrac),save_q(i,k,itrac),frain,dtend(i,k,idtend)', itrac,gq0(i,k,itrac),save_q(i,k,itrac),frain,dtend(i,k,idtend)
502504
enddo
503505
enddo
504506
endif

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta

+1-1
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@
437437
dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_tracers)
438438
type = real
439439
kind = kind_phys
440-
intent = inout
440+
intent = in
441441
[rain0]
442442
standard_name = lwe_thickness_of_explicit_rain_amount
443443
long_name = explicit rain on physics timestep

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.F90

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, progsigma,
5656
enddo
5757
endif
5858
endif
59-
6059
end subroutine GFS_MP_generic_pre_run
6160

6261
end module GFS_MP_generic_pre

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ module GFS_PBL_generic_common
1111

1212
contains
1313

14-
subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
14+
subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6,imp_physics_wsm6_mmm, &
1515
imp_physics_thompson, ltaerosol,mraerosol, &
1616
imp_physics_mg, ntgl, imp_physics_gfdl, &
1717
imp_physics_zhao_carr, imp_physics_nssl,&
1818
nssl_hail_on, nssl_ccn_on, kk, &
1919
errmsg, errflg)
2020
implicit none
2121
!
22-
integer, intent(in ) :: imp_physics, imp_physics_wsm6, &
22+
integer, intent(in ) :: imp_physics, imp_physics_wsm6, imp_physics_wsm6_mmm, &
2323
imp_physics_thompson, &
2424
imp_physics_mg, ntgl, imp_physics_gfdl, &
2525
imp_physics_zhao_carr,imp_physics_nssl
@@ -31,9 +31,9 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
3131
errflg = 0
3232

3333
! Set Interstitial%kk = last index in diffused tracer array before chemistry-aerosol tracers
34-
if (imp_physics == imp_physics_wsm6) then
34+
if (imp_physics == imp_physics_wsm6 .or. imp_physics == imp_physics_wsm6_mmm) then
3535
! WSM6
36-
kk = 4
36+
kk = 7
3737
elseif (imp_physics == imp_physics_thompson) then
3838
! Thompson
3939
if(ltaerosol) then

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.F90

+11-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module GFS_PBL_generic_post
1111
subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, &
1212
ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, ntwa, ntia, ntgl, ntoz, ntke, ntkev,nqrimef, &
1313
trans_aero, ntchs, ntchm, ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, &
14-
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_zhao_carr, imp_physics_mg, &
14+
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_wsm6_mmm, imp_physics_zhao_carr, imp_physics_mg, &
1515
imp_physics_fer_hires, imp_physics_nssl, nssl_ccn_on, ltaerosol, mraerosol, nssl_hail_on, nssl_3moment, &
1616
cplflx, cplaqm, cplchm, lssav, flag_for_pbl_generic_tend, ldiag3d, lsidea, hybedmf, do_shoc, satmedmf, &
1717
shinhong, do_ysu, dvdftra, dusfc1, dvsfc1, dtsfc1, dqsfc1, dtf, dudt, dvdt, dtdt, htrsw, htrlw, xmu, &
@@ -32,7 +32,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
3232
integer, intent(in) :: ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef
3333
integer, intent(in) :: ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz
3434
logical, intent(in) :: trans_aero
35-
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
35+
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_wsm6_mmm
3636
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
3737
integer, intent(in) :: imp_physics_nssl
3838
logical, intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_3moment
@@ -103,7 +103,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
103103
!
104104
if (trans_aero) then
105105
! Set kk if chemistry-aerosol tracers are diffused
106-
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
106+
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, imp_physics_wsm6_mmm, &
107107
imp_physics_thompson, ltaerosol,mraerosol, &
108108
imp_physics_mg, ntgl, imp_physics_gfdl, &
109109
imp_physics_zhao_carr, imp_physics_nssl,&
@@ -122,14 +122,17 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
122122
enddo
123123
endif
124124
!
125-
if (imp_physics == imp_physics_wsm6) then
125+
if (imp_physics == imp_physics_wsm6 .or. imp_physics == imp_physics_wsm6_mmm) then
126126
! WSM6
127127
do k=1,levs
128128
do i=1,im
129-
dqdt(i,k,ntqv) = dvdftra(i,k,1)
130-
dqdt(i,k,ntcw) = dvdftra(i,k,2)
131-
dqdt(i,k,ntiw) = dvdftra(i,k,3)
132-
dqdt(i,k,ntoz) = dvdftra(i,k,4)
129+
dqdt(i,k,ntqv) = dvdftra(i,k,1)
130+
dqdt(i,k,ntcw) = dvdftra(i,k,2)
131+
dqdt(i,k,ntiw) = dvdftra(i,k,3)
132+
dqdt(i,k,ntrw) = dvdftra(i,k,4)
133+
dqdt(i,k,ntsw) = dvdftra(i,k,5)
134+
dqdt(i,k,ntgl) = dvdftra(i,k,6)
135+
dqdt(i,k,ntoz) = dvdftra(i,k,7)
133136
enddo
134137
enddo
135138

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta

+7
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,13 @@
260260
dimensions = ()
261261
type = integer
262262
intent = in
263+
[imp_physics_wsm6_mmm]
264+
standard_name = identifier_for_wsm6_mmm_microphysics_scheme
265+
long_name = choice of WSM6 MMM microphysics scheme
266+
units = flag
267+
dimensions = ()
268+
type = integer
269+
intent = in
263270
[imp_physics_zhao_carr]
264271
standard_name = identifier_for_zhao_carr_microphysics_scheme
265272
long_name = choice of Zhao-Carr microphysics scheme

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.F90

+12-9
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
1313
ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, &
1414
ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef, trans_aero, ntchs, ntchm, &
1515
ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, &
16-
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, &
16+
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_wsm6_mmm, &
1717
imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires, imp_physics_nssl, &
1818
ltaerosol, mraerosol, nssl_ccn_on, nssl_hail_on, nssl_3moment, &
1919
hybedmf, do_shoc, satmedmf, qgrs, vdftra, save_u, save_v, save_t, save_q, &
@@ -31,7 +31,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
3131
integer, intent(in) :: ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef,ntchs, ntchm
3232
integer, intent(in) :: ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz
3333
logical, intent(in) :: trans_aero, ldiag3d, qdiag3d, lssav
34-
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
34+
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_wsm6_mmm
3535
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
3636
logical, intent(in) :: ltaerosol, hybedmf, do_shoc, satmedmf, flag_for_pbl_generic_tend, mraerosol
3737
integer, intent(in) :: imp_physics_nssl
@@ -62,17 +62,20 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
6262
vdftra = qgrs
6363
rtg_ozone_index = ntoz
6464
else
65-
if (imp_physics == imp_physics_wsm6) then
65+
if (imp_physics == imp_physics_wsm6 .or. imp_physics == imp_physics_wsm6_mmm) then
6666
! WSM6
6767
do k=1,levs
6868
do i=1,im
69-
vdftra(i,k,1) = qgrs(i,k,ntqv)
70-
vdftra(i,k,2) = qgrs(i,k,ntcw)
71-
vdftra(i,k,3) = qgrs(i,k,ntiw)
72-
vdftra(i,k,4) = qgrs(i,k,ntoz)
69+
vdftra(i,k,1) = qgrs(i,k,ntqv)
70+
vdftra(i,k,2) = qgrs(i,k,ntcw)
71+
vdftra(i,k,3) = qgrs(i,k,ntiw)
72+
vdftra(i,k,4) = qgrs(i,k,ntrw)
73+
vdftra(i,k,5) = qgrs(i,k,ntsw)
74+
vdftra(i,k,6) = qgrs(i,k,ntgl)
75+
vdftra(i,k,7) = qgrs(i,k,ntoz)
7376
enddo
7477
enddo
75-
rtg_ozone_index = 4
78+
rtg_ozone_index = 7
7679

7780
! Ferrier-Aligo
7881
elseif (imp_physics == imp_physics_fer_hires) then
@@ -272,7 +275,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
272275
endif
273276
!
274277
if (trans_aero) then
275-
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
278+
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, imp_physics_wsm6_mmm, &
276279
imp_physics_thompson, ltaerosol,mraerosol, &
277280
imp_physics_mg, ntgl, imp_physics_gfdl, &
278281
imp_physics_zhao_carr, imp_physics_nssl,&

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.meta

+7
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,13 @@
266266
dimensions = ()
267267
type = integer
268268
intent = in
269+
[imp_physics_wsm6_mmm]
270+
standard_name = identifier_for_wsm6_mmm_microphysics_scheme
271+
long_name = choice of WSM6 MMM microphysics scheme
272+
units = flag
273+
dimensions = ()
274+
type = integer
275+
intent = in
269276
[imp_physics_zhao_carr]
270277
standard_name = identifier_for_zhao_carr_microphysics_scheme
271278
long_name = choice of Zhao-Carr microphysics scheme

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -1392,7 +1392,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup
13921392
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%clxss ', Interstitial%clxss )
13931393
end if
13941394
! GFDL and Thompson MP
1395-
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
1395+
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_wsm6_mmm) then
13961396
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%graupelmp ', Interstitial%graupelmp )
13971397
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%icemp ', Interstitial%icemp )
13981398
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%rainmp ', Interstitial%rainmp )

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.F90

+17-1
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, lextop,&
721721
ccnd(i,k,4) = tracer1(i,k,ntsw) ! snow water
722722
enddo
723723
enddo
724-
elseif (ncnd == 5 .or. ncnd == 6) then ! GFDL MP, Thompson, MG3, NSSL
724+
elseif (ncnd == 5 .or. ncnd == 6) then ! GFDL MP, Thompson, MG3, NSSL, MMM WSM6
725725
do k=1,LMK
726726
do i=1,IM
727727
ccnd(i,k,1) = tracer1(i,k,ntcw) ! liquid water
@@ -880,6 +880,22 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, lextop,&
880880
! not used yet -- effr_in should always be true for now
881881
endif
882882

883+
elseif (imp_physics == imp_physics_wsm6_mmm ) then ! MMM WSM6 MP
884+
cldcov = 0.0
885+
if(effr_in) then
886+
do k=1,lm
887+
k1 = k + kd
888+
do i=1,im
889+
effrl(i,k1) = effrl_inout(i,k)! re_cloud (i,k)
890+
effri(i,k1) = effri_inout(i,k)! re_ice (i,k)
891+
effrr(i,k1) = effrr_in(i,k)
892+
effrs(i,k1) = effrs_inout(i,k) ! re_snow(i,k)
893+
enddo
894+
enddo
895+
else
896+
! not used yet -- effr_in should always be true for now
897+
endif
898+
883899
elseif (imp_physics == imp_physics_thompson) then ! Thompson MP
884900
!
885901
! Compute effective radii for QC, QI, QS with (GF, MYNN) or without (all others) sub-grid clouds

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr
211211
enddo
212212
endif
213213

214-
if ((imp_physics == imp_physics_thompson .or. imp_physics == imp_physics_wsm6_mmm) &
214+
if ((imp_physics == imp_physics_thompson) &
215215
.and. (ntlnc>0 .or. ntinc>0)) then
216216
if_convert_dry_rho: if (convert_dry_rho) then
217217
do k=1,levs

physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.F90

+4-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module maximum_hourly_diagnostics
2525
subroutine maximum_hourly_diagnostics_run(im, levs, reset, lradar, imp_physics, &
2626
imp_physics_gfdl, imp_physics_thompson, &
2727
imp_physics_fer_hires, imp_physics_nssl, &
28-
con_g, phil, &
28+
imp_physics_wsm6_mmm, con_g, phil, &
2929
gt0, refl_10cm, refdmax, refdmax263k, u10m, v10m, &
3030
u10max, v10max, spd10max, pgr, t2m, q2m, t02max, &
3131
t02min, rh02max, rh02min, dtp, rain, pratemax, &
@@ -37,7 +37,7 @@ subroutine maximum_hourly_diagnostics_run(im, levs, reset, lradar, imp_physics,
3737
integer, intent(in) :: im, levs, kdt
3838
logical, intent(in) :: reset, lradar, lightning_threat
3939
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_fer_hires, &
40-
imp_physics_nssl
40+
imp_physics_nssl, imp_physics_wsm6_mmm
4141
real(kind_phys), intent(in ) :: con_g
4242
real(kind_phys), intent(in ) :: con_rd
4343
real(kind_phys), intent(in ) :: phil(:,:)
@@ -86,7 +86,8 @@ subroutine maximum_hourly_diagnostics_run(im, levs, reset, lradar, imp_physics,
8686
if (lradar .and. (imp_physics == imp_physics_gfdl .or. &
8787
imp_physics == imp_physics_thompson .or. &
8888
imp_physics == imp_physics_fer_hires .or. &
89-
imp_physics == imp_physics_nssl )) then
89+
imp_physics == imp_physics_nssl .or. &
90+
imp_physics == imp_physics_wsm6_mmm)) then
9091
allocate(refd(im))
9192
allocate(refd263k(im))
9293
call max_fields(phil,refl_10cm,con_g,im,levs,refd,gt0,refd263k)

physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.meta

+7
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,13 @@
7070
dimensions = ()
7171
type = integer
7272
intent = in
73+
[imp_physics_wsm6_mmm]
74+
standard_name = identifier_for_wsm6_mmm_microphysics_scheme
75+
long_name = choice of WSM6 MMM microphysics scheme
76+
units = flag
77+
dimensions = ()
78+
type = integer
79+
intent = in
7380
[con_g]
7481
standard_name = gravitational_acceleration
7582
long_name = gravitational acceleration

physics/MP/wsm6/scm_mp_wsm6_post.F90

100644100755
+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module scm_mp_wsm6_post
1616

1717
implicit none
1818

19-
public :: scm_mp_wsm6_post_finalize
19+
public :: scm_mp_wsm6_post_run
2020

2121
private
2222

@@ -29,7 +29,7 @@ module scm_mp_wsm6_post
2929
!> \section arg_table_scm_mp_wsm6_finalize Argument Table
3030
!! \htmlinclude scm_mp_wsm6_finalize.html
3131
!!
32-
subroutine scm_mp_wsm6_post_finalize(errmsg, errflg)
32+
subroutine scm_mp_wsm6_post_run(errmsg, errflg)
3333

3434
implicit none
3535

@@ -48,6 +48,6 @@ subroutine scm_mp_wsm6_post_finalize(errmsg, errflg)
4848

4949
is_initialized = .false.
5050

51-
end subroutine scm_mp_wsm6_post_finalize
51+
end subroutine scm_mp_wsm6_post_run
5252

5353
end module scm_mp_wsm6_post

physics/MP/wsm6/scm_mp_wsm6_post.meta

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
########################################################################
77

88
[ccpp-arg-table]
9-
name = scm_mp_wsm6_finalize
9+
name = scm_mp_wsm6_post_run
1010
type = scheme
1111
[errmsg]
1212
standard_name = ccpp_error_message
@@ -24,4 +24,4 @@
2424
type = integer
2525
intent = out
2626

27-
########################################################################
27+
########################################################################

physics/MP/wsm6/scm_mp_wsm6_pre.F90

-57
This file was deleted.

0 commit comments

Comments
 (0)