From 52b9e98833712703136e77e00139b15462452205 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Wed, 19 Aug 2026 12:34:03 +0100 Subject: [PATCH 1/7] merge up 3.1 branch --- .../lfric-gungho/HEAD/rose-meta.conf | 24 +++++++++++++++++++ .../diffusion/leonard_term_alg_mod.x90 | 21 ++++++++++++---- .../physics/fast_physics_alg_mod.X90 | 18 ++++++++++++-- .../physics/slow_physics_alg_mod.X90 | 13 +++++----- .../driver/create_physics_prognostics_mod.F90 | 10 +++++--- 5 files changed, 69 insertions(+), 17 deletions(-) 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 335d8e89b4..4ea60bb14b 100644 --- a/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf +++ b/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf @@ -3661,6 +3661,28 @@ ns=namelist/Science/Dynamics/Mixing sort-key=Panel-A09 type=logical +[namelist:mixing=leonard_inc_ice] +compulsory=true +description=Include ice in the Leonard term. +help=If enabled the Leonard term includes ice mixing ratio + =in its conserved variables and mixing calculations. +!kind=default +ns=namelist/Science/Dynamics/Mixing +sort-key=Panel-A07a +type=logical + +[namelist:mixing=leonard_inc_with_bl] +compulsory=true +description=Add increment of Leonard term together with boundary layer. +fail-if=this==".true." and namelist:physics=blayer_placement=="'slow'" ; +help=If enabled the Leonard term increment is passed to boundary layer implicit + =solver and solved together with cloud scheme. + =Note the increments are calculated from time-level n fields in any case. +!kind=default +ns=namelist/Science/Dynamics/Mixing +sort-key=Panel-A07b +type=logical + [namelist:mixing=leonard_kl] compulsory=true description=Leonard term parameter @@ -3688,6 +3710,8 @@ help=Calculate turbulent vertical fluxes due to Leonard terms, !kind=default sort-key=Panel-A06 trigger=namelist:mixing=leonard_kl: .true. ; + =namelist:mixing=leonard_inc_ice: .true. ; + =namelist:mixing=leonard_inc_with_bl: .true. ; type=logical [namelist:mixing=max_diff_factor] diff --git a/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 b/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 index b3079f19cb..f22f66e480 100644 --- a/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 +++ b/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 @@ -13,7 +13,7 @@ module leonard_term_alg_mod use field_collection_mod, only: field_collection_type use integer_field_mod, only: integer_field_type use mesh_mod, only: mesh_type - use mr_indices_mod, only: nummr, imr_v, imr_cl + use mr_indices_mod, only: nummr, imr_v, imr_cl, imr_s use formulation_config_mod, only: moisture_formulation, & moisture_formulation_dry @@ -24,7 +24,7 @@ module leonard_term_alg_mod get_face_selector_ns use physics_constants_mod, only: get_dtrdz_fd2 - use mixing_config_mod, only: leonard_kl + use mixing_config_mod, only: leonard_kl, leonard_inc_ice use timing_mod, only: start_timing, stop_timing, tik, LPROF use log_mod, only: log_event, LOG_LEVEL_INFO @@ -62,7 +62,7 @@ subroutine leonard_term_alg(config, & use leonard_term_kl_kernel_mod, only: leonard_term_kl_kernel_type use leonard_term_th_kernel_mod, only: leonard_term_th_kernel_type use leonard_term_u_kernel_mod, only: leonard_term_u_kernel_type - use planet_constants_mod, only: lcrcp_def + use planet_constants_mod, only: lcrcp_def, lsrcp_def use extrusion_config_mod, only: planet_radius use nlsizes_namelist_mod, only: bl_levels @@ -116,6 +116,8 @@ subroutine leonard_term_alg(config, & type( field_type ) :: mt ! w increment type( field_type ) :: vel_w2v_inc_leonard + ! ice mixing ratio + type( field_type ) :: mr_ice if ( LPROF ) call start_timing( id, 'leonard_term' ) @@ -147,6 +149,13 @@ subroutine leonard_term_alg(config, & call theta%copy_field_properties(thetal) call theta%copy_field_properties(mt) call theta%copy_field_properties(vel_w2v_inc_leonard) + call theta%copy_field_properties(mr_ice) + + if (leonard_inc_ice) then + call invoke( setval_X( mr_ice, mr(imr_s)) ) + else + call invoke( setval_C( mr_ice, 0.0_r_def ) ) + end if !-------------------------------------------------------------------- ! Apply stability-limit to leonard_kl: @@ -201,9 +210,10 @@ subroutine leonard_term_alg(config, & ! Flux of liquid + ice water potential temperature: !-------------------------------------------------------------------- ! Calculate thetaL = - ! theta - ((lc/cp)*mcl) / exner + ! (theta - (lc/cp)*mcl [-(ls/cp)*msnow]) / exner X_times_Y(thetal, theta, exner_in_wth), & inc_X_minus_bY(thetal, lcrcp_def, mr(imr_cl)), & + inc_X_minus_by(thetal, lsrcp_def, mr_ice), & inc_X_divideby_Y(thetal, exner_in_wth), & ! Call Leonard term code for scalars leonard_term_th_kernel_type( thetal_inc_leonard, & @@ -222,8 +232,9 @@ subroutine leonard_term_alg(config, & ! Flux of total water content: !-------------------------------------------------------------------- if ( moisture_formulation /= moisture_formulation_dry ) then - ! Calculate mt = mv+mcl + ! Calculate mt = mv+mcl(+msnow) call invoke( X_plus_Y(mt, mr(imr_v), mr(imr_cl)), & + inc_X_plus_Y(mt, mr_ice), & ! Call Leonard term code for scalars leonard_term_th_kernel_type( mt_inc_leonard, & mt, & diff --git a/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 b/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 index 7f1c858918..cfa300057e 100644 --- a/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 +++ b/science/gungho/source/algorithm/physics/fast_physics_alg_mod.X90 @@ -67,7 +67,7 @@ module fast_physics_alg_mod only: enforce_lower_bound_kernel_type use moisture_conservation_alg_mod, & only: moisture_conservation_alg - use mixing_config_mod, only: smagorinsky + use mixing_config_mod, only: smagorinsky, leonard_term, leonard_inc_with_bl use smagorinsky_alg_mod, only: smagorinsky_alg use timestepping_config_mod, & only : outer_iterations @@ -190,7 +190,10 @@ contains ! ...for boundary layer stochastic perturbation type( field_type ) :: dtheta_blpert type( field_type ) :: dmv_blpert - + ! ...for Leonard term flux + type( field_type ), pointer :: u_inc_leonard + type( field_type ), pointer :: mt_inc_leonard + type( field_type ), pointer :: thetal_inc_leonard ! ...surface fields passed from BL to Jules type( field_type ) :: surf_heat_flux type( field_type ) :: canopy_evap @@ -264,6 +267,17 @@ contains ! UM implicit boundary layer !-------------------------------------------------------------------- if (boundary_layer == boundary_layer_um) then + + ! Possibly add Leonard increments here + if (leonard_term .and. leonard_inc_with_bl) then + call turbulence_fields%get_field('u_inc_leonard', u_inc_leonard) + call turbulence_fields%get_field('mt_inc_leonard', mt_inc_leonard) + call turbulence_fields%get_field('thetal_inc_leonard', thetal_inc_leonard) + call invoke(inc_X_plus_Y(mr(imr_v), mt_inc_leonard), & + inc_X_plus_Y(theta_latest, thetal_inc_leonard), & + inc_X_plus_Y(u_latest, u_inc_leonard) ) + end if + if(blayer_placement == blayer_placement_b4conv) then call bl_imp_alg(config, & dtheta, du, theta_latest, u_latest, mr, & diff --git a/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 b/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 index 3b306f65c3..30dff8907d 100644 --- a/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 +++ b/science/gungho/source/algorithm/physics/slow_physics_alg_mod.X90 @@ -31,7 +31,7 @@ module slow_physics_alg_mod use mesh_mod, only: mesh_type use driver_modeldb_mod, only: modeldb_type use field_parent_mod, only: write_interface - use mixing_config_mod, only: leonard_term + use mixing_config_mod, only: leonard_term, leonard_inc_with_bl use print_field_stats_alg_mod, only: print_field_stats_alg use physics_config_mod, only: microphysics_placement, & microphysics_placement_slow, & @@ -289,9 +289,9 @@ contains ! ...for methane oxidation type( field_type ) :: dmv_methox ! ...for Leonard term flux - type( field_type ) :: u_inc_leonard - type( field_type ), pointer :: mt_inc_leonard => null() - type( field_type ), pointer :: thetal_inc_leonard => null() + type( field_type ), pointer :: u_inc_leonard + type( field_type ), pointer :: mt_inc_leonard + type( field_type ), pointer :: thetal_inc_leonard ! ...for evaporation condensation type( field_type ) :: dtheta_cld type( field_type ) :: dmr_cld(nummr) @@ -923,7 +923,7 @@ contains !-------------------------------------------------------------------- if (leonard_term .and. boundary_layer == boundary_layer_um ) then - call u%copy_field_properties(u_inc_leonard) + call turbulence_fields%get_field('u_inc_leonard', u_inc_leonard) call turbulence_fields%get_field('mt_inc_leonard', mt_inc_leonard) call turbulence_fields%get_field('thetal_inc_leonard', thetal_inc_leonard) call leonard_term_alg(modeldb%config, & @@ -1070,11 +1070,10 @@ contains call dmv_methox%field_final() end if - if (leonard_term_done) then + if (leonard_term_done .and. .not. leonard_inc_with_bl) then call invoke(inc_X_plus_Y(mr(imr_v), mt_inc_leonard), & inc_X_plus_Y(dtheta, thetal_inc_leonard), & inc_X_plus_Y(du, u_inc_leonard) ) - call u_inc_leonard%field_final() end if if (evap_condense_done) then diff --git a/science/gungho/source/driver/create_physics_prognostics_mod.F90 b/science/gungho/source/driver/create_physics_prognostics_mod.F90 index 6c2ffd64dc..11940d3251 100644 --- a/science/gungho/source/driver/create_physics_prognostics_mod.F90 +++ b/science/gungho/source/driver/create_physics_prognostics_mod.F90 @@ -30,7 +30,7 @@ module create_physics_prognostics_mod LOG_LEVEL_WARNING, & LOG_LEVEL_ERROR use mesh_mod, only : mesh_type - use mixing_config_mod, only : smagorinsky + use mixing_config_mod, only : smagorinsky, leonard_term use physics_config_mod, only : stochastic_physics_placement, & stochastic_physics_placement_fast use pure_abstract_field_mod, only : pure_abstract_field_type @@ -674,8 +674,12 @@ subroutine process_physics_prognostics(processor) call processor%apply(make_spec('rhokm_bl', main%turbulence, Wtheta)) call processor%apply(make_spec('dtrdz_tq_bl', main%turbulence, Wtheta)) call processor%apply(make_spec('dw_bl', main%turbulence, Wtheta)) - call processor%apply(make_spec('thetal_inc_leonard', main%turbulence, Wtheta)) - call processor%apply(make_spec('mt_inc_leonard', main%turbulence, Wtheta)) + call processor%apply(make_spec('thetal_inc_leonard', main%turbulence, & + Wtheta, empty=(.not. leonard_term))) + call processor%apply(make_spec('mt_inc_leonard', main%turbulence, Wtheta, & + empty=(.not. leonard_term))) + call processor%apply(make_spec('u_inc_leonard', main%turbulence, W2, & + empty=(.not. leonard_term))) ! 3D fields on W3 (rho) levels call processor%apply(make_spec('moist_flux_bl', main%turbulence, W3)) From b044fb33e78c2624980c5192e4fc2d00644d2e13 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Wed, 19 Aug 2026 12:42:47 +0100 Subject: [PATCH 2/7] upgrade macro etc --- science/gungho/rose-meta/lfric-gungho/versions.py | 11 +++++++++++ .../diffusion/leonard_term_kl_kernel_mod_test.pf | 2 ++ .../tracer_smagorinsky_diff_kernel_mod_test.pf | 2 ++ 3 files changed, 15 insertions(+) diff --git a/science/gungho/rose-meta/lfric-gungho/versions.py b/science/gungho/rose-meta/lfric-gungho/versions.py index 01e65a2b91..4ca5a61f6d 100644 --- a/science/gungho/rose-meta/lfric-gungho/versions.py +++ b/science/gungho/rose-meta/lfric-gungho/versions.py @@ -31,3 +31,14 @@ def upgrade(self, config, meta_config=None): # Add settings return config, self.reports """ +class vn32_t725(MacroUpgrade): + # Upgrade macro for #725 by Ian Boutle + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t725" + + def upgrade(self, config, meta_config=None): + # Add settings + self.add_setting(config,["namelist:mixing", "leonard_inc_ice"], ".false.") + self.add_setting(config,["namelist:mixing", "leonard_inc_with_bl"], ".false.") + return config, self.reports 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 81a5e5c019..e79741c85b 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 @@ -53,6 +53,8 @@ contains smag_l_calc = smag_l_calc_UseDx, & leonard_term = .false., & leonard_kl = 4.0_r_def, & + leonard_inc_ice = .false., & + leonard_inc_with_bl = .false., & conservative_diffusion = .false., & density_weighted = .false., & max_diff_factor = 1.0_r_def ) 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 b89e30e9db..9bbbc9268d 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 @@ -54,6 +54,8 @@ contains smag_l_calc = smag_l_calc_UseDx, & leonard_term = .false., & leonard_kl = 1.0_r_def, & + leonard_inc_ice = .false., & + leonard_inc_with_bl = .false., & conservative_diffusion = .false., & density_weighted = .false., & max_diff_factor = 1.0_r_def ) From c86eeae1400bc716fe578a6d9e61d364d973ccd8 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:51:33 +0100 Subject: [PATCH 3/7] include in ral jobs to match ral4.beta.1 --- rose-stem/app/lfric_atm/opt/rose-app-ral3.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf b/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf index 1881fea555..b8443ff9e2 100644 --- a/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf +++ b/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf @@ -133,6 +133,8 @@ reference_reset_time=$DT [namelist:mixing] conservative_diffusion=.true. density_weighted=.true. +leonard_inc_ice=.true. +leonard_inc_with_bl=.false. leonard_kl=2.0 leonard_term=.true. max_diff_factor=1.0 From 56b46459e5fe2a7e71baf49f46326776592843fa Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Thu, 20 Aug 2026 09:49:16 +0100 Subject: [PATCH 4/7] kgo update --- rose-stem/app/lfric_atm/opt/rose-app-ral3.conf | 1 - ...ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 16 ++++++++-------- ..._ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 16 ++++++++-------- ...xmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 14 +++++++------- ...tm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 16 ++++++++-------- ...al3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 14 +++++++------- ..._mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 14 +++++++------- 7 files changed, 45 insertions(+), 46 deletions(-) diff --git a/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf b/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf index b8443ff9e2..6aeaf3a6d3 100644 --- a/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf +++ b/rose-stem/app/lfric_atm/opt/rose-app-ral3.conf @@ -134,7 +134,6 @@ reference_reset_time=$DT conservative_diffusion=.true. density_weighted=.true. leonard_inc_ice=.true. -leonard_inc_with_bl=.false. leonard_kl=2.0 leonard_term=.true. max_diff_factor=1.0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt index 60fdd1bb0a..6e59df2253 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48399774 -Inner product checksum theta = 5135493E -Inner product checksum u = 612F454A -Inner product checksum mr1 = 4090F564 -Inner product checksum mr2 = 35AC3C55 -Inner product checksum mr3 = 2FA5F7C0 -Inner product checksum mr4 = 33F4FD5A -Inner product checksum mr5 = BEDD43D +Inner product checksum rho = 48399779 +Inner product checksum theta = 5135493C +Inner product checksum u = 612F4542 +Inner product checksum mr1 = 4090F54C +Inner product checksum mr2 = 35AD9767 +Inner product checksum mr3 = 2FA612E3 +Inner product checksum mr4 = 33F4FD5C +Inner product checksum mr5 = BEDF80D Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt index d70fddbee3..eebc24aec6 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48399985 -Inner product checksum theta = 51354898 -Inner product checksum u = 612F4B6A -Inner product checksum mr1 = 40916361 -Inner product checksum mr2 = 3684D2A0 -Inner product checksum mr3 = 2FAD3D2F -Inner product checksum mr4 = 33F4FE0F -Inner product checksum mr5 = BF85CFF +Inner product checksum rho = 4839998D +Inner product checksum theta = 51354896 +Inner product checksum u = 612F4B5D +Inner product checksum mr1 = 4091642D +Inner product checksum mr2 = 366BB016 +Inner product checksum mr3 = 2FACCAE3 +Inner product checksum mr4 = 33F4FE42 +Inner product checksum mr5 = BF85C5E Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt index 080a10a1b2..b9efdfba75 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48398C72 +Inner product checksum rho = 48398C6C Inner product checksum theta = 513542FA -Inner product checksum u = 612EE1C7 -Inner product checksum mr1 = 40910314 -Inner product checksum mr2 = 358600ED -Inner product checksum mr3 = 3000FB73 -Inner product checksum mr4 = 3404ABEC -Inner product checksum mr5 = C1462BB +Inner product checksum u = 612EE1BC +Inner product checksum mr1 = 4091031B +Inner product checksum mr2 = 358AC7DB +Inner product checksum mr3 = 30010699 +Inner product checksum mr4 = 3404ABCF +Inner product checksum mr5 = C1462B6 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt index 1d1d7b6f1b..7ddf7d4b9d 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 483997B2 -Inner product checksum theta = 51354962 -Inner product checksum u = 612F4912 -Inner product checksum mr1 = 4090FC04 -Inner product checksum mr2 = 35B167C4 -Inner product checksum mr3 = 2FA645AF -Inner product checksum mr4 = 33F4FE48 -Inner product checksum mr5 = BECFC33 +Inner product checksum rho = 483997B7 +Inner product checksum theta = 51354961 +Inner product checksum u = 612F490C +Inner product checksum mr1 = 4090FAE0 +Inner product checksum mr2 = 35B3E45C +Inner product checksum mr3 = 2FA642EB +Inner product checksum mr4 = 33F4FE35 +Inner product checksum mr5 = BECD102 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt index d02beb6cb8..db1c3025e3 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 483997E0 -Inner product checksum theta = 5135494E +Inner product checksum rho = 483997DC +Inner product checksum theta = 5135494F Inner product checksum u = 612F4984 -Inner product checksum mr1 = 409110E8 -Inner product checksum mr2 = 35E540AB -Inner product checksum mr3 = 2FA98AF3 -Inner product checksum mr4 = 33F4FF5D -Inner product checksum mr5 = BF18191 +Inner product checksum mr1 = 40911114 +Inner product checksum mr2 = 35E5C49D +Inner product checksum mr3 = 2FA94418 +Inner product checksum mr4 = 33F4FF54 +Inner product checksum mr5 = BF18177 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt index 4a1ddd9a11..f29bc56248 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48398C6B +Inner product checksum rho = 48398C69 Inner product checksum theta = 51354302 -Inner product checksum u = 612EDCBC -Inner product checksum mr1 = 40910380 -Inner product checksum mr2 = 358489D6 -Inner product checksum mr3 = 3000F2CD -Inner product checksum mr4 = 3404AC27 -Inner product checksum mr5 = C14A272 +Inner product checksum u = 612EDCAE +Inner product checksum mr1 = 40910306 +Inner product checksum mr2 = 35903E6B +Inner product checksum mr3 = 30010A9D +Inner product checksum mr4 = 3404AC21 +Inner product checksum mr5 = C14A26B Inner product checksum mr6 = 0 From c04853fa892f16c2a43469442f365fffbd361bd3 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Fri, 28 Aug 2026 09:23:24 +0100 Subject: [PATCH 5/7] science review comments --- science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf | 2 +- .../source/algorithm/diffusion/leonard_term_alg_mod.x90 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 4ea60bb14b..4f379ac7e4 100644 --- a/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf +++ b/science/gungho/rose-meta/lfric-gungho/HEAD/rose-meta.conf @@ -3674,7 +3674,6 @@ type=logical [namelist:mixing=leonard_inc_with_bl] compulsory=true description=Add increment of Leonard term together with boundary layer. -fail-if=this==".true." and namelist:physics=blayer_placement=="'slow'" ; help=If enabled the Leonard term increment is passed to boundary layer implicit =solver and solved together with cloud scheme. =Note the increments are calculated from time-level n fields in any case. @@ -5006,6 +5005,7 @@ help=Determines where the boundary layer implicit solver is called from. !kind=default ns=namelist/Science/Timestep placement sort-key=Panel-A03 +trigger=namelist:mixing=leonard_inc_with_bl: 'fast','b4conv' ; value-titles=Fast physics, Before convection, Slow physics values='fast','b4conv','slow' diff --git a/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 b/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 index f22f66e480..0d68eaa48e 100644 --- a/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 +++ b/science/gungho/source/algorithm/diffusion/leonard_term_alg_mod.x90 @@ -210,10 +210,10 @@ subroutine leonard_term_alg(config, & ! Flux of liquid + ice water potential temperature: !-------------------------------------------------------------------- ! Calculate thetaL = - ! (theta - (lc/cp)*mcl [-(ls/cp)*msnow]) / exner + ! theta - ((lc/cp)*mcl [-(ls/cp)*msnow]) / exner X_times_Y(thetal, theta, exner_in_wth), & inc_X_minus_bY(thetal, lcrcp_def, mr(imr_cl)), & - inc_X_minus_by(thetal, lsrcp_def, mr_ice), & + inc_X_minus_bY(thetal, lsrcp_def, mr_ice), & inc_X_divideby_Y(thetal, exner_in_wth), & ! Call Leonard term code for scalars leonard_term_th_kernel_type( thetal_inc_leonard, & From 522cd20e08fead547c26c581a73a1c3ef409a563 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Fri, 28 Aug 2026 09:50:31 +0100 Subject: [PATCH 6/7] fix unit tests --- .../kernel/diffusion/diffusion_momentum_flux_kernel_mod_test.pf | 2 ++ .../diffusion/divergence_momentum_flux_kernel_mod_test.pf | 2 ++ 2 files changed, 4 insertions(+) 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 b54a69d32d..5ff1331736 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 @@ -126,6 +126,8 @@ contains smag_l_calc = smag_l_calc_UseDx, & leonard_term = .false., & leonard_kl = 4.0_r_def, & + leonard_inc_ice = .false., & + leonard_inc_with_bl = .false., & conservative_diffusion = .true., & density_weighted = .true., & max_diff_factor=1.0_r_def ) 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 68b710ddab..30f0798af3 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 @@ -113,6 +113,8 @@ contains smag_l_calc = smag_l_calc_UseDx, & leonard_term = .false., & leonard_kl = 4.0_r_def, & + leonard_inc_ice = .false., & + leonard_inc_with_bl = .false., & conservative_diffusion = .true., & density_weighted = .true., & max_diff_factor=1.0_r_def ) From 2a989127b21842c3734d18fb46408db4061908e9 Mon Sep 17 00:00:00 2001 From: iboutle <135141261+iboutle@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:48:19 +0100 Subject: [PATCH 7/7] update kgos --- ...ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 14 +++++++------- ..._ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 16 ++++++++-------- ...xmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt | 16 ++++++++-------- ...tm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 16 ++++++++-------- ...al3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 16 ++++++++-------- ..._mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt | 14 +++++++------- 6 files changed, 46 insertions(+), 46 deletions(-) diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt index 6e59df2253..15a9573cab 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48399779 -Inner product checksum theta = 5135493C +Inner product checksum rho = 4839977A +Inner product checksum theta = 5135493D Inner product checksum u = 612F4542 -Inner product checksum mr1 = 4090F54C -Inner product checksum mr2 = 35AD9767 -Inner product checksum mr3 = 2FA612E3 -Inner product checksum mr4 = 33F4FD5C -Inner product checksum mr5 = BEDF80D +Inner product checksum mr1 = 4090F4FE +Inner product checksum mr2 = 35B4D473 +Inner product checksum mr3 = 2FA6198D +Inner product checksum mr4 = 33F4FD46 +Inner product checksum mr5 = BEDF7E6 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt index eebc24aec6..ba36c96307 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_ens-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 4839998D -Inner product checksum theta = 51354896 -Inner product checksum u = 612F4B5D -Inner product checksum mr1 = 4091642D -Inner product checksum mr2 = 366BB016 -Inner product checksum mr3 = 2FACCAE3 -Inner product checksum mr4 = 33F4FE42 -Inner product checksum mr5 = BF85C5E +Inner product checksum rho = 48399985 +Inner product checksum theta = 51354897 +Inner product checksum u = 612F4B51 +Inner product checksum mr1 = 409163CD +Inner product checksum mr2 = 367D7E0E +Inner product checksum mr3 = 2FAD3562 +Inner product checksum mr4 = 33F4FE54 +Inner product checksum mr5 = BF85BF8 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt index b9efdfba75..c5a987260d 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/azspice/checksum_lfric_atm_ral3_mixmol-seuk_MG_azspice_gnu_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48398C6C -Inner product checksum theta = 513542FA -Inner product checksum u = 612EE1BC -Inner product checksum mr1 = 4091031B -Inner product checksum mr2 = 358AC7DB -Inner product checksum mr3 = 30010699 -Inner product checksum mr4 = 3404ABCF -Inner product checksum mr5 = C1462B6 +Inner product checksum rho = 48398C74 +Inner product checksum theta = 513542F8 +Inner product checksum u = 612EE1CD +Inner product checksum mr1 = 40910300 +Inner product checksum mr2 = 358650CB +Inner product checksum mr3 = 3001097F +Inner product checksum mr4 = 3404AC2C +Inner product checksum mr5 = C1462C6 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt index 7ddf7d4b9d..2d5758a43f 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 483997B7 -Inner product checksum theta = 51354961 -Inner product checksum u = 612F490C -Inner product checksum mr1 = 4090FAE0 -Inner product checksum mr2 = 35B3E45C -Inner product checksum mr3 = 2FA642EB -Inner product checksum mr4 = 33F4FE35 -Inner product checksum mr5 = BECD102 +Inner product checksum rho = 483997B2 +Inner product checksum theta = 51354962 +Inner product checksum u = 612F4922 +Inner product checksum mr1 = 4090FB85 +Inner product checksum mr2 = 35AB7E5A +Inner product checksum mr3 = 2FA630D3 +Inner product checksum mr4 = 33F4FE56 +Inner product checksum mr5 = BECD174 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt index db1c3025e3..9ebf8406e9 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_ens-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 483997DC -Inner product checksum theta = 5135494F -Inner product checksum u = 612F4984 -Inner product checksum mr1 = 40911114 -Inner product checksum mr2 = 35E5C49D -Inner product checksum mr3 = 2FA94418 -Inner product checksum mr4 = 33F4FF54 -Inner product checksum mr5 = BF18177 +Inner product checksum rho = 483997E1 +Inner product checksum theta = 5135494C +Inner product checksum u = 612F497B +Inner product checksum mr1 = 40911133 +Inner product checksum mr2 = 35D964C0 +Inner product checksum mr3 = 2FA94882 +Inner product checksum mr4 = 33F4FF7D +Inner product checksum mr5 = BF17CA5 Inner product checksum mr6 = 0 diff --git a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt index f29bc56248..2a29fb8bfc 100644 --- a/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt +++ b/rose-stem/site/meto/kgos/lfric_atm/ex1a/checksum_lfric_atm_ral3_mixmol-seuk_MG_ex1a_cce_fast-debug-32bit.txt @@ -1,9 +1,9 @@ -Inner product checksum rho = 48398C69 +Inner product checksum rho = 48398C66 Inner product checksum theta = 51354302 -Inner product checksum u = 612EDCAE -Inner product checksum mr1 = 40910306 -Inner product checksum mr2 = 35903E6B -Inner product checksum mr3 = 30010A9D -Inner product checksum mr4 = 3404AC21 -Inner product checksum mr5 = C14A26B +Inner product checksum u = 612EDCB3 +Inner product checksum mr1 = 40910357 +Inner product checksum mr2 = 35902A35 +Inner product checksum mr3 = 3000F13E +Inner product checksum mr4 = 3404AC8B +Inner product checksum mr5 = C14A277 Inner product checksum mr6 = 0