From b27507aea81188e39ec55c9adde70152e8f73894 Mon Sep 17 00:00:00 2001 From: RuiyuSun <42656044+RuiyuSun@users.noreply.github.com> Date: Thu, 28 Oct 2021 15:37:32 -0400 Subject: [PATCH] Thompson semi lag rain (#382) * Add semi-Lagrangian sedimentation of rain to Thompson MP as an option --- ccpp/data/GFS_typedefs.F90 | 16 ++++++++++++++++ ccpp/data/GFS_typedefs.meta | 24 ++++++++++++++++++++++++ ccpp/physics | 2 +- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index c7a76e39e..5a6ee2898 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -826,6 +826,9 @@ module GFS_typedefs logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson integer :: thompson_ext_ndiag3d=37 !< number of 3d arrays for extended diagnostic output from Thompson real(kind=kind_phys) :: dt_inner !< time step for the inner loop in s + logical :: sedi_semi !< flag for semi Lagrangian sedi of rain + logical :: sedi_semi_update!< flag for v update in semi Lagrangian sedi of rain + logical :: sedi_semi_decfl !< flag for interation with semi Lagrangian sedi of rain !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency @@ -3236,6 +3239,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate logical :: ext_diag_thompson = .false. !< flag for extended diagnostic output from Thompson real(kind=kind_phys) :: dt_inner = -999.0 !< time step for the inner loop + logical :: sedi_semi = .false. !< flag for semi Lagrangian sedi of rain + logical :: sedi_semi_update = .false. !< flag for v update in semi Lagrangian sedi of rain + logical :: sedi_semi_decfl = .false. !< flag for interation with semi Lagrangian sedi of rain !--- GFDL microphysical parameters logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction @@ -3604,6 +3610,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, & ltaerosol, lradar, nsradar_reset, lrefres, ttendlim, & ext_diag_thompson, dt_inner, lgfdlmprad, & + sedi_semi, sedi_semi_update, sedi_semi_decfl, & !--- max hourly avg_max_length, & !--- land/surface model control @@ -4078,6 +4085,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & else Model%dt_inner = Model%dtp endif + Model%sedi_semi = sedi_semi + Model%sedi_semi_update = sedi_semi_update + Model%sedi_semi_decfl = sedi_semi_decfl !--- F-A MP parameters Model%rhgrd = rhgrd Model%spec_adv = spec_adv @@ -5165,6 +5175,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & ' ttendlim =',Model%ttendlim, & ' ext_diag_thompson =',Model%ext_diag_thompson, & ' dt_inner =',Model%dt_inner, & + ' sedi_semi=',Model%sedi_semi, & + ' sedi_semi_update=',sedi_semi_update, & + ' sedi_semi_decfl=',sedi_semi_decfl, & ' effr_in =',Model%effr_in, & ' lradar =',Model%lradar, & ' nsradar_reset =',Model%nsradar_reset, & @@ -5582,6 +5595,9 @@ subroutine control_print(Model) print *, ' ttendlim : ', Model%ttendlim print *, ' ext_diag_thompson : ', Model%ext_diag_thompson print *, ' dt_inner : ', Model%dt_inner + print *, ' sedi_semi : ', Model%sedi_semi + print *, ' sedi_semi_update : ', Model%sedi_semi_update + print *, ' sedi_semi_decfl : ', Model%sedi_semi_decfl print *, ' ' endif if (Model%imp_physics == Model%imp_physics_mg) then diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 847c20884..bbba06ca4 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -3514,6 +3514,30 @@ dimensions = () type = real kind = kind_phys +[sedi_semi] + standard_name = flag_for_semi_Lagrangian_sedi_rain + long_name = flag for semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F +[sedi_semi_update] + standard_name = flag_for_v_update_in_semi_Lagrangian_sedi + long_name = flag for v update in semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F +[sedi_semi_decfl] + standard_name = flag_for_iteration_with_semi_Lagrangian_sedi + long_name = flag for interation with semi Lagrangian sedi of rain + units = flag + dimensions = () + type = logical + intent = in + optional = F [lgfdlmprad] standard_name = flag_for_GFDL_microphysics_radiation_interaction long_name = flag for GFDL microphysics-radiation interaction diff --git a/ccpp/physics b/ccpp/physics index 4da495062..530f597d3 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4da4950625c4e6bf7cb938070c94fc4032985827 +Subproject commit 530f597d34a4dab2bedf590480474e86a2e9bac1