diff --git a/ccpp/physics b/ccpp/physics index 7b02d419c..013844aab 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 7b02d419cf8d2319576d1fd37ee48a7e92409739 +Subproject commit 013844aab416d0089e48f7d813b4c51dc2e04288 diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index fa8ae84dd..07dc135ea 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -880,6 +880,7 @@ module GFS_typedefs !--- Thompson's microphysical parameters logical :: ltaerosol !< flag for aerosol version + logical :: mraerosol !< flag for merra2_aerosol_aware logical :: lradar !< flag for radar reflectivity real(kind=kind_phys) :: nsradar_reset !< seconds between resetting radar reflectivity calculation real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s @@ -2763,7 +2764,7 @@ subroutine coupling_create (Coupling, IM, Model) endif !--- needed for Thompson's aerosol option - if(Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then + if(Model%imp_physics == Model%imp_physics_thompson .and. (Model%ltaerosol .or. Model%mraerosol)) then allocate (Coupling%nwfa2d (IM)) allocate (Coupling%nifa2d (IM)) Coupling%nwfa2d = clear_val @@ -3051,6 +3052,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 :: lradar = .false. !< flag for radar reflectivity real(kind=kind_phys) :: nsradar_reset = -999.0 !< seconds between resetting radar reflectivity calculation, set to <0 for every time step real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate @@ -3453,7 +3455,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k, & lfnc_p0, iovr_convcld, doGP_sgs_cnv, doGP_sgs_mynn, & ! IN CCN forcing - iccn, & + iccn, mraerosol, & !--- microphysical parameterizations imp_physics, psautco, prautco, evpco, wminco, & fprcp, pdfflag, mg_dcs, mg_qcvar, mg_ts_auto_ice, mg_rhmini, & @@ -4011,6 +4013,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- Thompson MP parameters Model%ltaerosol = ltaerosol + Model%mraerosol = mraerosol + if (Model%ltaerosol .and. Model%mraerosol) then + write(0,*) 'Logic error: Only one Thompson aerosol option can be true, either ltaerosol or mraerosol)' + stop + end if Model%lradar = lradar Model%nsradar_reset = nsradar_reset Model%ttendlim = ttendlim @@ -5298,6 +5305,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & end if if (Model%me == Model%master) print *,' Using Thompson double moment microphysics', & ' ltaerosol = ',Model%ltaerosol, & + ' mraerosol = ',Model%mraerosol, & ' ttendlim =',Model%ttendlim, & ' ext_diag_thompson =',Model%ext_diag_thompson, & ' dt_inner =',Model%dt_inner, & @@ -5802,6 +5810,7 @@ subroutine control_print(Model) if (Model%imp_physics == Model%imp_physics_wsm6 .or. Model%imp_physics == Model%imp_physics_thompson) then print *, ' Thompson microphysical parameters' print *, ' ltaerosol : ', Model%ltaerosol + print *, ' mraerosol : ', Model%mraerosol print *, ' lradar : ', Model%lradar print *, ' nsradar_reset : ', Model%nsradar_reset print *, ' lrefres : ', Model%lrefres diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta index 4998c396e..aa16f50a5 100644 --- a/scm/src/GFS_typedefs.meta +++ b/scm/src/GFS_typedefs.meta @@ -4057,6 +4057,12 @@ 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 + units = flag + dimensions = () + type = logical [lradar] standard_name = flag_for_radar_reflectivity long_name = flag for radar reflectivity