diff --git a/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py b/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py +++ b/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py b/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py +++ b/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py b/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py +++ b/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py index 0454b6ccb5..bc7e398647 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py @@ -437,3 +437,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_forecast_pseudo/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_forecast_pseudo/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast_pseudo/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast_pseudo/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_id_tlm_tests/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_id_tlm_tests/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_id_tlm_tests/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_id_tlm_tests/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_lfric_tests/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_lfric_tests/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_lfric_tests/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_lfric_tests/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_tlm_forecast_tl/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_tlm_forecast_tl/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_tlm_forecast_tl/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_tlm_forecast_tl/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jedi_lfric_tests/rose-meta/jedi_tlm_tests/versions.py b/applications/jedi_lfric_tests/rose-meta/jedi_tlm_tests/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_tlm_tests/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_tlm_tests/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/jules/rose-meta/lfric-jules/versions.py b/applications/jules/rose-meta/lfric-jules/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/jules/rose-meta/lfric-jules/versions.py +++ b/applications/jules/rose-meta/lfric-jules/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py b/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py index e69be641ee..50216f3369 100644 --- a/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py +++ b/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py @@ -509,3 +509,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py b/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py +++ b/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/linear_model/rose-meta/lfric-linear_model/versions.py b/applications/linear_model/rose-meta/lfric-linear_model/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/linear_model/rose-meta/lfric-linear_model/versions.py +++ b/applications/linear_model/rose-meta/lfric-linear_model/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/name_transport/rose-meta/lfric-name_transport/versions.py b/applications/name_transport/rose-meta/lfric-name_transport/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/name_transport/rose-meta/lfric-name_transport/versions.py +++ b/applications/name_transport/rose-meta/lfric-name_transport/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/ngarch/rose-meta/lfric-ngarch/versions.py b/applications/ngarch/rose-meta/lfric-ngarch/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/ngarch/rose-meta/lfric-ngarch/versions.py +++ b/applications/ngarch/rose-meta/lfric-ngarch/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py b/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py +++ b/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/applications/transport/rose-meta/lfric-transport/versions.py b/applications/transport/rose-meta/lfric-transport/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/applications/transport/rose-meta/lfric-transport/versions.py +++ b/applications/transport/rose-meta/lfric-transport/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/documentation/source/science_guide/turbulence_schemes/bl_scheme_doc.rst b/documentation/source/science_guide/turbulence_schemes/bl_scheme_doc.rst index 5cc22b384f..5c77e43b1d 100644 --- a/documentation/source/science_guide/turbulence_schemes/bl_scheme_doc.rst +++ b/documentation/source/science_guide/turbulence_schemes/bl_scheme_doc.rst @@ -1989,7 +1989,7 @@ length, :math:`S` is the wind shear, :math:`f_\chi(Ri)` is the stability function and :math:`\chi` represents conserved heat and moisture variables, or momentum. Both schemes use the same stability function, and both schemes can use the full 3D shear for :math:`S`. Therefore the -only difference is in the mixing length, which is calculated as +only difference is in the mixing length, which is initially calculated as .. math:: :label: eq-lblend @@ -2122,18 +2122,27 @@ boundary layer depth and type `) but alternatively (``blending_option``\ :math:`=`\ 4) this can be restricted to strictly shallow cumulus clouds, defined as contiguously cloudy levels (cloud fraction greater than SC_CFTOL) with cloud top -height below input parameter ``shallow_cu_maxtop``. Note that the +height below the input parameter ``shallow_cu_maxtop``. Note that the diagnosis of shallow cumulus from the diagnosis parcel ascent (that was -used to identify a cumulus regime) was found frequently to indicate deep +used to identify a cumulus regime) has frequently been found to indicate deep convection even when the resolved clouds were shallow because the diagnosis parcel, being undilute, would penetrate to the tropopause. -However, having decided the regime is shallow convection, we do still -set :math:`z_{\mathrm{turb}}` to the diagnosis parcel top height because, for -current km-scale configurations (without a cumulus convection -parametrization), it was found that the resulting stronger parametrized -vertical mixing was beneficial for the development of the convection, -and that without this a widespread stratiform cloud layer could develop -instead. +Under ``blending_option``\ :math:`=`\ 4, then, if such a shallow cumulus +regime is diagnosed, :math:`z_{\mathrm{turb}}` is set to the resolved cloud +top height. + +One less desirable feature of the combination of the forms of the blended +mixing length :eq:`eq-lblend` and :math:`W_{1D}` :eq:`eq-tanh` functions +is that the resulting mixing length does not simply increase monotonically +towards :math:`l_{\mathrm{bl}}` as :math:`z_{\mathrm{turb}}` reduces (and +the turbulence becomes entirely unresolved). To illustrate this, consider +the case of :math:`\Delta x= z_{\mathrm{turb}} = 1` km, which gives +:math:`W_{1D} \approx 0.9` (see :numref:`Figure %s `\ a). +Ignoring the reduction in length scales towards the surface, we find +:math:`l_{\mathrm{bl}}=150` m and :math:`l_{\mathrm{smag}}=200` m such that +:math:`l_{\mathrm{blend}} = 155` m. A simple way to avoid this is to cap +the blended length scale explicitly by :math:`l_{\mathrm{bl}}` via the +namelist switch ``cap_blended_ml``. Above the boundary layer top, `Boutle et al. (2014)`_ aimed for any free atmospheric mixing to be done by the 3D Smagorinsky scheme. diff --git a/interfaces/coupled_interface/rose-meta/coupling/versions.py b/interfaces/coupled_interface/rose-meta/coupling/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/interfaces/coupled_interface/rose-meta/coupling/versions.py +++ b/interfaces/coupled_interface/rose-meta/coupling/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/interfaces/jedi_lfric_interface/rose-meta/jedi_lfric_interface/versions.py b/interfaces/jedi_lfric_interface/rose-meta/jedi_lfric_interface/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/interfaces/jedi_lfric_interface/rose-meta/jedi_lfric_interface/versions.py +++ b/interfaces/jedi_lfric_interface/rose-meta/jedi_lfric_interface/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/interfaces/physics_schemes_interface/source/support/um_physics_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_physics_init_mod.f90 index aa1e97a070..69673b1163 100644 --- a/interfaces/physics_schemes_interface/source/support/um_physics_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_physics_init_mod.f90 @@ -242,14 +242,17 @@ module um_physics_init_mod heavy_rain_evap_fac_in => & heavy_rain_evap_fac - use mixing_config_mod, only : smagorinsky, & - mixing_method => method, & - method_3d_smag, & - method_2d_smag, & - method_blend_smag_fa, & - method_blend_1dbl_fa, & - mix_factor_in => mix_factor, & - leonard_term + use mixing_config_mod, only : smagorinsky, & + mixing_method => method, & + method_3d_smag, & + method_2d_smag, & + method_blend_smag_fa, & + method_blend_1dbl_fa, & + method_blend_cth_shcu_only, & + cap_blended_ml_in => cap_blended_ml, & + shallow_cu_maxtop_in => shallow_cu_maxtop, & + mix_factor_in => mix_factor, & + leonard_term use radiation_config_mod, only : topography, topography_horizon @@ -417,6 +420,7 @@ subroutine um_physics_init() i_interp_local, i_interp_local_gradients, l_noice_in_turb, & i_interp_local_cf_dbdz, tke_diag_fac, a_ent_2, dec_thres_cloud, & dec_thres_cu, near_neut_z_on_l, blend_gridindep_fa, & + blend_cth_shcu_only, shallow_cu_maxtop, cap_blended_ml, & specified_fluxes_tstar, buoy_integ_low, num_sweeps_bflux, & l_use_sml_dsc_fixes, l_converge_ga, improved_tke_diag use cloud_inputs_mod, only: i_cld_vn, forced_cu, i_rhcpt, i_cld_area, & @@ -1700,6 +1704,9 @@ subroutine um_physics_init() mix_factor = real(mix_factor_in, r_um) turb_startlev_vert = 2 turb_endlev_vert = bl_levels + if (mixing_method /= method_3d_smag) then + cap_blended_ml = cap_blended_ml_in + end if ! Options which are bespoke to the choice of scheme select case ( mixing_method ) @@ -1722,6 +1729,11 @@ subroutine um_physics_init() l_subfilter_horiz = .true. l_subfilter_vert = .true. blending_option = blend_gridindep_fa + case( method_blend_cth_shcu_only ) + l_subfilter_horiz = .true. + l_subfilter_vert = .true. + blending_option = blend_cth_shcu_only + shallow_cu_maxtop = real(shallow_cu_maxtop_in, r_bl) end select else ! not Smagorinsky diff --git a/rose-stem/app/adjoint_tests/rose-app.conf b/rose-stem/app/adjoint_tests/rose-app.conf index 98a5abe69c..7cc8e3d132 100644 --- a/rose-stem/app/adjoint_tests/rose-app.conf +++ b/rose-stem/app/adjoint_tests/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-adjoint_tests/vn3.2_t670 +meta=lfric-adjoint_tests/vn3.2_t752 [command] default=rose env-cat iodef_temp.xml -o iodef.xml; $LAUNCH_SCRIPT/launch-exe @@ -1479,6 +1479,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1489,6 +1490,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/gravity_wave/rose-app.conf b/rose-stem/app/gravity_wave/rose-app.conf index acf6ac8b38..4e1338c7ec 100644 --- a/rose-stem/app/gravity_wave/rose-app.conf +++ b/rose-stem/app/gravity_wave/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-gravity_wave/vn3.2_t670 +meta=lfric-gravity_wave/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1425,6 +1425,7 @@ si_tolerance=1.0e-4 split_w=.false. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1435,6 +1436,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/gungho_model/rose-app.conf b/rose-stem/app/gungho_model/rose-app.conf index aea433d724..f25507d32b 100644 --- a/rose-stem/app/gungho_model/rose-app.conf +++ b/rose-stem/app/gungho_model/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-gungho_model/vn3.2_t670 +meta=lfric-gungho_model/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef ; \ @@ -1445,6 +1445,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.true. !!density_weighted=.true. !!fullstress=.false. @@ -1455,6 +1456,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_forecast/rose-app.conf b/rose-stem/app/jedi_forecast/rose-app.conf index 146e396937..f35e82a3cc 100644 --- a/rose-stem/app/jedi_forecast/rose-app.conf +++ b/rose-stem/app/jedi_forecast/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_forecast/vn3.2_t670 +meta=jedi_forecast/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1500,6 +1500,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.true. !!density_weighted=.true. !!fullstress=.false. @@ -1510,6 +1511,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_forecast_pseudo/rose-app.conf b/rose-stem/app/jedi_forecast_pseudo/rose-app.conf index e081e29a2c..32af5196d9 100644 --- a/rose-stem/app/jedi_forecast_pseudo/rose-app.conf +++ b/rose-stem/app/jedi_forecast_pseudo/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_forecast_pseudo/vn3.2_t670 +meta=jedi_forecast_pseudo/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1496,6 +1496,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1506,6 +1507,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_id_tlm_tests/rose-app.conf b/rose-stem/app/jedi_id_tlm_tests/rose-app.conf index ca099b04e6..5088323c31 100644 --- a/rose-stem/app/jedi_id_tlm_tests/rose-app.conf +++ b/rose-stem/app/jedi_id_tlm_tests/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_id_tlm_tests/vn3.2_t670 +meta=jedi_id_tlm_tests/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1523,6 +1523,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1533,6 +1534,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_lfric_tests/rose-app.conf b/rose-stem/app/jedi_lfric_tests/rose-app.conf index 35fa74f98b..0405383240 100644 --- a/rose-stem/app/jedi_lfric_tests/rose-app.conf +++ b/rose-stem/app/jedi_lfric_tests/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_lfric_tests/vn3.2_t670 +meta=jedi_lfric_tests/vn3.2_t752 [command] default=rose env-cat iodef_temp.xml -o iodef.xml; $LAUNCH_SCRIPT/launch-exe @@ -1525,6 +1525,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1535,6 +1536,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_tlm_forecast_tl/rose-app.conf b/rose-stem/app/jedi_tlm_forecast_tl/rose-app.conf index 83027ba9b0..a863b6d6ed 100644 --- a/rose-stem/app/jedi_tlm_forecast_tl/rose-app.conf +++ b/rose-stem/app/jedi_tlm_forecast_tl/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_tlm_forecast_tl/vn3.2_t670 +meta=jedi_tlm_forecast_tl/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1523,6 +1523,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1533,6 +1534,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jedi_tlm_tests/rose-app.conf b/rose-stem/app/jedi_tlm_tests/rose-app.conf index 863f78479c..fde457e009 100644 --- a/rose-stem/app/jedi_tlm_tests/rose-app.conf +++ b/rose-stem/app/jedi_tlm_tests/rose-app.conf @@ -1,4 +1,4 @@ -meta=jedi_tlm_tests/vn3.2_t670 +meta=jedi_tlm_tests/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1523,6 +1523,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1533,6 +1534,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/jules/rose-app.conf b/rose-stem/app/jules/rose-app.conf index ae7601ee7e..3e94a25017 100644 --- a/rose-stem/app/jules/rose-app.conf +++ b/rose-stem/app/jules/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-jules/vn3.2_t670 +meta=lfric-jules/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1515,6 +1515,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1525,6 +1526,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/lfric2lfric/rose-app.conf b/rose-stem/app/lfric2lfric/rose-app.conf index 690e6476a0..a4eb05fd03 100644 --- a/rose-stem/app/lfric2lfric/rose-app.conf +++ b/rose-stem/app/lfric2lfric/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-lfric2lfric/vn3.2_t670 +meta=lfric-lfric2lfric/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -933,6 +933,7 @@ si_tolerance=0 split_w=.false. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -943,6 +944,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='3d_smag' !!mix_factor=0 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/lfric_atm/opt/README b/rose-stem/app/lfric_atm/opt/README index 616e8c9a1d..1185bd5947 100644 --- a/rose-stem/app/lfric_atm/opt/README +++ b/rose-stem/app/lfric_atm/opt/README @@ -59,6 +59,8 @@ Science settings - ral4 - regional configuration - ral4_ens - extra config for regional ensembles (including stochastic physics) - ral4_scm - single column regional physics (includes convection scheme) +- ral_blendshcu - development version of the turbulence blending for shallow + cumulus regimes - ral_mixmol_opts - extra options for regional models when using the MoL transport scheme and mixed solver configuration - ral_opts - extra options for regional models, including LBC blending weights diff --git a/rose-stem/app/lfric_atm/opt/rose-app-blendshcu.conf b/rose-stem/app/lfric_atm/opt/rose-app-blendshcu.conf new file mode 100644 index 0000000000..b12d0ac2bb --- /dev/null +++ b/rose-stem/app/lfric_atm/opt/rose-app-blendshcu.conf @@ -0,0 +1,14 @@ +[namelist:mixing] +cap_blended_ml=.true. +conservative_diffusion=.true. +density_weighted=.true. +fullstress=.false. +max_diff_factor=1.0 +method='blend_cth_shcu_only' +mix_factor=0.2 +shallow_cu_maxtop=3000.0 +smag_l_calc='UseDx' +smagorinsky=.true. + +[namelist:physics] +smagorinsky_placement='end' diff --git a/rose-stem/app/lfric_atm/opt/rose-app-ral4.conf b/rose-stem/app/lfric_atm/opt/rose-app-ral4.conf index da5ef3b503..849446047e 100644 --- a/rose-stem/app/lfric_atm/opt/rose-app-ral4.conf +++ b/rose-stem/app/lfric_atm/opt/rose-app-ral4.conf @@ -132,6 +132,7 @@ z_surf=50.0 reference_reset_time=$DT [namelist:mixing] +cap_blended_ml=.false. conservative_diffusion=.true. density_weighted=.true. fullstress=.false. diff --git a/rose-stem/app/lfric_atm/rose-app.conf b/rose-stem/app/lfric_atm/rose-app.conf index f283a1c14f..c0db0f2744 100644 --- a/rose-stem/app/lfric_atm/rose-app.conf +++ b/rose-stem/app/lfric_atm/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-lfric_atm/vn3.2_t670 +meta=lfric-lfric_atm/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1469,6 +1469,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.true. !!density_weighted=.true. !!fullstress=.false. @@ -1479,6 +1480,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/linear_model/rose-app.conf b/rose-stem/app/linear_model/rose-app.conf index 4f16dee337..ed139613d3 100644 --- a/rose-stem/app/linear_model/rose-app.conf +++ b/rose-stem/app/linear_model/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-linear_model/vn3.2_t670 +meta=lfric-linear_model/vn3.2_t752 [command] default=rose env-cat iodef_temp.xml -o iodef.xml; $LAUNCH_SCRIPT/launch-exe @@ -1475,6 +1475,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1485,6 +1486,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blend_1dbl_fa' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/name_transport/rose-app.conf b/rose-stem/app/name_transport/rose-app.conf index 73093574a0..5040f09d0f 100644 --- a/rose-stem/app/name_transport/rose-app.conf +++ b/rose-stem/app/name_transport/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-name_transport/vn3.2_t670 +meta=lfric-name_transport/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1434,6 +1434,7 @@ split_w=.true. use_operators=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1444,6 +1445,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/ngarch/rose-app.conf b/rose-stem/app/ngarch/rose-app.conf index 261f9625a2..c9264c22a2 100644 --- a/rose-stem/app/ngarch/rose-app.conf +++ b/rose-stem/app/ngarch/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-ngarch/vn3.2_t670 +meta=lfric-ngarch/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1499,6 +1499,7 @@ si_tolerance=1.0e-1 split_w=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1509,6 +1510,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/shallow_water/rose-app.conf b/rose-stem/app/shallow_water/rose-app.conf index aed5a866bf..19befc1278 100644 --- a/rose-stem/app/shallow_water/rose-app.conf +++ b/rose-stem/app/shallow_water/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-shallow_water/vn3.2_t670 +meta=lfric-shallow_water/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1417,6 +1417,7 @@ si_tolerance=1.0e-4 split_w=.false. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1427,6 +1428,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/app/transport/rose-app.conf b/rose-stem/app/transport/rose-app.conf index 8ccb3890db..eb3173c4fb 100644 --- a/rose-stem/app/transport/rose-app.conf +++ b/rose-stem/app/transport/rose-app.conf @@ -1,4 +1,4 @@ -meta=lfric-transport/vn3.2_t670 +meta=lfric-transport/vn3.2_t752 [command] default=$CORE_ROOT_DIR/bin/tweak_iodef; \ @@ -1433,6 +1433,7 @@ split_w=.true. use_operators=.true. [namelist:mixing] +!!cap_blended_ml=.false. !!conservative_diffusion=.false. !!density_weighted=.true. !!fullstress=.false. @@ -1443,6 +1444,7 @@ leonard_term=.false. !!max_diff_factor=1.0 !!method='blending' !!mix_factor=0.2 +!!shallow_cu_maxtop=3000.0 !!smag_l_calc='UseDx' smagorinsky=.false. viscosity=.false. diff --git a/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc b/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc index 6d59a30a6f..f9ba8572f1 100644 --- a/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc +++ b/rose-stem/site/common/lfric_atm/tasks_lfric_atm.cylc @@ -823,6 +823,20 @@ "xios_min_buffer_size": 2097152, }) %} +{% elif task_ns.conf_name == "ral_dev-seuk_MG" %} + + {% do task_dict.update({ + "opt_confs": ["l70_40km","ral4","blendshcu","ral_opts","hh_solve"], + "resolution": "seuk_MG", + "DT": 60, + "tsteps": 120, + "crun": 2, + "crun_compare": false, + "mpi_parts": 16, + "kgo_checks": ["checksum"], + "plot_str": "plot_map.py -ral $NODAL_DATA_DIR/lfric_diagnostics.nc $PLOT_DIR", + }) %} + {% elif task_ns.conf_name == "ral4_mixmol-seuk_MG" %} {% do task_dict.update({ diff --git a/rose-stem/site/meto/groups/groups_lfric_atm.cylc b/rose-stem/site/meto/groups/groups_lfric_atm.cylc index 8b20fa24c8..bcc13bb327 100644 --- a/rose-stem/site/meto/groups/groups_lfric_atm.cylc +++ b/rose-stem/site/meto/groups/groups_lfric_atm.cylc @@ -39,6 +39,7 @@ "lfric_atm_ral_azspice_developer": [ "lfric_atm_ral4-seuk_MG_azspice_gnu_fast-debug-32bit", "lfric_atm_ral4_ens-seuk_MG_azspice_gnu_fast-debug-32bit", + "lfric_atm_ral_dev-seuk_MG_azspice_gnu_fast-debug-32bit", "lfric_atm_ral4_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit", ], "lfric_atm_scm_azspice_developer": [ @@ -144,6 +145,7 @@ "lfric_atm_ral_ex1a_developer": [ "lfric_atm_ral4-seuk_MG_ex1a_cce_fast-debug-32bit", "lfric_atm_ral4_ens-seuk_MG_ex1a_cce_fast-debug-32bit", + "lfric_atm_ral_dev-seuk_MG_ex1a_cce_fast-debug-32bit", "lfric_atm_ral4_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit", ], "lfric_atm_ral_ex1a_weekly": [ diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral_dev-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral_dev-seuk_MG_azspice_gnu_fast-debug-32bit.txt new file mode 100644 index 0000000000..cc675c6882 --- /dev/null +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral_dev-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 48397DEE +Inner product checksum theta = 51350066 +Inner product checksum u = 6130DEBD +Inner product checksum mr1 = 40914EA6 +Inner product checksum mr2 = 378BDFB1 +Inner product checksum mr3 = 30946C53 +Inner product checksum mr4 = 309090C3 +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral_dev-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral_dev-seuk_MG_ex1a_cce_fast-debug-32bit.txt new file mode 100644 index 0000000000..3135db9edf --- /dev/null +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral_dev-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -0,0 +1,9 @@ +Inner product checksum rho = 48397DEF +Inner product checksum theta = 51350079 +Inner product checksum u = 6130D8F7 +Inner product checksum mr1 = 40915041 +Inner product checksum mr2 = 378C6F20 +Inner product checksum mr3 = 30946C92 +Inner product checksum mr4 = 3090902D +Inner product checksum mr5 = 0 +Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/lfric_atm/tasks_lfric_atm_ex1a.cylc b/rose-stem/site/meto/lfric_atm/tasks_lfric_atm_ex1a.cylc index f7f5840121..a758beaf91 100644 --- a/rose-stem/site/meto/lfric_atm/tasks_lfric_atm_ex1a.cylc +++ b/rose-stem/site/meto/lfric_atm/tasks_lfric_atm_ex1a.cylc @@ -64,6 +64,12 @@ "memory": [24, "GB"], }) %} +{% elif task_ns.conf_name == "ral_dev-seuk_MG" %} + + {% do task_dict.update({ + "memory": [24, "GB"], + }) %} + {% elif task_ns.conf_name == "ral4_mixmol-seuk_MG" %} {% do task_dict.update({ diff --git a/science/adjoint/rose-meta/lfric-adjoint/versions.py b/science/adjoint/rose-meta/lfric-adjoint/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/science/adjoint/rose-meta/lfric-adjoint/versions.py +++ b/science/adjoint/rose-meta/lfric-adjoint/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf b/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf index 909cb3fd00..d041c30dab 100644 --- a/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf +++ b/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf @@ -3782,6 +3782,17 @@ help=Currently available schemes are: ns=namelist/Science/Dynamics/Mixing sort-key=Section-A05 +[namelist:mixing=cap_blended_ml] +compulsory=true +description=Cap the blended mixing length at the 1D +help=In the the blended subgrid mixing scheme (namelist:mixing=method) the physical + =mixing length from the one-dimensional scheme is combined with the grid-dependent + =Smagorinsky mixing length. This option caps this blended mixing length to be at + =most the one dimensional mixing length +!kind=default +sort-key=Panel-A05a +type=logical + [namelist:mixing=conservative_diffusion] compulsory=true description=Use conservative form of tracer diffusion operator @@ -3887,7 +3898,7 @@ type=real [namelist:mixing=method] compulsory=true -description=Smagorinsky subgrid mixing scheme option +description=Smagorinsky (Smag) subgrid mixing scheme option !enumeration=true help=Options for Smagorinsky subgrid mixing scheme: =_________________________________________________________________ @@ -3905,12 +3916,19 @@ help=Options for Smagorinsky subgrid mixing scheme: =_________________________________________________________________ =Blended scheme + 1D BL above = As above, but relaxes to 1D BL above BL + =_________________________________________________________________ + =Blended scheme only using cloud top in shallow clouds + = As above, but use cloud-top height as blending length-scale only + = for shallow cumulus clouds = - = WARNING: This option currently does not conserve energy and as - = a result may be unstable. + = WARNING: This option will only conserve if + = conservative_diffusion is true sort-key=Panel-A05 -value-titles=3D Smagorinsky, 2D Smagorinsky + 1D BL, Blended scheme + Smag above, Blended scheme + 1D BL above -values='3d_smag', '2d_smag', 'blend_smag_fa','blend_1dbl_fa' +trigger=namelist:mixing=shallow_cu_maxtop: 'blend_cth_shcu_only' ; + =namelist:mixing=cap_blended_ml: 'blend_smag_fa', 'blend_1dbl_fa', 'blend_cth_shcu_only' ; +value-titles=3D Smag, 2D Smag + 1D BL, Blended scheme + Smag above, + =Blended scheme + 1D BL above, Blended scheme using cloud top only in shallow clouds +values='3d_smag', '2d_smag', 'blend_smag_fa','blend_1dbl_fa','blend_cth_shcu_only' [namelist:mixing=mix_factor] compulsory=true @@ -3920,6 +3938,18 @@ help=Smagorinsky mixing length constant, typical value is 0.2 sort-key=Panel-A04 type=real +[namelist:mixing=shallow_cu_maxtop] +compulsory=true +description=Max. permitted cloud top height for shallow cloud blending +help=The maximum permitted cloud top height (in metres) for shallow cumulus clouds + =to be diagnosed. This is used in the blending weight length-scale calculation + =when "Blended scheme using cloud top only in shallow clouds" is selected for + =the blended subgrid mixing scheme (namelist:mixing=method). +!kind=default +range=0.0: +sort-key=Panel-A05b +type=real + [namelist:mixing=smag_l_calc] compulsory=true description=Choice of Smagorinsky mixing length calculation diff --git a/science/gungho/rose-meta/lfric-gungho/versions.py b/science/gungho/rose-meta/lfric-gungho/versions.py index 4fab710ea7..bb95d45105 100644 --- a/science/gungho/rose-meta/lfric-gungho/versions.py +++ b/science/gungho/rose-meta/lfric-gungho/versions.py @@ -409,5 +409,22 @@ def upgrade(self, config, meta_config=None): ["namelist:multires_coupling", "nudging_mesh_name"], dynamics_mesh_name, ) + return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) return config, self.reports diff --git a/science/gungho/unit-test/kernel/diffusion/diffusion_momentum_flux_kernel_mod_test.pf b/science/gungho/unit-test/kernel/diffusion/diffusion_momentum_flux_kernel_mod_test.pf index 5ff1331736..973dfa8520 100644 --- a/science/gungho/unit-test/kernel/diffusion/diffusion_momentum_flux_kernel_mod_test.pf +++ b/science/gungho/unit-test/kernel/diffusion/diffusion_momentum_flux_kernel_mod_test.pf @@ -130,7 +130,9 @@ contains leonard_inc_with_bl = .false., & conservative_diffusion = .true., & density_weighted = .true., & - max_diff_factor=1.0_r_def ) + max_diff_factor = 1.0_r_def, & + cap_blended_ml = .false., & + shallow_cu_maxtop= 0.0_r_def ) ! Variables for testing momentum_smagorinsky ! Get sizes of everything diff --git a/science/gungho/unit-test/kernel/diffusion/divergence_momentum_flux_kernel_mod_test.pf b/science/gungho/unit-test/kernel/diffusion/divergence_momentum_flux_kernel_mod_test.pf index 30f0798af3..eef41853a4 100644 --- a/science/gungho/unit-test/kernel/diffusion/divergence_momentum_flux_kernel_mod_test.pf +++ b/science/gungho/unit-test/kernel/diffusion/divergence_momentum_flux_kernel_mod_test.pf @@ -117,7 +117,9 @@ contains leonard_inc_with_bl = .false., & conservative_diffusion = .true., & density_weighted = .true., & - max_diff_factor=1.0_r_def ) + max_diff_factor = 1.0_r_def, & + cap_blended_ml = .false., & + shallow_cu_maxtop= 0.0_r_def ) ! Variables for testing momentum_smagorinsky ! Get sizes of everything diff --git a/science/gungho/unit-test/kernel/diffusion/leonard_term_kl_kernel_mod_test.pf b/science/gungho/unit-test/kernel/diffusion/leonard_term_kl_kernel_mod_test.pf index b9a4fd9826..e471468965 100644 --- a/science/gungho/unit-test/kernel/diffusion/leonard_term_kl_kernel_mod_test.pf +++ b/science/gungho/unit-test/kernel/diffusion/leonard_term_kl_kernel_mod_test.pf @@ -57,8 +57,10 @@ contains leonard_inc_with_bl = .false., & conservative_diffusion = .false., & density_weighted = .false., & - max_diff_factor = 1.0_r_def, & - fullstress = .false. ) + max_diff_factor = 1.0_r_def, & + fullstress = .false., & + cap_blended_ml = .false., & + shallow_cu_maxtop= 0.0_r_def ) call feign_finite_element_config( & cellshape=cellshape_quadrilateral, & diff --git a/science/gungho/unit-test/kernel/diffusion/tracer_smagorinsky_diff_kernel_mod_test.pf b/science/gungho/unit-test/kernel/diffusion/tracer_smagorinsky_diff_kernel_mod_test.pf index 6563dfad85..3419c0d3b7 100644 --- a/science/gungho/unit-test/kernel/diffusion/tracer_smagorinsky_diff_kernel_mod_test.pf +++ b/science/gungho/unit-test/kernel/diffusion/tracer_smagorinsky_diff_kernel_mod_test.pf @@ -62,8 +62,10 @@ contains leonard_inc_with_bl = .false., & conservative_diffusion = .false., & density_weighted = .false., & - max_diff_factor = 1.0_r_def, & - fullstress = .false. ) + max_diff_factor = 1.0_r_def, & + fullstress = .false., & + cap_blended_ml = .false., & + shallow_cu_maxtop= 0.0_r_def ) call feign_finite_element_config( & cellshape=cellshape_quadrilateral, & diff --git a/science/linear/rose-meta/lfric-linear/versions.py b/science/linear/rose-meta/lfric-linear/versions.py index 3e9051d6c4..764e887d6f 100644 --- a/science/linear/rose-meta/lfric-linear/versions.py +++ b/science/linear/rose-meta/lfric-linear/versions.py @@ -428,3 +428,21 @@ def upgrade(self, config, meta_config=None): ) return config, self.reports + + +class vn32_t752(MacroUpgrade): + """Upgrade macro for ticket #752 by Adrian Lock.""" + + BEFORE_TAG = "vn3.2_t670" + AFTER_TAG = "vn3.2_t752" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + self.add_setting( + config, ["namelist:mixing", "cap_blended_ml"], ".false." + ) + self.add_setting( + config, ["namelist:mixing", "shallow_cu_maxtop"], "3000.0" + ) + + return config, self.reports diff --git a/science/physics_schemes/source/boundary_layer/bdy_expl2.F90 b/science/physics_schemes/source/boundary_layer/bdy_expl2.F90 index 2db1de0d4e..7b6c572763 100644 --- a/science/physics_schemes/source/boundary_layer/bdy_expl2.F90 +++ b/science/physics_schemes/source/boundary_layer/bdy_expl2.F90 @@ -602,6 +602,9 @@ subroutine bdy_expl2 ( & 2:bl_levels), & ! Mixing length for heat (m), ! held on theta and rho levels, resp. + cumulus_cth(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end), & + ! cf_bulk cloud top height used in blended BL + ! for shallow convection fm_3d(tdims%i_start:tdims%i_end,tdims%j_start:tdims%j_end,bl_levels), & ! stability function for momentum transport ! level 1 value is dummy @@ -717,9 +720,6 @@ subroutine bdy_expl2 ( & ! Flag for having reached ! the top of the turbulently mixed ! layer. - l_shallow_cth(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end), & - ! Flag to indicate shallow convection based on - ! cf_bulk cloud top height cloud_base_found(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end), & ! Flag for having reached cloud base cloud_top_found(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end) @@ -1829,20 +1829,21 @@ subroutine bdy_expl2 ( & !$OMP SCHEDULE(STATIC) & !$OMP DEFAULT(none) & !$OMP private(i) & -!$OMP SHARED(pdims,l_shallow_cth) +!$OMP SHARED(pdims,cumulus_cth) do i = pdims%i_start, pdims%i_end - l_shallow_cth(i,j) = .false. + cumulus_cth(i,j) = zero ! initialise to zero for case of no cloud + ! - will then blend using BL depth end do !$OMP end PARALLEL do if (blending_option == blend_cth_shcu_only) then - ! only going to use the parcel top as the length scale in blending + ! going to use cloud top height as the length scale in blending only ! if the convection is shallow, where we define shallow convection here ! as the resolved cloud top (from cf_bluk) being below shallow_cu_maxtop !$OMP PARALLEL & !$OMP DEFAULT(none) & !$OMP private(i,k) & -!$OMP SHARED(pdims,bl_levels,z_uv,l_shallow_cth,cumulus,ntml,cf_bulk, & +!$OMP SHARED(pdims,bl_levels,z_uv,cumulus_cth,cumulus,ntml,cf_bulk, & !$OMP shallow_cu_maxtop,cloud_base_found,cloud_top_found) !$OMP do SCHEDULE(STATIC) do i = pdims%i_start, pdims%i_end @@ -1863,7 +1864,7 @@ subroutine bdy_expl2 ( & cf_bulk(i,j,k+1) < sc_cftol ) then ! got to cloud-top cloud_top_found(i,j) = .true. - l_shallow_cth(i,j) = z_uv(i,j,k+1) < shallow_cu_maxtop + cumulus_cth(i,j) = z_uv(i,j,k+1) end if end do !$OMP end do @@ -1878,7 +1879,7 @@ subroutine bdy_expl2 ( & bl_levels,k_log_layr,BL_diag, & ! in fields sigma_h,flandg,dvdzm,ri,rho_wet_tq,z_uv,z_tq,z0m_eff_gb,zhnl,zhpar,zhsc, & - zdsc_base,ntpar,ntml_nl,ntdsc,nbdsc,l_shallow_cth,rmlmax2,rneutml_sq, & + zdsc_base,ntpar,ntml_nl,ntdsc,nbdsc,cumulus_cth,rmlmax2,rneutml_sq, & delta_smag, & ! in/out fields cumulus,weight_1dbl, & @@ -2475,7 +2476,7 @@ subroutine bdy_expl2 ( & bl_type_6(i,j) = one ! Label this shallow regime as 2.0_r_bl here, to be able to identify it ! in diagnostics_bl, but the "cumulus" stash output will still be 1.0 - if (l_shallow_cth(i,j)) bl_type_6(i,j) = 2.0_r_bl + if (cumulus_cth(i,j) < shallow_cu_maxtop) bl_type_6(i,j) = 2.0_r_bl end if end if end do diff --git a/science/physics_schemes/source/boundary_layer/bl_option_mod.F90 b/science/physics_schemes/source/boundary_layer/bl_option_mod.F90 index 2794915b83..6b9055d2cd 100644 --- a/science/physics_schemes/source/boundary_layer/bl_option_mod.F90 +++ b/science/physics_schemes/source/boundary_layer/bl_option_mod.F90 @@ -282,7 +282,10 @@ module bl_option_mod ! as minimum, and use cloud-top as blending length-scale only for shallow cu integer, parameter :: blend_cth_shcu_only =4 -! 11a max permitted cloud top height in metres for shallow cu, used for +! 11a switch to cap the blended mixing length by the 1D +logical :: cap_blended_ml = .false. + +! 11b max permitted cloud top height in metres for shallow cu, used for ! blending_option=blend_cth_shcu_only real(kind=r_bl) :: shallow_cu_maxtop = rmdi @@ -635,6 +638,8 @@ subroutine print_nlist_run_bl() call umprint(linebuffer,src='bl_option_mod') write(lineBuffer,'(A,ES12.4)') 'shallow_cu_maxtop = ',shallow_cu_maxtop call umprint(linebuffer,src='bl_option_mod') +write(lineBuffer,'(A,L1)') ' cap_blended_ml = ',cap_blended_ml +call umprint(linebuffer,src='bl_option_mod') write(lineBuffer,'(2(A,F0.5))') 'alpha_cd_in = ', & alpha_cd_in(1),' ',alpha_cd_in(2) call umPrint(lineBuffer,src='bl_option_mod') diff --git a/science/physics_schemes/source/boundary_layer/ex_coef.F90 b/science/physics_schemes/source/boundary_layer/ex_coef.F90 index 8c03c44c97..7d78010aae 100644 --- a/science/physics_schemes/source/boundary_layer/ex_coef.F90 +++ b/science/physics_schemes/source/boundary_layer/ex_coef.F90 @@ -27,7 +27,7 @@ subroutine ex_coef ( & bl_levels, k_log_layr, BL_diag, & ! in fields sigma_h,flandg,dvdzm,ri,rho_wet_tq,z_uv,z_tq,z0m,zhnl,zhpar,zhsc,zdsc_base, & - ntpar,ntml_nl,ntdsc,nbdsc,l_shallow_cth,rmlmax2,rneutml_sq,delta_smag, & + ntpar,ntml_nl,ntdsc,nbdsc,cumulus_cth,rmlmax2,rneutml_sq,delta_smag, & ! in/out fields cumulus,weight_1dbl, & ! out fields @@ -48,7 +48,7 @@ subroutine ex_coef ( & lambda_fac, beta_bl, beta_fa, rlinfac, linear0, smooth_to_bdys, & to_sharp_across_1km, ntml_level_corrn, free_trop_layers, two_thirds, & blending_option, blend_except_cu, blend_gridindep_fa, blend_cth_shcu_only, & - extended_tail, zero, one, one_half + shallow_cu_maxtop, extended_tail, zero, one, one_half, cap_blended_ml use conversions_mod, only: pi => pi_bl use gen_phys_inputs_mod, only: l_mr_physics @@ -119,12 +119,10 @@ subroutine ex_coef ( & ! IN Land fraction on all tiles. rneutml_sq(tdims%i_start:tdims%i_end,tdims%j_start:tdims%j_end,bl_levels), & ! IN Square of the neutral mixing length for Smagorinsky - delta_smag(tdims%i_start:tdims%i_end,tdims%j_start:tdims%j_end) + delta_smag(tdims%i_start:tdims%i_end,tdims%j_start:tdims%j_end), & ! IN delta_x used by Smagorinsky - -logical, intent(in) :: & - l_shallow_cth(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end) - ! IN Flag to indicate shallow convection based on cl-top + cumulus_cth(pdims%i_start:pdims%i_end,pdims%j_start:pdims%j_end) + ! IN cloud-top height for identifying shallow cu in blending ! Declaration of new BL diagnostics. type (strnewbldiag), intent(in out) :: BL_diag @@ -192,6 +190,7 @@ subroutine ex_coef ( & real(kind=r_bl) :: eh,em,g0,dh,dm,r_c_tke real(kind=r_bl) :: subbmin,subbmax,subcmin,subcmax real(kind=r_bl) :: a_ri,b_ri +real(kind=r_bl) :: elm_1d, elh_1d parameter ( & eh=25.0_r_bl, & @@ -793,12 +792,13 @@ subroutine ex_coef ( & do k = 2, bl_levels !$OMP PARALLEL DEFAULT(none) & -!$OMP PRIVATE(z_scale,i,lambdam,lambdah,vkz,f_log,zz,zht,zfa,beta) & +!$OMP PRIVATE(z_scale,i,lambdam,lambdah,vkz,f_log,zz,zht,zfa,beta,elm_1d, & +!$OMP elh_1d) & !$OMP SHARED(k,pdims,ri,ricrit,flandg,ntml_local,ntml_nl,z_tq, & !$OMP l_rp2,lambda_min,par_mezcla_rp,zh_local,turb_length,k_log_layr, & -!$OMP z_uv,z0m,elm,elh,elh_rho,blending_option,cumulus,l_shallow_cth,zhpar, & +!$OMP z_uv,z0m,elm,elh,elh_rho,blending_option,cumulus,cumulus_cth,zhpar, & !$OMP ntdsc,weight_1dbl,weight_bltop,delta_smag,rneutml_sq,BL_diag,local_fa, & -!$OMP lambda_min_use) +!$OMP lambda_min_use,shallow_cu_maxtop,cap_blended_ml) !$OMP do SCHEDULE(STATIC) do i = pdims%i_start, pdims%i_end !------------------------------------------------------------------------ @@ -890,10 +890,13 @@ subroutine ex_coef ( & ! zht = interface between BL and FA zht = max( z_uv(i,j,ntml_nl(i,j)+1) , zh_local(i,j) ) ! Relevant scale in cumulus layers can be cloud top height, zhpar - if ( cumulus(i,j) .and. ( blending_option /= blend_cth_shcu_only .or. & - l_shallow_cth(i,j) ) ) then + if ( cumulus(i,j) .and. blending_option /= blend_cth_shcu_only ) then z_scale = max( z_scale, zhpar(i,j) ) zht = max( zht, zhpar(i,j) ) + else if ( cumulus(i,j) .and. blending_option == blend_cth_shcu_only & + .and. cumulus_cth(i,j) < shallow_cu_maxtop ) then + z_scale = max( z_scale, cumulus_cth(i,j) ) + zht = max( zht, cumulus_cth(i,j) ) end if ! BL top includes decoupled stratocu layer, if it exists @@ -949,7 +952,6 @@ subroutine ex_coef ( & one - tanh( beta_bl*z_scale/delta_smag(i,j)) * & max( zero, & min( one, (linear0-delta_smag(i,j)/z_scale)*rlinfac) ) - end if end if ! test on zz < zht else @@ -968,10 +970,17 @@ subroutine ex_coef ( & end if end if + elm_1d = elm(i,j,k) + elh_1d = elh(i,j,k) elm(i,j,k) = elm(i,j,k)*weight_1dbl(i,j,k) + & sqrt(rneutml_sq(i,j,k-1))*(one-weight_1dbl(i,j,k)) elh(i,j,k) = elh(i,j,k)*weight_1dbl(i,j,k) + & sqrt(rneutml_sq(i,j,k-1))*(one-weight_1dbl(i,j,k)) + if (cap_blended_ml) then + ! restrict the blended lengthscale to be at most the 1d lengthscale + elm(i,j,k) = min( elm_1d, elm(i,j,k) ) + elh(i,j,k) = min( elh_1d, elh(i,j,k) ) + end if end do !$OMP end do end if ! test on blending_option