From 453666d05a7679e3597111174783860588faba13 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 10:41:55 +0100 Subject: [PATCH 01/44] merging changes from older branch --- .../jedi_lfric_interface/versions.py | 61 +++++++++++-------- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 43 +++++++++++-- .../source/support/um_ukca_init_mod.f90 | 9 ++- .../gungho/source/driver/gungho_model_mod.F90 | 11 +++- 4 files changed, 85 insertions(+), 39 deletions(-) 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 598c529315..37bee26630 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #683 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t683" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "'6'" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "'8'" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "'8'" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "'0'" + else: + # This is trigger ignored + i_mode_setup = "'0'" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index c49280c8a5..2851fa3408 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -120,7 +120,7 @@ help=Which emissions options to use =GC5 uses 2D ancillaries for bc_biomass and om_biomass, = and uses all SO2 at low level ns=namelist/Science/UM Aerosol -sort-key=Panel-A02 +sort-key=Panel-A04 trigger=namelist:files=emiss_bc_biomass_ancil_path: 'GC3'; =namelist:files=emiss_om_biomass_ancil_path: 'GC3'; =namelist:files=emiss_so2_high_ancil_path: 'GC3'; @@ -187,6 +187,7 @@ trigger=namelist:aerosol=activation_scheme: 'climatology','dust_and_clim' ; =namelist:aerosol=ukca_scale_marine_pom_ems: 'ukca' ; =namelist:aerosol=ukca_scale_sea_salt_ems: 'ukca' ; =namelist:aerosol=horiz_d: 'ukca','dust_and_clim'; + =namelist:aerosol=i_mode_setup: 'ukca','dust_and_clim'; =namelist:aerosol=us_am: 'ukca','dust_and_clim'; value-titles=off,climatology,ukca,dust_and_clim,radaer_test values='off','climatology','ukca','dust_and_clim','radaer_test' @@ -200,6 +201,36 @@ range=0:99.9 sort-key=Panel-F01 type=real +[namelist:aerosol=i_mode_setup] +compulsory=true +description=Set GLOMAP Aerosol Components and Modes +help= The GLOMAP aerosol scheme is currently available in the configurations + = described below: + = + = 6) Dust (DU) in insoluble accumulation and insoluble coarse mode. + = This is sometimes labelled as DUonly_2mode + = + = 8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) + = Dust (DU) components in 4 soluble modes and 3 insoluble modes. + = This is sometimes labelled SUBCOCSSDU_7mode . + = + = Coming soon setup (12) SUBCOCSSDUNH_7mode for UKESM2. + = + = Coming soon SolInsol. + = + = i_mode_setup is not triggered by glomap_mode_climatology . + = glomap_mode_climatology is hard coded to (8) SUBCOCSSDU_7mode . + = + = Setting glomap_mode_dust_and_clim calls UKCA with (6) dust only. The + = dust prognostic fields are combined with climatology aerosol fields from + = other components (SU, BC, OC, SS). CDNC and RADAER outputs are then + = calculated with GLOMAP setting (8) SUBCOCSSDU_7mode . + = glomap_mode_dust_and_clim is used for operational NWP which requires dust + = prognostic fields for visibility and everything else needs to be fast. +sort-key=Panel-A03 +value-titles=6,8 +values='6','8' + [namelist:aerosol=l_radaer] compulsory=true description=Direct effect of climatology aerosols in RADAER @@ -223,7 +254,7 @@ description=Marine POM emission scale factor help=Scaling factor for marine particulate organic matter emission !kind=double range=0.0:10.0 -sort-key=Panel-A02b +sort-key=Panel-A04b type=real [namelist:aerosol=murk] @@ -314,7 +345,7 @@ description=Sea salt emission scale factor help=Scaling factor for sea salt emission !kind=double range=0.0:10.0 -sort-key=Panel-A02d +sort-key=Panel-A04d type=real [namelist:aerosol=sulphuric_strat_climatology] @@ -350,7 +381,7 @@ help=Number of segments used in ukca_aero_ctl. This is required to be greater = than 1 to run GLOMAP with OpenMP multithreading. !kind=default ns=namelist/Science/UM Aerosol -sort-key=Panel-A01 +sort-key=Panel-A02 type=integer [namelist:aerosol=ukca_scale_marine_pom_ems] @@ -363,7 +394,7 @@ help=This logical activates the scaling factor marine_pom_ems_scaling. =it maybe be necessary to scale emissions to gain agreement across =resolutions. !kind=default -sort-key=Panel-A02a +sort-key=Panel-A04a trigger=namelist:aerosol=marine_pom_ems_scaling: .true. ; type=logical @@ -376,7 +407,7 @@ help=This logical activates the scaling factor sea_salt_ems_scaling. =generally stronger at higher resolutions. Hence it maybe be necessary =to scale emissions to gain agreement across resolutions. !kind=default -sort-key=Panel-A02c +sort-key=Panel-A04c trigger=namelist:aerosol=sea_salt_ems_scaling: .true. ; type=logical diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index f233d3085b..b94a8b4166 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -16,7 +16,8 @@ module um_ukca_init_mod ukca_scale_marine_pom_ems, & marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & - sea_salt_ems_scaling + sea_salt_ems_scaling, & + i_mode_setup use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & chem_scheme_strattrop, chem_scheme_none,& @@ -1022,7 +1023,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & i_photol_scheme_fastjx = photol_fastjx, & ! General GLOMAP configuration options i_mode_nzts=15, & - i_mode_setup=8, & + i_mode_setup=i_mode_setup, & l_mode_bhn_on=.true., & l_mode_bln_on=.false., & i_mode_nucscav=i_mode_nucscav, & @@ -1863,7 +1864,8 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - i_mode_setup=6, & + ! For dust_and_clim the GLOMAP setting must be dust only + i_mode_setup=i_mode_setup, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & @@ -2142,4 +2144,5 @@ subroutine deallocate_fastjx_filevars() end subroutine deallocate_fastjx_filevars + end module um_ukca_init_mod diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index b89f3f2ab1..8ff879085b 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -109,6 +109,7 @@ module gungho_model_mod use um_domain_init_mod, only : um_domain_init use um_sizes_init_mod, only : um_sizes_init use um_physics_init_mod, only : um_physics_init + use um_radaer_init_mod, only : um_radaer_init use um_radaer_lut_init_mod, only : um_radaer_lut_init use um_ukca_init_mod, only : um_ukca_init use jules_timestep_alg_mod, only : jules_timestep_type @@ -482,9 +483,6 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UM physics variables call um_physics_init() - ! Read all the radaer lut namelist files - call um_radaer_lut_init() - ! Initialisation of Jules high-level variables call jules_control_init() @@ -495,6 +493,13 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UKCA physics variables call um_ukca_init(ncells_ukca, model_clock) + ! This is the way into the UKCA repo + + ! Read all the radaer lut namelist files + call um_radaer_lut_init() + + ! Initialisation of UKCA RADAER variables + call um_radaer_init() end if #endif From 3f2eaa9a39791d6fbf33ce78c1820a8f78cbbcff Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 10:54:52 +0100 Subject: [PATCH 02/44] Add RADAER API documentation --- .../rose-meta/jedi_lfric_interface/versions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 37bee26630..50fadce1ff 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 @@ -20,7 +20,7 @@ def __repr__(self): class vn32_t683(MacroUpgrade): """ - Upgrade macro for ticket #683 by Alan J Hewitt. + Upgrade macro for ticket #698 by Alan J Hewitt. Users can now select UKCA GLOMAP setting via namelist. Note that dust_and_clim is treated by UKCA as if setting (6) @@ -28,7 +28,7 @@ class vn32_t683(MacroUpgrade): """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t683" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): # Add settings From 1b91106b0a5d53b0d40e9fc2697a4397cc217c0e Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 10:55:46 +0100 Subject: [PATCH 03/44] Add documentation --- .../source/science_guide/radaer/index.rst | 26 ++++++++++++++ .../science_guide/radaer/radaer_api.rst | 34 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 documentation/source/science_guide/radaer/index.rst create mode 100644 documentation/source/science_guide/radaer/radaer_api.rst diff --git a/documentation/source/science_guide/radaer/index.rst b/documentation/source/science_guide/radaer/index.rst new file mode 100644 index 0000000000..603b821ae5 --- /dev/null +++ b/documentation/source/science_guide/radaer/index.rst @@ -0,0 +1,26 @@ +.. ----------------------------------------------------------------------------- + (c) Crown copyright Met Office. All rights reserved. + The file LICENCE, distributed with this code, contains details of the terms + under which the code may be used. + ----------------------------------------------------------------------------- +.. _radaer_api_index: + +Summary of RADAER +================================ + +RADAER is a package of software within the UKCA repository that is called +independently of the rest of UKCA. Functionally, it sits in slow physics and +deals with the interactions between aerosols and SOCRATES (radiation) and is +called prior to the SOCRATES radiation code. + +RADAER gets called directly from its parent applications (for example in +LFRic_apps via radaer_kernel_mod). + + + + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/documentation/source/science_guide/radaer/radaer_api.rst b/documentation/source/science_guide/radaer/radaer_api.rst new file mode 100644 index 0000000000..16bb6b7f30 --- /dev/null +++ b/documentation/source/science_guide/radaer/radaer_api.rst @@ -0,0 +1,34 @@ +.. ----------------------------------------------------------------------------- + (c) Crown copyright Met Office. All rights reserved. + The file LICENCE, distributed with this code, contains details of the terms + under which the code may be used. + ----------------------------------------------------------------------------- + +========== +RADAER API +========== + +:Author: Alan J Hewitt + +Description of RADAER API +========================= + +Radaer will be available to the parent application via a single API module as +a minimal set of top_level subroutines. These will include an initialisation +function to correctly set up radaer for the user inputs and a runtime module. + +Names of subroutines presented via the API will start ```ukca_radaer_``` + +All run time communication between the parent model and UKCA will be via +argument lists. + +All RADAER state variables will be available to the parent model between +time steps as native FORTRAN arrays, for inspection and possible modification. +The fields in these arrays will be in a specific order and size, which will +differ depending on user configuration. The lists of fields will be determined +by field names retrieved by the parent at run time. + +The RADAER interface was designed to be very lean. No significant further +developments are intended for radaer. There is scope to revisit the lean +interface in future, if significant developments are required. However, +replacing RADAER with a different package is more likely to happen in future. From f114df3cf4a6f7fb92beb00a9422c23c84e38833 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 12:00:09 +0100 Subject: [PATCH 04/44] tidy --- .../rose-meta/jedi_lfric_interface/versions.py | 10 +++++----- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) 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 50fadce1ff..63b3907a90 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 @@ -39,19 +39,19 @@ def upgrade(self, config, meta_config=None): if glomap_mode == "'glomap_mode_dust_and_clim'": # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "'6'" + i_mode_setup = "6" else if glomap_mode == "'glomap_mode_ukca'": # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "'8'" + i_mode_setup = "8" else if glomap_mode == "'glomap_mode_radaer_test'": # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "'8'" + i_mode_setup = "8" else if glomap_mode == "'glomap_mode_climatology'": # This is trigger ignored - i_mode_setup = "'0'" + i_mode_setup = "0" else: # This is trigger ignored - i_mode_setup = "'0'" + i_mode_setup = "0" # Add new settings with the specified option self.add_setting( config, ["namelist:aerosol","i_mode_setup"], diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 2851fa3408..ff1d544043 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -207,14 +207,14 @@ description=Set GLOMAP Aerosol Components and Modes help= The GLOMAP aerosol scheme is currently available in the configurations = described below: = - = 6) Dust (DU) in insoluble accumulation and insoluble coarse mode. - = This is sometimes labelled as DUonly_2mode + = (6) Dust (DU) in insoluble accumulation and insoluble coarse mode. + = This is sometimes labelled as DUonly_2mode = - = 8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) - = Dust (DU) components in 4 soluble modes and 3 insoluble modes. - = This is sometimes labelled SUBCOCSSDU_7mode . + = (8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) + = Dust (DU) components in 4 soluble modes and 3 insoluble modes. + = This is sometimes labelled SUBCOCSSDU_7mode . = - = Coming soon setup (12) SUBCOCSSDUNH_7mode for UKESM2. + = Coming soon (12) SUBCOCSSDUNH_7mode for UKESM2. = = Coming soon SolInsol. = @@ -228,8 +228,8 @@ help= The GLOMAP aerosol scheme is currently available in the configurations = glomap_mode_dust_and_clim is used for operational NWP which requires dust = prognostic fields for visibility and everything else needs to be fast. sort-key=Panel-A03 -value-titles=6,8 -values='6','8' +value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' +values=6,8 [namelist:aerosol=l_radaer] compulsory=true From 8281df6b8a49507f14d29f9a75acfa9812f603ba Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 12:56:54 +0100 Subject: [PATCH 05/44] I think I need new namelist in all of these --- .../rose-meta/lfric-adjoint_tests/versions.py | 61 +++++++++------- .../rose-meta/lfric-gravity_wave/versions.py | 61 +++++++++------- .../rose-meta/lfric-gungho_model/versions.py | 61 +++++++++------- .../rose-meta/jedi_common/versions.py | 61 +++++++++------- .../rose-meta/jedi_forecast/versions.py | 70 +++++++++---------- .../jedi_forecast_pseudo/versions.py | 61 +++++++++------- .../rose-meta/jedi_id_tlm_tests/versions.py | 61 +++++++++------- .../rose-meta/jedi_lfric_tests/versions.py | 61 +++++++++------- .../jedi_tlm_forecast_tl/versions.py | 61 +++++++++------- .../rose-meta/jedi_tlm_tests/versions.py | 61 +++++++++------- .../jules/rose-meta/lfric-jules/versions.py | 61 +++++++++------- .../rose-meta/lfric-lfric2lfric/versions.py | 61 +++++++++------- .../rose-meta/lfric-lfric_atm/versions.py | 61 +++++++++------- .../rose-meta/lfric-linear_model/versions.py | 61 +++++++++------- .../lfric-name_transport/versions.py | 61 +++++++++------- .../ngarch/rose-meta/lfric-ngarch/versions.py | 61 +++++++++------- .../rose-meta/lfric-shallow_water/versions.py | 61 +++++++++------- .../rose-meta/lfric-transport/versions.py | 61 +++++++++------- .../rose-meta/coupling/versions.py | 61 +++++++++------- .../rose-meta/um-aerosol/versions.py | 42 +++++++++-- .../rose-meta/lfric-adjoint/versions.py | 61 +++++++++------- .../gungho/rose-meta/lfric-gungho/versions.py | 58 ++++++++------- .../linear/rose-meta/lfric-linear/versions.py | 61 +++++++++------- 23 files changed, 783 insertions(+), 607 deletions(-) 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 598c529315..63b3907a90 100644 --- a/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py +++ b/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py +++ b/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py +++ b/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 f49b7e294a..63b3907a90 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py @@ -18,46 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. - -class vn32_t512(MacroUpgrade): - """Upgrade macro for ticket #512 by Steven Sandbach.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t512" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jedi_forecast - # Blank Upgrade Macro - return config, self.reports - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" - - BEFORE_TAG = "vn3.2_t512" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 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 @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/jules/rose-meta/lfric-jules/versions.py +++ b/applications/jules/rose-meta/lfric-jules/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py +++ b/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py +++ b/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/linear_model/rose-meta/lfric-linear_model/versions.py +++ b/applications/linear_model/rose-meta/lfric-linear_model/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/name_transport/rose-meta/lfric-name_transport/versions.py +++ b/applications/name_transport/rose-meta/lfric-name_transport/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/ngarch/rose-meta/lfric-ngarch/versions.py +++ b/applications/ngarch/rose-meta/lfric-ngarch/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py +++ b/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + 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 598c529315..63b3907a90 100644 --- a/applications/transport/rose-meta/lfric-transport/versions.py +++ b/applications/transport/rose-meta/lfric-transport/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + diff --git a/interfaces/coupled_interface/rose-meta/coupling/versions.py b/interfaces/coupled_interface/rose-meta/coupling/versions.py index 598c529315..63b3907a90 100644 --- a/interfaces/coupled_interface/rose-meta/coupling/versions.py +++ b/interfaces/coupled_interface/rose-meta/coupling/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 01e65a2b91..63b3907a90 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -18,16 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): # Add settings + + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports -""" + diff --git a/science/adjoint/rose-meta/lfric-adjoint/versions.py b/science/adjoint/rose-meta/lfric-adjoint/versions.py index 598c529315..63b3907a90 100644 --- a/science/adjoint/rose-meta/lfric-adjoint/versions.py +++ b/science/adjoint/rose-meta/lfric-adjoint/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + diff --git a/science/gungho/rose-meta/lfric-gungho/versions.py b/science/gungho/rose-meta/lfric-gungho/versions.py index be196be2ac..63b3907a90 100644 --- a/science/gungho/rose-meta/lfric-gungho/versions.py +++ b/science/gungho/rose-meta/lfric-gungho/versions.py @@ -18,34 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + diff --git a/science/linear/rose-meta/lfric-linear/versions.py b/science/linear/rose-meta/lfric-linear/versions.py index 598c529315..63b3907a90 100644 --- a/science/linear/rose-meta/lfric-linear/versions.py +++ b/science/linear/rose-meta/lfric-linear/versions.py @@ -18,37 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn32_t634(MacroUpgrade): - """Upgrade macro for ticket #634 by Ian Boutle.""" + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t634" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/lfric-gungho - nml = "namelist:boundaries" - self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") - self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") - nml = "namelist:initialization" - eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) - self.remove_setting(config, [nml, "model_eos_height"]) - self.add_setting(config, [nml, "init_eos_height"], eos_height) - self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") - self.add_setting(config, [nml, "init_sort_theta"], ".true.") + # Add settings + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports + From 84f460120b5214db42ea2adff495f1b8ae2b8e50 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:39:17 +0100 Subject: [PATCH 06/44] Beginning of initialisation pipework to UKCA repo --- build/extract/extract.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index f206bd3b88..d728e50833 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -114,6 +114,7 @@ ukca: - src/control/core/top_level/ukca_init.F90 - src/control/core/top_level/ukca_main1-ukca_main1.F90 - src/control/core/top_level/ukca_radaer_lfric_api_mod.F90 + - src/control/core/top_level/ukca_radaer_lfric_init_mod.F90 - src/control/core/top_level/ukca_setup_mod.F90 - src/control/core/top_level/ukca_solang.F90 - src/control/core/top_level/ukca_step_control_mod.F90 From 763c39a323b36a3b14afc62686311447263ec895 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:40:00 +0100 Subject: [PATCH 07/44] Beginning of initialisation pipework to UKCA repo --- .../source/support/um_radaer_init_mod.f90 | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 new file mode 100644 index 0000000000..cf3198c644 --- /dev/null +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -0,0 +1,68 @@ +!---------------------------------------------------------------------------- +! (c) Crown copyright Met Office. All rights reserved. +! The file LICENCE, distributed with this code, contains details of the terms +! under which the code may be used. +!---------------------------------------------------------------------------- +!> @brief RADAER initialisation subroutine for science configuration + +module um_radaer_init_mod + + ! LFRic namelists which have been read + use aerosol_config_mod, only: glomap_mode, & + glomap_mode_climatology, & + glomap_mode_dust_and_clim, & + glomap_mode_off, & + glomap_mode_radaer_test, & + glomap_mode_ukca, & + i_mode_setup + + use constants_mod, only: i_um + + use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init + + implicit none + + private + public :: um_radaer_init + +contains + +subroutine um_radaer_init() + + implicit none + + ! Some options have a different value of i_mode_setup + ! between ukca and radaer. + ! For example, we use prognostic dust (6) with other aerosol components (8) + ! in operational NWP. + integer(i_um) :: i_mode_setup_radaer_local + + integer, parameter :: i_radaer_mode_setup_eight = 8 + + if ( glomap_mode == glomap_mode_climatology ) then + ! i_mode_setup is not set in the namelist for glomap_mode_climatology + ! this is always fixed to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_dust_and_clim ) then + ! dust_and_clim runs with a diffent i_mode_setup between ukca and radaer + ! this is always fixed to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_radaer_test ) then + ! This was developed for aqua planet runs and may be redundant + ! For now fix this to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_ukca ) then + ! UKCA and RADAER will use the same value for i_mode_setup + i_mode_setup_radaer_local = i_mode_setup + + end if + + call ukca_radaer_lfric_init( i_mode_setup_radaer_local ) + +end subroutine um_radaer_init + +end module um_radaer_init_mod + From d8f4d362c89a59ee08eed06b2a2c552182ba6562 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:23:16 +0100 Subject: [PATCH 08/44] Revert " Add documentation" This reverts commit 1b91106b0a5d53b0d40e9fc2697a4397cc217c0e. --- .../source/science_guide/radaer/index.rst | 26 -------------- .../science_guide/radaer/radaer_api.rst | 34 ------------------- 2 files changed, 60 deletions(-) delete mode 100644 documentation/source/science_guide/radaer/index.rst delete mode 100644 documentation/source/science_guide/radaer/radaer_api.rst diff --git a/documentation/source/science_guide/radaer/index.rst b/documentation/source/science_guide/radaer/index.rst deleted file mode 100644 index 603b821ae5..0000000000 --- a/documentation/source/science_guide/radaer/index.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. ----------------------------------------------------------------------------- - (c) Crown copyright Met Office. All rights reserved. - The file LICENCE, distributed with this code, contains details of the terms - under which the code may be used. - ----------------------------------------------------------------------------- -.. _radaer_api_index: - -Summary of RADAER -================================ - -RADAER is a package of software within the UKCA repository that is called -independently of the rest of UKCA. Functionally, it sits in slow physics and -deals with the interactions between aerosols and SOCRATES (radiation) and is -called prior to the SOCRATES radiation code. - -RADAER gets called directly from its parent applications (for example in -LFRic_apps via radaer_kernel_mod). - - - - -.. toctree:: - :maxdepth: 1 - :glob: - - * diff --git a/documentation/source/science_guide/radaer/radaer_api.rst b/documentation/source/science_guide/radaer/radaer_api.rst deleted file mode 100644 index 16bb6b7f30..0000000000 --- a/documentation/source/science_guide/radaer/radaer_api.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. ----------------------------------------------------------------------------- - (c) Crown copyright Met Office. All rights reserved. - The file LICENCE, distributed with this code, contains details of the terms - under which the code may be used. - ----------------------------------------------------------------------------- - -========== -RADAER API -========== - -:Author: Alan J Hewitt - -Description of RADAER API -========================= - -Radaer will be available to the parent application via a single API module as -a minimal set of top_level subroutines. These will include an initialisation -function to correctly set up radaer for the user inputs and a runtime module. - -Names of subroutines presented via the API will start ```ukca_radaer_``` - -All run time communication between the parent model and UKCA will be via -argument lists. - -All RADAER state variables will be available to the parent model between -time steps as native FORTRAN arrays, for inspection and possible modification. -The fields in these arrays will be in a specific order and size, which will -differ depending on user configuration. The lists of fields will be determined -by field names retrieved by the parent at run time. - -The RADAER interface was designed to be very lean. No significant further -developments are intended for radaer. There is scope to revisit the lean -interface in future, if significant developments are required. However, -replacing RADAER with a different package is more likely to happen in future. From 13cc02ded8851260ceca592e744708d11819655d Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:25:47 +0100 Subject: [PATCH 09/44] Revert " Beginning of initialisation pipework to UKCA repo" This reverts commit 763c39a323b36a3b14afc62686311447263ec895. --- .../source/support/um_radaer_init_mod.f90 | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 deleted file mode 100644 index cf3198c644..0000000000 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ /dev/null @@ -1,68 +0,0 @@ -!---------------------------------------------------------------------------- -! (c) Crown copyright Met Office. All rights reserved. -! The file LICENCE, distributed with this code, contains details of the terms -! under which the code may be used. -!---------------------------------------------------------------------------- -!> @brief RADAER initialisation subroutine for science configuration - -module um_radaer_init_mod - - ! LFRic namelists which have been read - use aerosol_config_mod, only: glomap_mode, & - glomap_mode_climatology, & - glomap_mode_dust_and_clim, & - glomap_mode_off, & - glomap_mode_radaer_test, & - glomap_mode_ukca, & - i_mode_setup - - use constants_mod, only: i_um - - use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init - - implicit none - - private - public :: um_radaer_init - -contains - -subroutine um_radaer_init() - - implicit none - - ! Some options have a different value of i_mode_setup - ! between ukca and radaer. - ! For example, we use prognostic dust (6) with other aerosol components (8) - ! in operational NWP. - integer(i_um) :: i_mode_setup_radaer_local - - integer, parameter :: i_radaer_mode_setup_eight = 8 - - if ( glomap_mode == glomap_mode_climatology ) then - ! i_mode_setup is not set in the namelist for glomap_mode_climatology - ! this is always fixed to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight - - else if ( glomap_mode == glomap_mode_dust_and_clim ) then - ! dust_and_clim runs with a diffent i_mode_setup between ukca and radaer - ! this is always fixed to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight - - else if ( glomap_mode == glomap_mode_radaer_test ) then - ! This was developed for aqua planet runs and may be redundant - ! For now fix this to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight - - else if ( glomap_mode == glomap_mode_ukca ) then - ! UKCA and RADAER will use the same value for i_mode_setup - i_mode_setup_radaer_local = i_mode_setup - - end if - - call ukca_radaer_lfric_init( i_mode_setup_radaer_local ) - -end subroutine um_radaer_init - -end module um_radaer_init_mod - From 7501b766ceba85bff489befee4d2ffd9a79a22e0 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:26:10 +0100 Subject: [PATCH 10/44] Revert " Beginning of initialisation pipework to UKCA repo" This reverts commit 84f460120b5214db42ea2adff495f1b8ae2b8e50. --- build/extract/extract.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index d728e50833..f206bd3b88 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -114,7 +114,6 @@ ukca: - src/control/core/top_level/ukca_init.F90 - src/control/core/top_level/ukca_main1-ukca_main1.F90 - src/control/core/top_level/ukca_radaer_lfric_api_mod.F90 - - src/control/core/top_level/ukca_radaer_lfric_init_mod.F90 - src/control/core/top_level/ukca_setup_mod.F90 - src/control/core/top_level/ukca_solang.F90 - src/control/core/top_level/ukca_step_control_mod.F90 From f6e3b825e785133f46f5034159826cf33d2c5383 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:26:28 +0100 Subject: [PATCH 11/44] Revert " I think I need new namelist in all of these" This reverts commit 8281df6b8a49507f14d29f9a75acfa9812f603ba. --- .../rose-meta/lfric-adjoint_tests/versions.py | 61 +++++++--------- .../rose-meta/lfric-gravity_wave/versions.py | 61 +++++++--------- .../rose-meta/lfric-gungho_model/versions.py | 61 +++++++--------- .../rose-meta/jedi_common/versions.py | 61 +++++++--------- .../rose-meta/jedi_forecast/versions.py | 70 ++++++++++--------- .../jedi_forecast_pseudo/versions.py | 61 +++++++--------- .../rose-meta/jedi_id_tlm_tests/versions.py | 61 +++++++--------- .../rose-meta/jedi_lfric_tests/versions.py | 61 +++++++--------- .../jedi_tlm_forecast_tl/versions.py | 61 +++++++--------- .../rose-meta/jedi_tlm_tests/versions.py | 61 +++++++--------- .../jules/rose-meta/lfric-jules/versions.py | 61 +++++++--------- .../rose-meta/lfric-lfric2lfric/versions.py | 61 +++++++--------- .../rose-meta/lfric-lfric_atm/versions.py | 61 +++++++--------- .../rose-meta/lfric-linear_model/versions.py | 61 +++++++--------- .../lfric-name_transport/versions.py | 61 +++++++--------- .../ngarch/rose-meta/lfric-ngarch/versions.py | 61 +++++++--------- .../rose-meta/lfric-shallow_water/versions.py | 61 +++++++--------- .../rose-meta/lfric-transport/versions.py | 61 +++++++--------- .../rose-meta/coupling/versions.py | 61 +++++++--------- .../rose-meta/um-aerosol/versions.py | 42 ++--------- .../rose-meta/lfric-adjoint/versions.py | 61 +++++++--------- .../gungho/rose-meta/lfric-gungho/versions.py | 58 +++++++-------- .../linear/rose-meta/lfric-linear/versions.py | 61 +++++++--------- 23 files changed, 607 insertions(+), 783 deletions(-) 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 63b3907a90..598c529315 100644 --- a/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py +++ b/applications/adjoint_tests/rose-meta/lfric-adjoint_tests/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py +++ b/applications/gravity_wave/rose-meta/lfric-gravity_wave/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py +++ b/applications/gungho_model/rose-meta/lfric-gungho_model/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_common/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..f49b7e294a 100644 --- a/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py +++ b/applications/jedi_lfric_tests/rose-meta/jedi_forecast/versions.py @@ -18,44 +18,46 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ + +class vn32_t512(MacroUpgrade): + """Upgrade macro for ticket #512 by Steven Sandbach.""" BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + AFTER_TAG = "vn3.2_t512" def upgrade(self, config, meta_config=None): - # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - + # Commands From: rose-meta/jedi_forecast + # Blank Upgrade Macro return config, self.reports + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2_t512" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 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 @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 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 @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 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 @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 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 @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 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 @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/jules/rose-meta/lfric-jules/versions.py +++ b/applications/jules/rose-meta/lfric-jules/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py +++ b/applications/lfric2lfric/rose-meta/lfric-lfric2lfric/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py +++ b/applications/lfric_atm/rose-meta/lfric-lfric_atm/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/linear_model/rose-meta/lfric-linear_model/versions.py +++ b/applications/linear_model/rose-meta/lfric-linear_model/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/name_transport/rose-meta/lfric-name_transport/versions.py +++ b/applications/name_transport/rose-meta/lfric-name_transport/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/ngarch/rose-meta/lfric-ngarch/versions.py +++ b/applications/ngarch/rose-meta/lfric-ngarch/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py +++ b/applications/shallow_water/rose-meta/lfric-shallow_water/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + 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 63b3907a90..598c529315 100644 --- a/applications/transport/rose-meta/lfric-transport/versions.py +++ b/applications/transport/rose-meta/lfric-transport/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + return config, self.reports diff --git a/interfaces/coupled_interface/rose-meta/coupling/versions.py b/interfaces/coupled_interface/rose-meta/coupling/versions.py index 63b3907a90..598c529315 100644 --- a/interfaces/coupled_interface/rose-meta/coupling/versions.py +++ b/interfaces/coupled_interface/rose-meta/coupling/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + return config, self.reports diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 63b3907a90..01e65a2b91 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -18,44 +18,16 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports - +""" diff --git a/science/adjoint/rose-meta/lfric-adjoint/versions.py b/science/adjoint/rose-meta/lfric-adjoint/versions.py index 63b3907a90..598c529315 100644 --- a/science/adjoint/rose-meta/lfric-adjoint/versions.py +++ b/science/adjoint/rose-meta/lfric-adjoint/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + return config, self.reports diff --git a/science/gungho/rose-meta/lfric-gungho/versions.py b/science/gungho/rose-meta/lfric-gungho/versions.py index 63b3907a90..be196be2ac 100644 --- a/science/gungho/rose-meta/lfric-gungho/versions.py +++ b/science/gungho/rose-meta/lfric-gungho/versions.py @@ -18,44 +18,34 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + AFTER_TAG = "vn3.2_t634" def upgrade(self, config, meta_config=None): - # Add settings + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports - diff --git a/science/linear/rose-meta/lfric-linear/versions.py b/science/linear/rose-meta/lfric-linear/versions.py index 63b3907a90..598c529315 100644 --- a/science/linear/rose-meta/lfric-linear/versions.py +++ b/science/linear/rose-meta/lfric-linear/versions.py @@ -18,44 +18,37 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by - BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" def upgrade(self, config, meta_config=None): # Add settings - - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports +""" + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" + + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t634" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") + + return config, self.reports From 2d4b4749be0d1be9186b54a3f29b5aca1635c25a Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:32:47 +0100 Subject: [PATCH 12/44] Revert " merging changes from older branch" This reverts commit 453666d05a7679e3597111174783860588faba13. --- .../jedi_lfric_interface/versions.py | 58 ++++++++----------- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 16 ++--- .../source/support/um_ukca_init_mod.f90 | 9 +-- .../gungho/source/driver/gungho_model_mod.F90 | 11 +--- 4 files changed, 39 insertions(+), 55 deletions(-) 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 63b3907a90..cc0f040a68 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 @@ -18,44 +18,34 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): - """ - Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. +""" +Copy this template and complete to add your macro - Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) - """ + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" + + +class vn32_t634(MacroUpgrade): + """Upgrade macro for ticket #634 by Ian Boutle.""" BEFORE_TAG = "vn3.2" - AFTER_TAG = "vn3.2_t698" + AFTER_TAG = "vn3.2_t634" def upgrade(self, config, meta_config=None): - # Add settings + # Commands From: rose-meta/lfric-gungho + nml = "namelist:boundaries" + self.add_setting(config, [nml, "lbc_bal_meth"], "'keep_rho'") + self.add_setting(config, [nml, "lbc_sort_theta"], ".true.") + nml = "namelist:initialization" + eos_height = self.get_setting_value(config, [nml, "model_eos_height"]) + self.remove_setting(config, [nml, "model_eos_height"]) + self.add_setting(config, [nml, "init_eos_height"], eos_height) + self.add_setting(config, [nml, "init_exner_method"], "'hydrostatic'") + self.add_setting(config, [nml, "init_sort_theta"], ".true.") - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'glomap_mode_dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": - # This is trigger ignored - i_mode_setup = "0" - else: - # This is trigger ignored - i_mode_setup = "0" - - # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) - return config, self.reports - diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index ff1d544043..86a59264a2 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -120,7 +120,7 @@ help=Which emissions options to use =GC5 uses 2D ancillaries for bc_biomass and om_biomass, = and uses all SO2 at low level ns=namelist/Science/UM Aerosol -sort-key=Panel-A04 +sort-key=Panel-A02 trigger=namelist:files=emiss_bc_biomass_ancil_path: 'GC3'; =namelist:files=emiss_om_biomass_ancil_path: 'GC3'; =namelist:files=emiss_so2_high_ancil_path: 'GC3'; @@ -187,7 +187,6 @@ trigger=namelist:aerosol=activation_scheme: 'climatology','dust_and_clim' ; =namelist:aerosol=ukca_scale_marine_pom_ems: 'ukca' ; =namelist:aerosol=ukca_scale_sea_salt_ems: 'ukca' ; =namelist:aerosol=horiz_d: 'ukca','dust_and_clim'; - =namelist:aerosol=i_mode_setup: 'ukca','dust_and_clim'; =namelist:aerosol=us_am: 'ukca','dust_and_clim'; value-titles=off,climatology,ukca,dust_and_clim,radaer_test values='off','climatology','ukca','dust_and_clim','radaer_test' @@ -201,6 +200,7 @@ range=0:99.9 sort-key=Panel-F01 type=real +<<<<<<< HEAD [namelist:aerosol=i_mode_setup] compulsory=true description=Set GLOMAP Aerosol Components and Modes @@ -231,6 +231,8 @@ sort-key=Panel-A03 value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' values=6,8 +======= +>>>>>>> parent of 453666d0 ( merging changes from older branch) [namelist:aerosol=l_radaer] compulsory=true description=Direct effect of climatology aerosols in RADAER @@ -254,7 +256,7 @@ description=Marine POM emission scale factor help=Scaling factor for marine particulate organic matter emission !kind=double range=0.0:10.0 -sort-key=Panel-A04b +sort-key=Panel-A02b type=real [namelist:aerosol=murk] @@ -345,7 +347,7 @@ description=Sea salt emission scale factor help=Scaling factor for sea salt emission !kind=double range=0.0:10.0 -sort-key=Panel-A04d +sort-key=Panel-A02d type=real [namelist:aerosol=sulphuric_strat_climatology] @@ -381,7 +383,7 @@ help=Number of segments used in ukca_aero_ctl. This is required to be greater = than 1 to run GLOMAP with OpenMP multithreading. !kind=default ns=namelist/Science/UM Aerosol -sort-key=Panel-A02 +sort-key=Panel-A01 type=integer [namelist:aerosol=ukca_scale_marine_pom_ems] @@ -394,7 +396,7 @@ help=This logical activates the scaling factor marine_pom_ems_scaling. =it maybe be necessary to scale emissions to gain agreement across =resolutions. !kind=default -sort-key=Panel-A04a +sort-key=Panel-A02a trigger=namelist:aerosol=marine_pom_ems_scaling: .true. ; type=logical @@ -407,7 +409,7 @@ help=This logical activates the scaling factor sea_salt_ems_scaling. =generally stronger at higher resolutions. Hence it maybe be necessary =to scale emissions to gain agreement across resolutions. !kind=default -sort-key=Panel-A04c +sort-key=Panel-A02c trigger=namelist:aerosol=sea_salt_ems_scaling: .true. ; type=logical diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index b94a8b4166..f233d3085b 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -16,8 +16,7 @@ module um_ukca_init_mod ukca_scale_marine_pom_ems, & marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & - sea_salt_ems_scaling, & - i_mode_setup + sea_salt_ems_scaling use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & chem_scheme_strattrop, chem_scheme_none,& @@ -1023,7 +1022,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & i_photol_scheme_fastjx = photol_fastjx, & ! General GLOMAP configuration options i_mode_nzts=15, & - i_mode_setup=i_mode_setup, & + i_mode_setup=8, & l_mode_bhn_on=.true., & l_mode_bln_on=.false., & i_mode_nucscav=i_mode_nucscav, & @@ -1864,8 +1863,7 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - ! For dust_and_clim the GLOMAP setting must be dust only - i_mode_setup=i_mode_setup, & + i_mode_setup=6, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & @@ -2144,5 +2142,4 @@ subroutine deallocate_fastjx_filevars() end subroutine deallocate_fastjx_filevars - end module um_ukca_init_mod diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index 8ff879085b..b89f3f2ab1 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -109,7 +109,6 @@ module gungho_model_mod use um_domain_init_mod, only : um_domain_init use um_sizes_init_mod, only : um_sizes_init use um_physics_init_mod, only : um_physics_init - use um_radaer_init_mod, only : um_radaer_init use um_radaer_lut_init_mod, only : um_radaer_lut_init use um_ukca_init_mod, only : um_ukca_init use jules_timestep_alg_mod, only : jules_timestep_type @@ -483,6 +482,9 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UM physics variables call um_physics_init() + ! Read all the radaer lut namelist files + call um_radaer_lut_init() + ! Initialisation of Jules high-level variables call jules_control_init() @@ -493,13 +495,6 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UKCA physics variables call um_ukca_init(ncells_ukca, model_clock) - ! This is the way into the UKCA repo - - ! Read all the radaer lut namelist files - call um_radaer_lut_init() - - ! Initialisation of UKCA RADAER variables - call um_radaer_init() end if #endif From 568abf91b7e6ab7de8db7627413234a114b53fc7 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:40:41 +0100 Subject: [PATCH 13/44] messy - but now only one versions.py --- build/extract/extract.yaml | 1 + .../source/science_guide/radaer/index.rst | 26 +++++++ .../science_guide/radaer/radaer_api.rst | 34 ++++++++++ .../jedi_lfric_interface/versions.py | 4 ++ .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 16 ++--- .../rose-meta/um-aerosol/versions.py | 42 ++++++++++-- .../source/support/um_radaer_init_mod.f90 | 68 +++++++++++++++++++ .../gungho/source/driver/gungho_model_mod.F90 | 11 ++- 8 files changed, 183 insertions(+), 19 deletions(-) create mode 100644 documentation/source/science_guide/radaer/index.rst create mode 100644 documentation/source/science_guide/radaer/radaer_api.rst create mode 100644 interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index f206bd3b88..d728e50833 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -114,6 +114,7 @@ ukca: - src/control/core/top_level/ukca_init.F90 - src/control/core/top_level/ukca_main1-ukca_main1.F90 - src/control/core/top_level/ukca_radaer_lfric_api_mod.F90 + - src/control/core/top_level/ukca_radaer_lfric_init_mod.F90 - src/control/core/top_level/ukca_setup_mod.F90 - src/control/core/top_level/ukca_solang.F90 - src/control/core/top_level/ukca_step_control_mod.F90 diff --git a/documentation/source/science_guide/radaer/index.rst b/documentation/source/science_guide/radaer/index.rst new file mode 100644 index 0000000000..603b821ae5 --- /dev/null +++ b/documentation/source/science_guide/radaer/index.rst @@ -0,0 +1,26 @@ +.. ----------------------------------------------------------------------------- + (c) Crown copyright Met Office. All rights reserved. + The file LICENCE, distributed with this code, contains details of the terms + under which the code may be used. + ----------------------------------------------------------------------------- +.. _radaer_api_index: + +Summary of RADAER +================================ + +RADAER is a package of software within the UKCA repository that is called +independently of the rest of UKCA. Functionally, it sits in slow physics and +deals with the interactions between aerosols and SOCRATES (radiation) and is +called prior to the SOCRATES radiation code. + +RADAER gets called directly from its parent applications (for example in +LFRic_apps via radaer_kernel_mod). + + + + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/documentation/source/science_guide/radaer/radaer_api.rst b/documentation/source/science_guide/radaer/radaer_api.rst new file mode 100644 index 0000000000..16bb6b7f30 --- /dev/null +++ b/documentation/source/science_guide/radaer/radaer_api.rst @@ -0,0 +1,34 @@ +.. ----------------------------------------------------------------------------- + (c) Crown copyright Met Office. All rights reserved. + The file LICENCE, distributed with this code, contains details of the terms + under which the code may be used. + ----------------------------------------------------------------------------- + +========== +RADAER API +========== + +:Author: Alan J Hewitt + +Description of RADAER API +========================= + +Radaer will be available to the parent application via a single API module as +a minimal set of top_level subroutines. These will include an initialisation +function to correctly set up radaer for the user inputs and a runtime module. + +Names of subroutines presented via the API will start ```ukca_radaer_``` + +All run time communication between the parent model and UKCA will be via +argument lists. + +All RADAER state variables will be available to the parent model between +time steps as native FORTRAN arrays, for inspection and possible modification. +The fields in these arrays will be in a specific order and size, which will +differ depending on user configuration. The lists of fields will be determined +by field names retrieved by the parent at run time. + +The RADAER interface was designed to be very lean. No significant further +developments are intended for radaer. There is scope to revisit the lean +interface in future, if significant developments are required. However, +replacing RADAER with a different package is more likely to happen in future. 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 cc0f040a68..ea589596be 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 @@ -21,6 +21,10 @@ def __repr__(self): """ Copy this template and complete to add your macro + +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" AFTER_TAG = "vnX.X_txxx" diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 86a59264a2..ff1d544043 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -120,7 +120,7 @@ help=Which emissions options to use =GC5 uses 2D ancillaries for bc_biomass and om_biomass, = and uses all SO2 at low level ns=namelist/Science/UM Aerosol -sort-key=Panel-A02 +sort-key=Panel-A04 trigger=namelist:files=emiss_bc_biomass_ancil_path: 'GC3'; =namelist:files=emiss_om_biomass_ancil_path: 'GC3'; =namelist:files=emiss_so2_high_ancil_path: 'GC3'; @@ -187,6 +187,7 @@ trigger=namelist:aerosol=activation_scheme: 'climatology','dust_and_clim' ; =namelist:aerosol=ukca_scale_marine_pom_ems: 'ukca' ; =namelist:aerosol=ukca_scale_sea_salt_ems: 'ukca' ; =namelist:aerosol=horiz_d: 'ukca','dust_and_clim'; + =namelist:aerosol=i_mode_setup: 'ukca','dust_and_clim'; =namelist:aerosol=us_am: 'ukca','dust_and_clim'; value-titles=off,climatology,ukca,dust_and_clim,radaer_test values='off','climatology','ukca','dust_and_clim','radaer_test' @@ -200,7 +201,6 @@ range=0:99.9 sort-key=Panel-F01 type=real -<<<<<<< HEAD [namelist:aerosol=i_mode_setup] compulsory=true description=Set GLOMAP Aerosol Components and Modes @@ -231,8 +231,6 @@ sort-key=Panel-A03 value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' values=6,8 -======= ->>>>>>> parent of 453666d0 ( merging changes from older branch) [namelist:aerosol=l_radaer] compulsory=true description=Direct effect of climatology aerosols in RADAER @@ -256,7 +254,7 @@ description=Marine POM emission scale factor help=Scaling factor for marine particulate organic matter emission !kind=double range=0.0:10.0 -sort-key=Panel-A02b +sort-key=Panel-A04b type=real [namelist:aerosol=murk] @@ -347,7 +345,7 @@ description=Sea salt emission scale factor help=Scaling factor for sea salt emission !kind=double range=0.0:10.0 -sort-key=Panel-A02d +sort-key=Panel-A04d type=real [namelist:aerosol=sulphuric_strat_climatology] @@ -383,7 +381,7 @@ help=Number of segments used in ukca_aero_ctl. This is required to be greater = than 1 to run GLOMAP with OpenMP multithreading. !kind=default ns=namelist/Science/UM Aerosol -sort-key=Panel-A01 +sort-key=Panel-A02 type=integer [namelist:aerosol=ukca_scale_marine_pom_ems] @@ -396,7 +394,7 @@ help=This logical activates the scaling factor marine_pom_ems_scaling. =it maybe be necessary to scale emissions to gain agreement across =resolutions. !kind=default -sort-key=Panel-A02a +sort-key=Panel-A04a trigger=namelist:aerosol=marine_pom_ems_scaling: .true. ; type=logical @@ -409,7 +407,7 @@ help=This logical activates the scaling factor sea_salt_ems_scaling. =generally stronger at higher resolutions. Hence it maybe be necessary =to scale emissions to gain agreement across resolutions. !kind=default -sort-key=Panel-A02c +sort-key=Panel-A04c trigger=namelist:aerosol=sea_salt_ems_scaling: .true. ; type=logical diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 01e65a2b91..63b3907a90 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -18,16 +18,44 @@ def __repr__(self): __str__ = __repr__ -""" -Copy this template and complete to add your macro +class vn32_t683(MacroUpgrade): + """ + Upgrade macro for ticket #698 by Alan J Hewitt. + Users can now select UKCA GLOMAP setting via namelist. -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by + Note that dust_and_clim is treated by UKCA as if setting (6) + but is treated by RADAER as if setting (8) + """ - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" + BEFORE_TAG = "vn3.2" + AFTER_TAG = "vn3.2_t698" def upgrade(self, config, meta_config=None): # Add settings + + aerosol_setting = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) + + if glomap_mode == "'glomap_mode_dust_and_clim'": + # Existing suites with dust_and_clim need i_mode_setup==6 + i_mode_setup = "6" + else if glomap_mode == "'glomap_mode_ukca'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_radaer_test'": + # Existing suites with ukca need i_mode_setup==8 + i_mode_setup = "8" + else if glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + else: + # This is trigger ignored + i_mode_setup = "0" + + # Add new settings with the specified option + self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + i_mode_setup ) + return config, self.reports -""" + diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 new file mode 100644 index 0000000000..cf3198c644 --- /dev/null +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -0,0 +1,68 @@ +!---------------------------------------------------------------------------- +! (c) Crown copyright Met Office. All rights reserved. +! The file LICENCE, distributed with this code, contains details of the terms +! under which the code may be used. +!---------------------------------------------------------------------------- +!> @brief RADAER initialisation subroutine for science configuration + +module um_radaer_init_mod + + ! LFRic namelists which have been read + use aerosol_config_mod, only: glomap_mode, & + glomap_mode_climatology, & + glomap_mode_dust_and_clim, & + glomap_mode_off, & + glomap_mode_radaer_test, & + glomap_mode_ukca, & + i_mode_setup + + use constants_mod, only: i_um + + use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init + + implicit none + + private + public :: um_radaer_init + +contains + +subroutine um_radaer_init() + + implicit none + + ! Some options have a different value of i_mode_setup + ! between ukca and radaer. + ! For example, we use prognostic dust (6) with other aerosol components (8) + ! in operational NWP. + integer(i_um) :: i_mode_setup_radaer_local + + integer, parameter :: i_radaer_mode_setup_eight = 8 + + if ( glomap_mode == glomap_mode_climatology ) then + ! i_mode_setup is not set in the namelist for glomap_mode_climatology + ! this is always fixed to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_dust_and_clim ) then + ! dust_and_clim runs with a diffent i_mode_setup between ukca and radaer + ! this is always fixed to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_radaer_test ) then + ! This was developed for aqua planet runs and may be redundant + ! For now fix this to eight. + i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + else if ( glomap_mode == glomap_mode_ukca ) then + ! UKCA and RADAER will use the same value for i_mode_setup + i_mode_setup_radaer_local = i_mode_setup + + end if + + call ukca_radaer_lfric_init( i_mode_setup_radaer_local ) + +end subroutine um_radaer_init + +end module um_radaer_init_mod + diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index b89f3f2ab1..8ff879085b 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -109,6 +109,7 @@ module gungho_model_mod use um_domain_init_mod, only : um_domain_init use um_sizes_init_mod, only : um_sizes_init use um_physics_init_mod, only : um_physics_init + use um_radaer_init_mod, only : um_radaer_init use um_radaer_lut_init_mod, only : um_radaer_lut_init use um_ukca_init_mod, only : um_ukca_init use jules_timestep_alg_mod, only : jules_timestep_type @@ -482,9 +483,6 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UM physics variables call um_physics_init() - ! Read all the radaer lut namelist files - call um_radaer_lut_init() - ! Initialisation of Jules high-level variables call jules_control_init() @@ -495,6 +493,13 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UKCA physics variables call um_ukca_init(ncells_ukca, model_clock) + ! This is the way into the UKCA repo + + ! Read all the radaer lut namelist files + call um_radaer_lut_init() + + ! Initialisation of UKCA RADAER variables + call um_radaer_init() end if #endif From 3ccbb0d04244a8510aeff2552ae71de469c9badf Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 15:11:16 +0100 Subject: [PATCH 14/44] maybe sorted git revert --- .../rose-meta/jedi_lfric_interface/versions.py | 1 - .../source/support/um_ukca_init_mod.f90 | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) 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 ea589596be..598c529315 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 @@ -21,7 +21,6 @@ def __repr__(self): """ Copy this template and complete to add your macro - class vnXX_txxx(MacroUpgrade): # Upgrade macro for by diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index f233d3085b..c3a6421d50 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -16,7 +16,8 @@ module um_ukca_init_mod ukca_scale_marine_pom_ems, & marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & - sea_salt_ems_scaling + sea_salt_ems_scaling, & + i_mode_setup use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & chem_scheme_strattrop, chem_scheme_none,& @@ -1022,7 +1023,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & i_photol_scheme_fastjx = photol_fastjx, & ! General GLOMAP configuration options i_mode_nzts=15, & - i_mode_setup=8, & + i_mode_setup=i_mode_setup, & l_mode_bhn_on=.true., & l_mode_bln_on=.false., & i_mode_nucscav=i_mode_nucscav, & @@ -1863,7 +1864,7 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - i_mode_setup=6, & + i_mode_setup=i_mode_setup, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & @@ -2141,5 +2142,4 @@ subroutine deallocate_fastjx_filevars() return end subroutine deallocate_fastjx_filevars - end module um_ukca_init_mod From 09bd9908346287e592bad5a7afd5b190307bcf98 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 7 Aug 2026 16:01:47 +0100 Subject: [PATCH 15/44] only ukca setting should trigger i_mode_setup --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 3 ++- .../source/support/um_ukca_init_mod.f90 | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index ff1d544043..d0661c2f34 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -187,7 +187,7 @@ trigger=namelist:aerosol=activation_scheme: 'climatology','dust_and_clim' ; =namelist:aerosol=ukca_scale_marine_pom_ems: 'ukca' ; =namelist:aerosol=ukca_scale_sea_salt_ems: 'ukca' ; =namelist:aerosol=horiz_d: 'ukca','dust_and_clim'; - =namelist:aerosol=i_mode_setup: 'ukca','dust_and_clim'; + =namelist:aerosol=i_mode_setup: 'ukca'; =namelist:aerosol=us_am: 'ukca','dust_and_clim'; value-titles=off,climatology,ukca,dust_and_clim,radaer_test values='off','climatology','ukca','dust_and_clim','radaer_test' @@ -204,6 +204,7 @@ type=real [namelist:aerosol=i_mode_setup] compulsory=true description=Set GLOMAP Aerosol Components and Modes +!enumeration=true help= The GLOMAP aerosol scheme is currently available in the configurations = described below: = diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index c3a6421d50..938429fd83 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -1864,7 +1864,8 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - i_mode_setup=i_mode_setup, & + ! i_mode_setup hard coded to (6) dust only for dust_and_clim + i_mode_setup=6, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & From b2541efde2ffb79af93641a444e5ba1307e79c60 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 12:11:07 +0100 Subject: [PATCH 16/44] pass dust ageing and BC tuning setting to radaer in namelist --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 10 +++++ .../rose-meta/um-aerosol/versions.py | 10 ++++- .../source/support/um_radaer_init_mod.f90 | 39 +++++++++++++++++-- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index d0661c2f34..f753a22ac2 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -229,9 +229,19 @@ help= The GLOMAP aerosol scheme is currently available in the configurations = glomap_mode_dust_and_clim is used for operational NWP which requires dust = prognostic fields for visibility and everything else needs to be fast. sort-key=Panel-A03 +trigger=l_dust_mp_ageing: 8 ; value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' values=6,8 +[namelist:aerosol=l_dust_mp_ageing] +compulsory=true +description=Turn on ageing, nucleation scavenging, coagulation, + =activation, and hetero chemistry for + =UKCA-mode dust and microplastics +ns=namelist/Science/UM Aerosol +sort-key=Panel-A05 +type=logical + [namelist:aerosol=l_radaer] compulsory=true description=Direct effect of climatology aerosols in RADAER diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 63b3907a90..801628c79d 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -21,10 +21,12 @@ def __repr__(self): class vn32_t683(MacroUpgrade): """ Upgrade macro for ticket #698 by Alan J Hewitt. - Users can now select UKCA GLOMAP setting via namelist. + Users can now select UKCA GLOMAP setting via namelist. Note that dust_and_clim is treated by UKCA as if setting (6) - but is treated by RADAER as if setting (8) + but is treated by RADAER as if setting (8). + + Users can now set dust ageing via the namelist. """ BEFORE_TAG = "vn3.2" @@ -56,6 +58,10 @@ def upgrade(self, config, meta_config=None): # Add new settings with the specified option self.add_setting( config, ["namelist:aerosol","i_mode_setup"], i_mode_setup ) + + # Default to false since this is the setting in all existing tests + self.add_setting( config, ["namelist:aerosol", "l_dust_mp_ageing"], + ".false." ) return config, self.reports diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index cf3198c644..5a85a402b4 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -13,13 +13,16 @@ module um_radaer_init_mod glomap_mode_dust_and_clim, & glomap_mode_off, & glomap_mode_radaer_test, & - glomap_mode_ukca, & - i_mode_setup + glomap_mode_ukca use constants_mod, only: i_um use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init + use ukca_mode_setup, only: i_mode_setup, & + i_ukca_bc_tuned, & + l_dust_mp_ageing + implicit none private @@ -39,28 +42,56 @@ subroutine um_radaer_init() integer, parameter :: i_radaer_mode_setup_eight = 8 + integer, parameter :: i_ukca_bc_tuned_zero = 0 + if ( glomap_mode == glomap_mode_climatology ) then ! i_mode_setup is not set in the namelist for glomap_mode_climatology ! this is always fixed to eight. i_mode_setup_radaer_local = i_radaer_mode_setup_eight - + + ! Tune BC turned off + i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + + ! Dust ageing turned off + l_dust_mp_ageing_local = .false. + else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent i_mode_setup between ukca and radaer ! this is always fixed to eight. i_mode_setup_radaer_local = i_radaer_mode_setup_eight + + ! Tune BC turned off + i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + + ! Dust ageing not allowed for dust only ukca + l_dust_mp_ageing_local = .false. else if ( glomap_mode == glomap_mode_radaer_test ) then ! This was developed for aqua planet runs and may be redundant ! For now fix this to eight. i_mode_setup_radaer_local = i_radaer_mode_setup_eight + ! Tune BC turned off + i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + + ! Dust ageing turned off + l_dust_mp_ageing_local = .false. + else if ( glomap_mode == glomap_mode_ukca ) then ! UKCA and RADAER will use the same value for i_mode_setup i_mode_setup_radaer_local = i_mode_setup + ! This value is set in the namelist + i_ukca_tune_bc_local = i_ukca_bc_tuned + + ! Dust ageing set by namelist + l_dust_mp_ageing_local = l_dust_mp_ageing + end if - call ukca_radaer_lfric_init( i_mode_setup_radaer_local ) + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local ) end subroutine um_radaer_init From a132533c1f29e5e3d6b3063dc62ca07327294e08 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 12:55:27 +0100 Subject: [PATCH 17/44] dust ageing not allowed for dust only --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index f753a22ac2..8111766ac3 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -238,6 +238,7 @@ compulsory=true description=Turn on ageing, nucleation scavenging, coagulation, =activation, and hetero chemistry for =UKCA-mode dust and microplastics +fail-if=this ==".true." and namelist:aerosol=i_mode_setup==6 ns=namelist/Science/UM Aerosol sort-key=Panel-A05 type=logical From 8deee3e03011712557f3bec47667406b579285cb Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 14:31:14 +0100 Subject: [PATCH 18/44] initialisation pipework --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 11 +++++++++++ .../rose-meta/um-aerosol/versions.py | 13 +++++++++++-- .../source/kernel/radaer_kernel_mod.F90 | 8 ++------ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 8111766ac3..8a00745a9a 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -258,6 +258,17 @@ trigger=namelist:aerosol=aclw_file: .true. ; =namelist:aerosol=crsw_file: .true. ; =namelist:aerosol=prec_file: .true. ; =namelist:aerosol=n_radaer_step: .true. ; + =namelist:aerosol=l_ukca_radaer_sustrat: .true. ; +type=logical + +[namelist:aerosol=l_ukca_radaer_sustrat] +compulsory=true +description=Sulphuric acid aerosol in stratosphere +help=Direct effect of UKCA-MODE aerosols will assume sulphuric acid + = optical properties for sulphate aerosol in the stratosphere + = aerosol optical depth. +ns=namelist/Science/UM Aerosol +sort-key=Panel-B01a type=logical [namelist:aerosol=marine_pom_ems_scaling] diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 801628c79d..28d773759e 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -27,6 +27,9 @@ class vn32_t683(MacroUpgrade): but is treated by RADAER as if setting (8). Users can now set dust ageing via the namelist. + + Users can now set radaer SUstrat via the namelist. + """ BEFORE_TAG = "vn3.2" @@ -60,8 +63,14 @@ def upgrade(self, config, meta_config=None): i_mode_setup ) # Default to false since this is the setting in all existing tests - self.add_setting( config, ["namelist:aerosol", "l_dust_mp_ageing"], + self.add_setting( config, + ["namelist:aerosol", "l_dust_mp_ageing"], + ".false." ) + + # Default to false since this is the setting in all existing tests + self.add_setting( config, + ["namelist:aerosol", "l_ukca_radaer_sustrat"], ".false." ) - + return config, self.reports diff --git a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 index 42b55e903f..7e01f02826 100644 --- a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 +++ b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 @@ -393,6 +393,8 @@ subroutine radaer_code( nlayers, & use ukca_radaer_lfric_api_mod, only: ukca_radaer_lfric_interface + use ukca_radaer_lfric_init_mod, only: n_ukca_mode, n_ukca_cpnt + implicit none ! Arguments @@ -514,12 +516,6 @@ subroutine radaer_code( nlayers, & ! Local variables for the kernel - ! Note - n_ukca_mode excludes the GLOMAP nucleation mode - ! Since nucleation is the first mode in GLOMAP, the subsequent modes 2-7 - ! have been reordered in RADAER as modes 1-6 - integer(i_um), parameter :: n_ukca_mode = 6 - integer(i_um), parameter :: n_ukca_cpnt = 17 - integer(i_um) :: npd_exclude_lw integer(i_um) :: npd_exclude_sw logical, parameter :: l_exclude_sw = .true. From 88c1669a1d177c13f350258f92a9759a365bf6c4 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 15:22:16 +0100 Subject: [PATCH 19/44] Its time to start testing this change --- build/extract/extract.yaml | 1 + dependencies.yaml | 4 ++-- .../source/support/um_ukca_init_mod.f90 | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index d728e50833..4df01d2f39 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -357,6 +357,7 @@ ukca: - src/science/radaer/spcrg3a_mod.F90 - src/science/radaer/ukca_radaer_band_average.F90 - src/science/radaer/ukca_radaer_compute_aod.F90 + - src/science/radaer/ukca_radaer_lfric_settings_mod.F90 - src/science/radaer/ukca_radaer_lut_mod.F90 - src/science/radaer/ukca_radaer_populate_lut_mod.F90 - src/science/radaer/ukca_radaer_precalc_mod.F90 diff --git a/dependencies.yaml b/dependencies.yaml index 5beb284ff6..324e27edeb 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -50,5 +50,5 @@ socrates-spectral: ref: 2026.07.1 ukca: - source: git@github.com:MetOffice/ukca.git - ref: 9fc2b6da8701f4904911b561a2738e3f16c4e501 + source: git@github.com:alanjhewitt/ukca.git + ref: radaer_api_ukca_side_5 diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index 938429fd83..f724b4e0a2 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -17,7 +17,8 @@ module um_ukca_init_mod marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & sea_salt_ems_scaling, & - i_mode_setup + i_mode_setup, & + l_dust_mp_ageing use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & chem_scheme_strattrop, chem_scheme_none,& @@ -35,7 +36,8 @@ module um_ukca_init_mod top_bdy_opt_overwrt_only_top_lev, & top_bdy_opt_overwrt_co_no_o3_top, & top_bdy_opt_overwrt_co_no_o3_h2o_top, & - ! Variables related to initialisation of photolysis + ! Variables related to initialisation of + ! photolysis photol_scheme, photol_scheme_off, & photol_scheme_fastjx, & photol_scheme_prescribed, fastjx_mode, & @@ -1032,7 +1034,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & ukca_mode_seg_size=i_ukca_mode_seg_size, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & - l_dust_mp_ageing=.false., & + l_dust_mp_ageing=l_dust_mp_ageing, & ! GLOMAP emissions configuration options l_ukca_primsu=.true., & l_ukca_primss=.true., & From 621164b056b2c3ad67c3b5279c8ad7aaee3acade Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 15:57:48 +0100 Subject: [PATCH 20/44] Fixed errors in upgrade macro --- .../rose-meta/um-aerosol/versions.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 28d773759e..0a767f6e83 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -18,7 +18,7 @@ def __repr__(self): __str__ = __repr__ -class vn32_t683(MacroUpgrade): +class vn32_t698(MacroUpgrade): """ Upgrade macro for ticket #698 by Alan J Hewitt. @@ -45,13 +45,16 @@ def upgrade(self, config, meta_config=None): if glomap_mode == "'glomap_mode_dust_and_clim'": # Existing suites with dust_and_clim need i_mode_setup==6 i_mode_setup = "6" - else if glomap_mode == "'glomap_mode_ukca'": + elif glomap_mode == "'glomap_mode_ukca'": # Existing suites with ukca need i_mode_setup==8 i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_radaer_test'": + elif glomap_mode == "'glomap_mode_radaer_test'": # Existing suites with ukca need i_mode_setup==8 i_mode_setup = "8" - else if glomap_mode == "'glomap_mode_climatology'": + elif glomap_mode == "'glomap_mode_climatology'": + # This is trigger ignored + i_mode_setup = "0" + elif glomap_mode == "'glomap_mode_off'": # This is trigger ignored i_mode_setup = "0" else: @@ -59,7 +62,8 @@ def upgrade(self, config, meta_config=None): i_mode_setup = "0" # Add new settings with the specified option - self.add_setting( config, ["namelist:aerosol","i_mode_setup"], + self.add_setting( config, + ["namelist:aerosol","i_mode_setup"], i_mode_setup ) # Default to false since this is the setting in all existing tests @@ -73,4 +77,3 @@ def upgrade(self, config, meta_config=None): ".false." ) return config, self.reports - From 6b74a9989c403ccfea6292cbb4a59571d901c095 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 16:18:27 +0100 Subject: [PATCH 21/44] Typo --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 38 +++++++++---------- .../rose-meta/um-aerosol/versions.py | 6 +-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 8a00745a9a..6102d602f2 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -205,29 +205,29 @@ type=real compulsory=true description=Set GLOMAP Aerosol Components and Modes !enumeration=true -help= The GLOMAP aerosol scheme is currently available in the configurations - = described below: +help=The GLOMAP aerosol scheme is currently available in the configurations + =described below: = - = (6) Dust (DU) in insoluble accumulation and insoluble coarse mode. - = This is sometimes labelled as DUonly_2mode + =(6) Dust (DU) in insoluble accumulation and insoluble coarse mode. + = This is sometimes labelled as DUonly_2mode = - = (8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) - = Dust (DU) components in 4 soluble modes and 3 insoluble modes. - = This is sometimes labelled SUBCOCSSDU_7mode . + =(8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) + = Dust (DU) components in 4 soluble modes and 3 insoluble modes. + = This is sometimes labelled SUBCOCSSDU_7mode . = - = Coming soon (12) SUBCOCSSDUNH_7mode for UKESM2. + =Coming soon (12) SUBCOCSSDUNH_7mode for UKESM2. = - = Coming soon SolInsol. + =Coming soon SolInsol. = - = i_mode_setup is not triggered by glomap_mode_climatology . - = glomap_mode_climatology is hard coded to (8) SUBCOCSSDU_7mode . + =i_mode_setup is not triggered by glomap_mode_climatology . + =glomap_mode_climatology is hard coded to (8) SUBCOCSSDU_7mode . = - = Setting glomap_mode_dust_and_clim calls UKCA with (6) dust only. The - = dust prognostic fields are combined with climatology aerosol fields from - = other components (SU, BC, OC, SS). CDNC and RADAER outputs are then - = calculated with GLOMAP setting (8) SUBCOCSSDU_7mode . - = glomap_mode_dust_and_clim is used for operational NWP which requires dust - = prognostic fields for visibility and everything else needs to be fast. + =Setting glomap_mode_dust_and_clim calls UKCA with (6) dust only. The + =dust prognostic fields are combined with climatology aerosol fields from + =other components (SU, BC, OC, SS). CDNC and RADAER outputs are then + =calculated with GLOMAP setting (8) SUBCOCSSDU_7mode . + =glomap_mode_dust_and_clim is used for operational NWP which requires dust + =prognostic fields for visibility and everything else needs to be fast. sort-key=Panel-A03 trigger=l_dust_mp_ageing: 8 ; value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' @@ -265,8 +265,8 @@ type=logical compulsory=true description=Sulphuric acid aerosol in stratosphere help=Direct effect of UKCA-MODE aerosols will assume sulphuric acid - = optical properties for sulphate aerosol in the stratosphere - = aerosol optical depth. + =optical properties for sulphate aerosol in the stratosphere + =aerosol optical depth. ns=namelist/Science/UM Aerosol sort-key=Panel-B01a type=logical diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 0a767f6e83..8d01883a52 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -38,9 +38,9 @@ class vn32_t698(MacroUpgrade): def upgrade(self, config, meta_config=None): # Add settings - aerosol_setting = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) + glomap_mode = self.get_setting_value(config, + ["namelist:aerosol", + "glomap_mode"]) if glomap_mode == "'glomap_mode_dust_and_clim'": # Existing suites with dust_and_clim need i_mode_setup==6 From 2fc181bb8c2c407c0ddb658e4439369dde17524d Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 11 Aug 2026 16:32:27 +0100 Subject: [PATCH 22/44] Typo --- .../rose-meta/um-aerosol/versions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 8d01883a52..3b85a380fb 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -42,19 +42,19 @@ def upgrade(self, config, meta_config=None): ["namelist:aerosol", "glomap_mode"]) - if glomap_mode == "'glomap_mode_dust_and_clim'": + if glomap_mode == "'dust_and_clim'": # Existing suites with dust_and_clim need i_mode_setup==6 i_mode_setup = "6" - elif glomap_mode == "'glomap_mode_ukca'": + elif glomap_mode == "'ukca'": # Existing suites with ukca need i_mode_setup==8 i_mode_setup = "8" - elif glomap_mode == "'glomap_mode_radaer_test'": + elif glomap_mode == "'radaer_test'": # Existing suites with ukca need i_mode_setup==8 i_mode_setup = "8" - elif glomap_mode == "'glomap_mode_climatology'": + elif glomap_mode == "'climatology'": # This is trigger ignored i_mode_setup = "0" - elif glomap_mode == "'glomap_mode_off'": + elif glomap_mode == "'off'": # This is trigger ignored i_mode_setup = "0" else: From 338a1aec37001b8db097c01bf320517fb91cf59b Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Wed, 12 Aug 2026 13:46:28 +0100 Subject: [PATCH 23/44] LFRic needs to see these UKCA modules --- build/extract/extract.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index 4df01d2f39..863fc82cdb 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -357,7 +357,9 @@ ukca: - src/science/radaer/spcrg3a_mod.F90 - src/science/radaer/ukca_radaer_band_average.F90 - src/science/radaer/ukca_radaer_compute_aod.F90 + - src/science/radaer/ukca_radaer_lfric_saved_mod.F90 - src/science/radaer/ukca_radaer_lfric_settings_mod.F90 + - src/science/radaer/ukca_radaer_lfric_struct_mod.F90 - src/science/radaer/ukca_radaer_lut_mod.F90 - src/science/radaer/ukca_radaer_populate_lut_mod.F90 - src/science/radaer/ukca_radaer_precalc_mod.F90 From c11ade5e410a58ea4abb407ebfcf4f58e7d11e79 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Wed, 12 Aug 2026 14:12:13 +0100 Subject: [PATCH 24/44] tidy - makes it read better in emacs --- .../rose-meta/um-chemistry/HEAD/rose-meta.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-chemistry/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-chemistry/HEAD/rose-meta.conf index 22d7661b72..26253b5ab8 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-chemistry/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-chemistry/HEAD/rose-meta.conf @@ -182,7 +182,7 @@ description=Number of halvings for ASAD chemistry timestep fail-if=this < 0 or this > 5 ; =# number of chemistry timestep halvings must be between 0 and 5 help=The number of times the chemistry timestep chem_timestep value is halved - = in UKCA's ASAD chemistry solver. + = in UKCA\'s ASAD chemistry solver. = = For large values of ukca_chem_seg_size, setting a positive value of = i_chem_timestep_halvings can skip unnecessary calculations. From bd2ac920d7e8b5af2fb7d631c6f8e5d24165b540 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Wed, 12 Aug 2026 15:05:57 +0100 Subject: [PATCH 25/44] I think this fail-if test is broken --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 6102d602f2..c102a2a41c 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -238,7 +238,7 @@ compulsory=true description=Turn on ageing, nucleation scavenging, coagulation, =activation, and hetero chemistry for =UKCA-mode dust and microplastics -fail-if=this ==".true." and namelist:aerosol=i_mode_setup==6 +#fail-if=this ==".true." and namelist:aerosol=i_mode_setup==6 ns=namelist/Science/UM Aerosol sort-key=Panel-A05 type=logical From aa48fcda648fe8127858e34b00520f0881f81949 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:24:53 +0100 Subject: [PATCH 26/44] Fix build errors --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 18 ++++---- .../source/support/um_radaer_init_mod.f90 | 44 ++++++++++++++----- .../source/support/um_ukca_init_mod.f90 | 26 +++++++++-- 3 files changed, 65 insertions(+), 23 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index c102a2a41c..4f41faa740 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -208,12 +208,14 @@ description=Set GLOMAP Aerosol Components and Modes help=The GLOMAP aerosol scheme is currently available in the configurations =described below: = - =(6) Dust (DU) in insoluble accumulation and insoluble coarse mode. - = This is sometimes labelled as DUonly_2mode + =DUonly_2mode (previously option (6) in the UM) + = Dust (DU) in insoluble accumulation and insoluble coarse mode. + = This is sometimes labelled as DUonly_2mode = - =(8) Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) - = Dust (DU) components in 4 soluble modes and 3 insoluble modes. - = This is sometimes labelled SUBCOCSSDU_7mode . + =SUBCOCSSDU_7mode (previously option (8) in the UM) + = Sulphate (SU) Black Carbon (BC) Organic Carbon (OC) Sea Salt (SS) + = Dust (DU) components in 4 soluble modes and 3 insoluble modes. + = This is sometimes labelled SUBCOCSSDU_7mode . = =Coming soon (12) SUBCOCSSDUNH_7mode for UKESM2. = @@ -229,9 +231,9 @@ help=The GLOMAP aerosol scheme is currently available in the configurations =glomap_mode_dust_and_clim is used for operational NWP which requires dust =prognostic fields for visibility and everything else needs to be fast. sort-key=Panel-A03 -trigger=l_dust_mp_ageing: 8 ; -value-titles='(6) DUonly_2mode','(8) SUBCOCSSDU_7mode' -values=6,8 +trigger=l_dust_mp_ageing: SUBCOCSSDU_7mode ; +value-titles='DUonly_2mode','SUBCOCSSDU_7mode' +values=DUonly_2mode,SUBCOCSSDU_7mode [namelist:aerosol=l_dust_mp_ageing] compulsory=true diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 5a85a402b4..c8313a92b0 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -8,20 +8,26 @@ module um_radaer_init_mod ! LFRic namelists which have been read - use aerosol_config_mod, only: glomap_mode, & - glomap_mode_climatology, & - glomap_mode_dust_and_clim, & - glomap_mode_off, & - glomap_mode_radaer_test, & - glomap_mode_ukca + use aerosol_config_mod, only: glomap_mode, & + glomap_mode_climatology, & + glomap_mode_dust_and_clim, & + glomap_mode_off, & + glomap_mode_radaer_test, & + glomap_mode_ukca, & + i_mode_setup, & + i_ukca_bc_tuned, & + l_dust_mp_ageing - use constants_mod, only: i_um + use constants_mod, only: i_um - use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init + use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init - use ukca_mode_setup, only: i_mode_setup, & - i_ukca_bc_tuned, & - l_dust_mp_ageing + use ukca_config_specification_mod, only: i_sussbcocdu_7mode, & + i_du_2mode + + use log_mod, only: log_event, & + log_scratch_space, & + LOG_LEVEL_ERROR implicit none @@ -79,7 +85,21 @@ subroutine um_radaer_init() else if ( glomap_mode == glomap_mode_ukca ) then ! UKCA and RADAER will use the same value for i_mode_setup - i_mode_setup_radaer_local = i_mode_setup + + ! Match rose-meta integers with those used in UKCA + select case ( i_mode_setup ) + case ( SUBCOCSSDU_7mode ) + i_mode_setup_radaer_local = i_sussbcocdu_7mode + + case ( DUonly_2mode ) + i_mode_setup_radaer_local = i_du_2mode + + case default + write( log_scratch_space, '(A,I0)' ) & + 'Developers should include additional mode settings here: ', i_mode_setup + call log_event( log_scratch_space, LOG_LEVEL_ERROR ) + + END SELECT ! This value is set in the namelist i_ukca_tune_bc_local = i_ukca_bc_tuned diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index f724b4e0a2..451ffdf750 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -104,6 +104,9 @@ module um_ukca_init_mod photol_sw_phases, photol_max_wvl, photol_max_crossec, & photol_wvl_intervals, photol_num_tvals + use ukca_config_specification_mod, only: i_sussbcocdu_7mode, & + i_du_2mode + implicit none private @@ -654,6 +657,9 @@ module um_ukca_init_mod integer, save, public :: n_phot_flds_req ! Num of photol driving fields + ! Pass setting of i_mode_setup to UKCA + integer(i_um) :: i_mode_setup_local + contains subroutine um_ukca_init(ncells_ukca, model_clock) @@ -914,9 +920,23 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & call log_event('No Chemical scheme chosen for UKCA', LOG_LEVEL_INFO) return end if + if (aerosol == aerosol_um .and. glomap_mode == glomap_mode_ukca) then + l_ukca_chem_aero = .true. l_ukca_mode = .true. + + select case( i_mode_setup ) + case ( SUBCOCSSDU_7mode ) + i_mode_setup_local = i_sussbcocdu_7mode + + case ( DUonly_2mode ) + i_mode_setup_local = i_du_2mode + + case default + call log_event( 'Unknown option - i_mode_setup', LOG_LEVEL_ERROR ) + end select + end if ! If the Easy Aerosol climatology is being used to set CDNC values @@ -1025,7 +1045,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & i_photol_scheme_fastjx = photol_fastjx, & ! General GLOMAP configuration options i_mode_nzts=15, & - i_mode_setup=i_mode_setup, & + i_mode_setup=i_mode_setup_local, & l_mode_bhn_on=.true., & l_mode_bln_on=.false., & i_mode_nucscav=i_mode_nucscav, & @@ -1866,8 +1886,8 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - ! i_mode_setup hard coded to (6) dust only for dust_and_clim - i_mode_setup=6, & + ! i_mode_setup hard coded to i_du_2mode (6) for dust_and_clim + i_mode_setup=i_du_2mode, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & From e49ca5fea0c9dc9c369eeae5b5edb17c6c9af3df Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:44:21 +0100 Subject: [PATCH 27/44] some fixes --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 14 ++++++------ .../rose-meta/um-aerosol/versions.py | 22 +++++++++---------- .../source/support/um_radaer_init_mod.f90 | 14 ++++++------ .../source/support/um_ukca_init_mod.f90 | 8 +++---- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 4f41faa740..1f13039b96 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -187,7 +187,7 @@ trigger=namelist:aerosol=activation_scheme: 'climatology','dust_and_clim' ; =namelist:aerosol=ukca_scale_marine_pom_ems: 'ukca' ; =namelist:aerosol=ukca_scale_sea_salt_ems: 'ukca' ; =namelist:aerosol=horiz_d: 'ukca','dust_and_clim'; - =namelist:aerosol=i_mode_setup: 'ukca'; + =namelist:aerosol=mode_setup: 'ukca'; =namelist:aerosol=us_am: 'ukca','dust_and_clim'; value-titles=off,climatology,ukca,dust_and_clim,radaer_test values='off','climatology','ukca','dust_and_clim','radaer_test' @@ -201,7 +201,7 @@ range=0:99.9 sort-key=Panel-F01 type=real -[namelist:aerosol=i_mode_setup] +[namelist:aerosol=mode_setup] compulsory=true description=Set GLOMAP Aerosol Components and Modes !enumeration=true @@ -221,7 +221,7 @@ help=The GLOMAP aerosol scheme is currently available in the configurations = =Coming soon SolInsol. = - =i_mode_setup is not triggered by glomap_mode_climatology . + =mode_setup is not triggered by glomap_mode_climatology . =glomap_mode_climatology is hard coded to (8) SUBCOCSSDU_7mode . = =Setting glomap_mode_dust_and_clim calls UKCA with (6) dust only. The @@ -231,16 +231,16 @@ help=The GLOMAP aerosol scheme is currently available in the configurations =glomap_mode_dust_and_clim is used for operational NWP which requires dust =prognostic fields for visibility and everything else needs to be fast. sort-key=Panel-A03 -trigger=l_dust_mp_ageing: SUBCOCSSDU_7mode ; -value-titles='DUonly_2mode','SUBCOCSSDU_7mode' -values=DUonly_2mode,SUBCOCSSDU_7mode +trigger=namelist:aerosol=l_dust_mp_ageing: 'SUBCOCSSDU_7mode' ; +value-titles=DUonly_2mode,SUBCOCSSDU_7mode +values='DUonly_2mode','SUBCOCSSDU_7mode' [namelist:aerosol=l_dust_mp_ageing] compulsory=true description=Turn on ageing, nucleation scavenging, coagulation, =activation, and hetero chemistry for =UKCA-mode dust and microplastics -#fail-if=this ==".true." and namelist:aerosol=i_mode_setup==6 +#fail-if=this ==".true." and namelist:aerosol=mode_setup==6 ns=namelist/Science/UM Aerosol sort-key=Panel-A05 type=logical diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 3b85a380fb..65f65bd995 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -43,28 +43,28 @@ def upgrade(self, config, meta_config=None): "glomap_mode"]) if glomap_mode == "'dust_and_clim'": - # Existing suites with dust_and_clim need i_mode_setup==6 - i_mode_setup = "6" + # Existing suites with dust_and_clim need mode_setup==6 + mode_setup = 'DUonly_2mode' elif glomap_mode == "'ukca'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" + # Existing suites with ukca need mode_setup==8 + mode_setup = 'SUBCOCSSDU_7mode' elif glomap_mode == "'radaer_test'": - # Existing suites with ukca need i_mode_setup==8 - i_mode_setup = "8" + # Existing suites with ukca need mode_setup==8 + mode_setup = 'SUBCOCSSDU_7mode' elif glomap_mode == "'climatology'": # This is trigger ignored - i_mode_setup = "0" + mode_setup = '' elif glomap_mode == "'off'": # This is trigger ignored - i_mode_setup = "0" + mode_setup = '' else: # This is trigger ignored - i_mode_setup = "0" + mode_setup = '' # Add new settings with the specified option self.add_setting( config, - ["namelist:aerosol","i_mode_setup"], - i_mode_setup ) + ["namelist:aerosol","mode_setup"], + mode_setup ) # Default to false since this is the setting in all existing tests self.add_setting( config, diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index c8313a92b0..73e911b5f6 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -14,7 +14,7 @@ module um_radaer_init_mod glomap_mode_off, & glomap_mode_radaer_test, & glomap_mode_ukca, & - i_mode_setup, & + mode_setup, & i_ukca_bc_tuned, & l_dust_mp_ageing @@ -40,7 +40,7 @@ subroutine um_radaer_init() implicit none - ! Some options have a different value of i_mode_setup + ! Some options have a different value of mode_setup ! between ukca and radaer. ! For example, we use prognostic dust (6) with other aerosol components (8) ! in operational NWP. @@ -51,7 +51,7 @@ subroutine um_radaer_init() integer, parameter :: i_ukca_bc_tuned_zero = 0 if ( glomap_mode == glomap_mode_climatology ) then - ! i_mode_setup is not set in the namelist for glomap_mode_climatology + ! mode_setup is not set in the namelist for glomap_mode_climatology ! this is always fixed to eight. i_mode_setup_radaer_local = i_radaer_mode_setup_eight @@ -62,7 +62,7 @@ subroutine um_radaer_init() l_dust_mp_ageing_local = .false. else if ( glomap_mode == glomap_mode_dust_and_clim ) then - ! dust_and_clim runs with a diffent i_mode_setup between ukca and radaer + ! dust_and_clim runs with a diffent mode_setup between ukca and radaer ! this is always fixed to eight. i_mode_setup_radaer_local = i_radaer_mode_setup_eight @@ -84,10 +84,10 @@ subroutine um_radaer_init() l_dust_mp_ageing_local = .false. else if ( glomap_mode == glomap_mode_ukca ) then - ! UKCA and RADAER will use the same value for i_mode_setup + ! UKCA and RADAER will use the same value for mode_setup ! Match rose-meta integers with those used in UKCA - select case ( i_mode_setup ) + select case ( mode_setup ) case ( SUBCOCSSDU_7mode ) i_mode_setup_radaer_local = i_sussbcocdu_7mode @@ -96,7 +96,7 @@ subroutine um_radaer_init() case default write( log_scratch_space, '(A,I0)' ) & - 'Developers should include additional mode settings here: ', i_mode_setup + 'Developers should include additional mode settings here: ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) END SELECT diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index 451ffdf750..c889ce8365 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -17,7 +17,7 @@ module um_ukca_init_mod marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & sea_salt_ems_scaling, & - i_mode_setup, & + mode_setup, & l_dust_mp_ageing use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & @@ -657,7 +657,7 @@ module um_ukca_init_mod integer, save, public :: n_phot_flds_req ! Num of photol driving fields - ! Pass setting of i_mode_setup to UKCA + ! Pass setting of mode_setup to UKCA integer(i_um) :: i_mode_setup_local contains @@ -926,7 +926,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & l_ukca_chem_aero = .true. l_ukca_mode = .true. - select case( i_mode_setup ) + select case( mode_setup ) case ( SUBCOCSSDU_7mode ) i_mode_setup_local = i_sussbcocdu_7mode @@ -934,7 +934,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & i_mode_setup_local = i_du_2mode case default - call log_event( 'Unknown option - i_mode_setup', LOG_LEVEL_ERROR ) + call log_event( 'Unknown option - mode_setup', LOG_LEVEL_ERROR ) end select end if From 904d47b9761071ac820f4571cdd181f76e57d395 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 13 Aug 2026 15:04:25 +0100 Subject: [PATCH 28/44] build errors --- .../source/support/um_radaer_init_mod.f90 | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 73e911b5f6..4cb4c1f047 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -15,9 +15,10 @@ module um_radaer_init_mod glomap_mode_radaer_test, & glomap_mode_ukca, & mode_setup, & - i_ukca_bc_tuned, & l_dust_mp_ageing + use ukca_mode_setup, only: i_ukca_bc_tuned + use constants_mod, only: i_um use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init @@ -46,6 +47,10 @@ subroutine um_radaer_init() ! in operational NWP. integer(i_um) :: i_mode_setup_radaer_local + integer(i_um) :: i_ukca_tune_bc_local + + logical :: l_dust_mp_ageing_local + integer, parameter :: i_radaer_mode_setup_eight = 8 integer, parameter :: i_ukca_bc_tuned_zero = 0 @@ -88,18 +93,15 @@ subroutine um_radaer_init() ! Match rose-meta integers with those used in UKCA select case ( mode_setup ) - case ( SUBCOCSSDU_7mode ) + case ( 'SUBCOCSSDU_7mode' ) i_mode_setup_radaer_local = i_sussbcocdu_7mode - - case ( DUonly_2mode ) + case ( 'DUonly_2mode' ) i_mode_setup_radaer_local = i_du_2mode - case default write( log_scratch_space, '(A,I0)' ) & 'Developers should include additional mode settings here: ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) - - END SELECT + end select ! This value is set in the namelist i_ukca_tune_bc_local = i_ukca_bc_tuned From 8feab8dc1a1e647a68fd03913c01c12d141eb649 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 13 Aug 2026 15:13:26 +0100 Subject: [PATCH 29/44] validate rose-meta error --- .../rose-meta/um-aerosol/versions.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index 65f65bd995..ef29e40f07 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -44,22 +44,13 @@ def upgrade(self, config, meta_config=None): if glomap_mode == "'dust_and_clim'": # Existing suites with dust_and_clim need mode_setup==6 - mode_setup = 'DUonly_2mode' + mode_setup = "'DUonly_2mode'" elif glomap_mode == "'ukca'": # Existing suites with ukca need mode_setup==8 - mode_setup = 'SUBCOCSSDU_7mode' - elif glomap_mode == "'radaer_test'": - # Existing suites with ukca need mode_setup==8 - mode_setup = 'SUBCOCSSDU_7mode' - elif glomap_mode == "'climatology'": - # This is trigger ignored - mode_setup = '' - elif glomap_mode == "'off'": - # This is trigger ignored - mode_setup = '' + mode_setup = "'SUBCOCSSDU_7mode'" else: - # This is trigger ignored - mode_setup = '' + # This is trigger ignored - default to SUBCOCSSDU_7mode + mode_setup = "'SUBCOCSSDU_7mode'" # Add new settings with the specified option self.add_setting( config, From 2c0477aa81d870b7340f8715a8b7e8b93358ab75 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 14 Aug 2026 11:34:53 +0100 Subject: [PATCH 30/44] whoops - forgotten an argument --- .../source/support/um_radaer_init_mod.f90 | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 4cb4c1f047..f47e73bb45 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -15,7 +15,8 @@ module um_radaer_init_mod glomap_mode_radaer_test, & glomap_mode_ukca, & mode_setup, & - l_dust_mp_ageing + l_dust_mp_ageing, & + l_ukca_radaer_sustrat use ukca_mode_setup, only: i_ukca_bc_tuned @@ -66,6 +67,9 @@ subroutine um_radaer_init() ! Dust ageing turned off l_dust_mp_ageing_local = .false. + ! sustrat turned off + l_ukca_radaer_sustrat_local = .false. + else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent mode_setup between ukca and radaer ! this is always fixed to eight. @@ -76,6 +80,9 @@ subroutine um_radaer_init() ! Dust ageing not allowed for dust only ukca l_dust_mp_ageing_local = .false. + + ! sustrat turned off + l_ukca_radaer_sustrat_local = .false. else if ( glomap_mode == glomap_mode_radaer_test ) then ! This was developed for aqua planet runs and may be redundant @@ -88,32 +95,38 @@ subroutine um_radaer_init() ! Dust ageing turned off l_dust_mp_ageing_local = .false. + ! sustrat turned off + l_ukca_radaer_sustrat_local = .false. + else if ( glomap_mode == glomap_mode_ukca ) then ! UKCA and RADAER will use the same value for mode_setup ! Match rose-meta integers with those used in UKCA - select case ( mode_setup ) - case ( 'SUBCOCSSDU_7mode' ) + if ( mode_setup == 'SUBCOCSSDU_7mode' ) then i_mode_setup_radaer_local = i_sussbcocdu_7mode - case ( 'DUonly_2mode' ) + else if ( mode_setup == 'DUonly_2mode' ) then i_mode_setup_radaer_local = i_du_2mode - case default + else write( log_scratch_space, '(A,I0)' ) & 'Developers should include additional mode settings here: ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) - end select + end if - ! This value is set in the namelist + ! UKCA currently set to i_ukca_bc_tuned i_ukca_tune_bc_local = i_ukca_bc_tuned ! Dust ageing set by namelist l_dust_mp_ageing_local = l_dust_mp_ageing + ! sustrat set by namelist + l_ukca_radaer_sustrat_local = l_ukca_radaer_sustrat + end if call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & i_ukca_tune_bc_local, & - l_dust_mp_ageing_local ) + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) end subroutine um_radaer_init From 94cb9ecae849b129cd2de18f36339dd738f5cc17 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 14 Aug 2026 11:36:56 +0100 Subject: [PATCH 31/44] typo --- .../source/support/um_radaer_init_mod.f90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index f47e73bb45..3c00572b55 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -52,6 +52,8 @@ subroutine um_radaer_init() logical :: l_dust_mp_ageing_local + logical :: l_ukca_radaer_sustrat_local + integer, parameter :: i_radaer_mode_setup_eight = 8 integer, parameter :: i_ukca_bc_tuned_zero = 0 From 05b4caecc00e292e10d294c4b910e7a96208fc81 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 14 Aug 2026 12:51:04 +0100 Subject: [PATCH 32/44] This will now use the enumeration values for mode_setup --- .../source/support/um_radaer_init_mod.f90 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 3c00572b55..4ab0a2ab75 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -15,6 +15,8 @@ module um_radaer_init_mod glomap_mode_radaer_test, & glomap_mode_ukca, & mode_setup, & + mode_setup_SUBCOCSSDU_7mode, & + mode_setup_DUonly_2mode, & l_dust_mp_ageing, & l_ukca_radaer_sustrat @@ -104,15 +106,16 @@ subroutine um_radaer_init() ! UKCA and RADAER will use the same value for mode_setup ! Match rose-meta integers with those used in UKCA - if ( mode_setup == 'SUBCOCSSDU_7mode' ) then + select case ( mode_setup ) + case ( mode_setup_SUBCOCSSDU_7mode ) i_mode_setup_radaer_local = i_sussbcocdu_7mode - else if ( mode_setup == 'DUonly_2mode' ) then + case ( mode_setup_DUonly_2mode ) i_mode_setup_radaer_local = i_du_2mode - else + case default write( log_scratch_space, '(A,I0)' ) & 'Developers should include additional mode settings here: ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) - end if + end select ! UKCA currently set to i_ukca_bc_tuned i_ukca_tune_bc_local = i_ukca_bc_tuned From 5d9fc413235a8f9d93fd4d64bbac2c8545a685ed Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 14 Aug 2026 13:44:16 +0100 Subject: [PATCH 33/44] Fixing build errors --- .../source/support/um_ukca_init_mod.f90 | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index c889ce8365..9beff94c93 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -11,13 +11,18 @@ module um_ukca_init_mod use aerosol_config_mod, only: glomap_mode, & glomap_mode_ukca, & glomap_mode_dust_and_clim, & - emissions, emissions_GC3, emissions_GC5,& - easyaerosol_cdnc, ukca_mode_seg_size, & + emissions, & + emissions_GC3, & + emissions_GC5, & + easyaerosol_cdnc, & + ukca_mode_seg_size, & ukca_scale_marine_pom_ems, & marine_pom_ems_scaling, & ukca_scale_sea_salt_ems, & sea_salt_ems_scaling, & mode_setup, & + mode_setup_SUBCOCSSDU_7mode, & + mode_setup_DUonly_2mode, & l_dust_mp_ageing use section_choice_config_mod, only: aerosol, aerosol_um use chemistry_config_mod, only: chem_scheme, chem_scheme_offline_ox, & @@ -909,7 +914,7 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & case ( top_bdy_opt_overwrt_co_no_o3_h2o_top ) i_ukca_top_boundary_opt = i_overwrt_co_no_o3_h2o_top case default - call log_event('Unknown option - UKCA tracer top boundary handling', & + call log_event('Unknown option - UKCA tracer top boundary handling',& LOG_LEVEL_ERROR) end select @@ -927,14 +932,14 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & l_ukca_mode = .true. select case( mode_setup ) - case ( SUBCOCSSDU_7mode ) + case ( mode_setup_SUBCOCSSDU_7mode ) i_mode_setup_local = i_sussbcocdu_7mode - - case ( DUonly_2mode ) + case ( mode_setup_DUonly_2mode ) i_mode_setup_local = i_du_2mode - case default - call log_event( 'Unknown option - mode_setup', LOG_LEVEL_ERROR ) + write( log_scratch_space, '(A,I0)' ) & + 'Developers should include additional mode settings here: ', mode_setup + call log_event( log_scratch_space, LOG_LEVEL_ERROR ) end select end if @@ -1996,16 +2001,12 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & select case( emiss_names(i) ) case('DMS') long_name = 'DMS emissions expressed as sulfur' - case('Monoterp') long_name = 'Monoterpene surf emissions expressed as carbon' - case('SO2_low') long_name = 'SO2 low level emissions expressed as sulfur' - case('SO2_high') long_name = 'SO2 high level emissions expressed as sulfur' - end select if (emiss_names(i) == 'SO2_high') then From f0002bcfcad6dec73f6678d930770b708e868acd Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:55:01 +0100 Subject: [PATCH 34/44] Run time errors - integers dont match --- .../source/support/um_radaer_init_mod.f90 | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 4ab0a2ab75..8014b3a5f9 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -20,7 +20,8 @@ module um_radaer_init_mod l_dust_mp_ageing, & l_ukca_radaer_sustrat - use ukca_mode_setup, only: i_ukca_bc_tuned + use ukca_mode_setup, only: i_ukca_bc_tuned, & + i_ukca_tune_bc_off use constants_mod, only: i_um @@ -56,17 +57,13 @@ subroutine um_radaer_init() logical :: l_ukca_radaer_sustrat_local - integer, parameter :: i_radaer_mode_setup_eight = 8 - - integer, parameter :: i_ukca_bc_tuned_zero = 0 - if ( glomap_mode == glomap_mode_climatology ) then ! mode_setup is not set in the namelist for glomap_mode_climatology - ! this is always fixed to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight + ! this is always fixed to i_sussbcocdu_7mode. + i_mode_setup_radaer_local = i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + i_ukca_tune_bc_local = i_ukca_tune_bc_off ! Dust ageing turned off l_dust_mp_ageing_local = .false. @@ -76,11 +73,11 @@ subroutine um_radaer_init() else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent mode_setup between ukca and radaer - ! this is always fixed to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight + ! this is always fixed to i_sussbcocdu_7mode. + i_mode_setup_radaer_local = i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + i_ukca_tune_bc_local = i_ukca_tune_bc_off ! Dust ageing not allowed for dust only ukca l_dust_mp_ageing_local = .false. @@ -90,11 +87,11 @@ subroutine um_radaer_init() else if ( glomap_mode == glomap_mode_radaer_test ) then ! This was developed for aqua planet runs and may be redundant - ! For now fix this to eight. - i_mode_setup_radaer_local = i_radaer_mode_setup_eight + ! For now fix this to i_sussbcocdu_7mode. + i_mode_setup_radaer_local = i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_bc_tuned_zero + i_ukca_tune_bc_local = i_ukca_tune_bc_off ! Dust ageing turned off l_dust_mp_ageing_local = .false. From 81ab53cf12a8d7a1b87aaec79d7d96bed1c67f06 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Mon, 24 Aug 2026 14:26:26 +0100 Subject: [PATCH 35/44] Only initialise when l_radaer is true --- .../source/support/um_radaer_init_mod.f90 | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 8014b3a5f9..5f6f5975b5 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -18,6 +18,7 @@ module um_radaer_init_mod mode_setup_SUBCOCSSDU_7mode, & mode_setup_DUonly_2mode, & l_dust_mp_ageing, & + l_radaer, & l_ukca_radaer_sustrat use ukca_mode_setup, only: i_ukca_bc_tuned, & @@ -71,6 +72,15 @@ subroutine um_radaer_init() ! sustrat turned off l_ukca_radaer_sustrat_local = .false. + if ( l_radaer) then + + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) + + end if + else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent mode_setup between ukca and radaer ! this is always fixed to i_sussbcocdu_7mode. @@ -84,7 +94,16 @@ subroutine um_radaer_init() ! sustrat turned off l_ukca_radaer_sustrat_local = .false. - + + if ( l_radaer) then + + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) + + end if + else if ( glomap_mode == glomap_mode_radaer_test ) then ! This was developed for aqua planet runs and may be redundant ! For now fix this to i_sussbcocdu_7mode. @@ -99,6 +118,15 @@ subroutine um_radaer_init() ! sustrat turned off l_ukca_radaer_sustrat_local = .false. + if ( l_radaer) then + + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) + + end if + else if ( glomap_mode == glomap_mode_ukca ) then ! UKCA and RADAER will use the same value for mode_setup @@ -123,12 +151,16 @@ subroutine um_radaer_init() ! sustrat set by namelist l_ukca_radaer_sustrat_local = l_ukca_radaer_sustrat - end if + if ( l_radaer) then - call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & - i_ukca_tune_bc_local, & - l_dust_mp_ageing_local, & - l_ukca_radaer_sustrat_local ) + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) + + end if + + end if end subroutine um_radaer_init From c6b5b0f97a8c8136cad205c2dc68b72ee3b085d2 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Mon, 24 Aug 2026 17:01:40 +0100 Subject: [PATCH 36/44] use allocatable lists specific to i_mode_setup --- .../source/kernel/radaer_kernel_mod.F90 | 136 +++--------------- 1 file changed, 16 insertions(+), 120 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 index 7e01f02826..f288ca4b47 100644 --- a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 +++ b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 @@ -393,6 +393,22 @@ subroutine radaer_code( nlayers, & use ukca_radaer_lfric_api_mod, only: ukca_radaer_lfric_interface + use ukca_radaer_lfric_list_mod, only: max_fldname_len, & + pvol_comp_names, & + comp_names, & + mode_names, & + rhopar_mode_names, & + dry_diam_mode_names, & + modal_volume_names, & + ait_sol_volume_names, & + acc_sol_volume_names, & + cor_sol_volume_names, & + ait_ins_volume_names, & + acc_ins_volume_names, & + cor_ins_volume_names, & + modal_wtv_names, & + wet_diam_mode_names + use ukca_radaer_lfric_init_mod, only: n_ukca_mode, n_ukca_cpnt implicit none @@ -607,126 +623,6 @@ subroutine radaer_code( nlayers, & !----------------------------------------------------------------------- - integer, parameter :: max_fldname_len = 40 - - character(len=max_fldname_len), parameter, dimension(17) :: & - pvol_comp_names = [ 'fldname_pvol_su_ait_sol' , & - 'fldname_pvol_bc_ait_sol' , & - 'fldname_pvol_om_ait_sol' , & - 'fldname_pvol_su_acc_sol' , & - 'fldname_pvol_bc_acc_sol' , & - 'fldname_pvol_om_acc_sol' , & - 'fldname_pvol_ss_acc_sol' , & - 'fldname_pvol_du_acc_sol' , & - 'fldname_pvol_su_cor_sol' , & - 'fldname_pvol_bc_cor_sol' , & - 'fldname_pvol_om_cor_sol' , & - 'fldname_pvol_ss_cor_sol' , & - 'fldname_pvol_du_cor_sol' , & - 'fldname_pvol_bc_ait_ins' , & - 'fldname_pvol_om_ait_ins' , & - 'fldname_pvol_du_acc_ins' , & - 'fldname_pvol_du_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(17) :: & - comp_names = [ 'fldname_ait_sol_su' , & - 'fldname_ait_sol_bc' , & - 'fldname_ait_sol_om' , & - 'fldname_acc_sol_su' , & - 'fldname_acc_sol_bc' , & - 'fldname_acc_sol_om' , & - 'fldname_acc_sol_ss' , & - 'fldname_acc_sol_du' , & - 'fldname_cor_sol_su' , & - 'fldname_cor_sol_bc' , & - 'fldname_cor_sol_om' , & - 'fldname_cor_sol_ss' , & - 'fldname_cor_sol_du' , & - 'fldname_ait_ins_bc' , & - 'fldname_ait_ins_om' , & - 'fldname_acc_ins_du' , & - 'fldname_cor_ins_du' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - mode_names = [ 'fldname_n_ait_sol' , & - 'fldname_n_acc_sol' , & - 'fldname_n_cor_sol' , & - 'fldname_n_ait_ins' , & - 'fldname_n_acc_ins' , & - 'fldname_n_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - rhopar_mode_names = [ 'fldname_rhopar_ait_sol' , & - 'fldname_rhopar_acc_sol' , & - 'fldname_rhopar_cor_sol' , & - 'fldname_rhopar_ait_ins' , & - 'fldname_rhopar_acc_ins' , & - 'fldname_rhopar_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - dry_diam_mode_names = [ 'fldname_drydp_ait_sol' , & - 'fldname_drydp_acc_sol' , & - 'fldname_drydp_cor_sol' , & - 'fldname_drydp_ait_ins' , & - 'fldname_drydp_acc_ins' , & - 'fldname_drydp_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - modal_volume_names = [ 'fldname_mod_vol_ait_sol' , & - 'fldname_mod_vol_acc_sol' , & - 'fldname_mod_vol_cor_sol' , & - 'fldname_mod_vol_ait_ins' , & - 'fldname_mod_vol_acc_ins' , & - 'fldname_mod_vol_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(4) :: & - ait_sol_volume_names = [ 'pvol_wat_ait_sol' , & - 'pvol_su_ait_sol ' , & - 'pvol_bc_ait_sol ' , & - 'pvol_om_ait_sol ' ] - - character(len=max_fldname_len), parameter,dimension(5) :: & - acc_sol_volume_names = [ 'pvol_wat_acc_sol' , & - 'pvol_su_acc_sol ' , & - 'pvol_bc_acc_sol ' , & - 'pvol_om_acc_sol ' , & - 'pvol_ss_acc_sol ' ] - - character(len=max_fldname_len), parameter,dimension(5) :: & - cor_sol_volume_names = [ 'pvol_wat_cor_sol' , & - 'pvol_su_cor_sol ' , & - 'pvol_bc_cor_sol ' , & - 'pvol_om_cor_sol ' , & - 'pvol_ss_cor_sol ' ] - - character(len=max_fldname_len), parameter,dimension(2) :: & - ait_ins_volume_names = [ 'pvol_bc_ait_ins' , & - 'pvol_om_ait_ins' ] - - character(len=max_fldname_len), parameter, dimension(1) :: & - acc_ins_volume_names = [ 'pvol_du_acc_ins' ] - - character(len=max_fldname_len), parameter, dimension(1) :: & - cor_ins_volume_names = [ 'pvol_du_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - modal_wtv_names = [ 'fldname_pvol_wat_ait_sol' , & - 'fldname_pvol_wat_acc_sol' , & - 'fldname_pvol_wat_cor_sol' , & - 'fldname_pvol_wat_ait_ins' , & - 'fldname_pvol_wat_acc_ins' , & - 'fldname_pvol_wat_cor_ins' ] - - character(len=max_fldname_len), parameter, dimension(6) :: & - wet_diam_mode_names = [ 'fldname_wetdp_ait_sol' , & - 'fldname_wetdp_acc_sol' , & - 'fldname_wetdp_cor_sol' , & - 'fldname_wetdp_ait_ins' , & - 'fldname_wetdp_acc_ins' , & - 'fldname_wetdp_cor_ins' ] - - !----------------------------------------------------------------------- - ncp_max_x_nmodes = ncp_max * nmodes npd_exclude_lw = SIZE( lw_index_exclude, 1 ) From a83cb0ff8758aa9839f4f018b334c212ca7b300d Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Mon, 24 Aug 2026 17:05:39 +0100 Subject: [PATCH 37/44] include new UKCA module --- build/extract/extract.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/extract/extract.yaml b/build/extract/extract.yaml index 863fc82cdb..de3782c300 100644 --- a/build/extract/extract.yaml +++ b/build/extract/extract.yaml @@ -357,6 +357,7 @@ ukca: - src/science/radaer/spcrg3a_mod.F90 - src/science/radaer/ukca_radaer_band_average.F90 - src/science/radaer/ukca_radaer_compute_aod.F90 + - src/science/radaer/ukca_radaer_lfric_list_mod.F90 - src/science/radaer/ukca_radaer_lfric_saved_mod.F90 - src/science/radaer/ukca_radaer_lfric_settings_mod.F90 - src/science/radaer/ukca_radaer_lfric_struct_mod.F90 From 71375a41c2d2e2640d36f356cd1a6ff0c51d69cd Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 25 Aug 2026 12:11:36 +0100 Subject: [PATCH 38/44] l_sustrat is now a namelist option --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 2 +- .../source/kernel/radaer_kernel_mod.F90 | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 1f13039b96..70381bad5a 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -217,7 +217,7 @@ help=The GLOMAP aerosol scheme is currently available in the configurations = Dust (DU) components in 4 soluble modes and 3 insoluble modes. = This is sometimes labelled SUBCOCSSDU_7mode . = - =Coming soon (12) SUBCOCSSDUNH_7mode for UKESM2. + =Coming soon SUBCOCSSDUNH_7mode ( previously option (12) ) for UKESM2. = =Coming soon SolInsol. = diff --git a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 index f288ca4b47..3e4590f345 100644 --- a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 +++ b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 @@ -355,7 +355,8 @@ subroutine radaer_code( nlayers, & use constants_mod, only: r_def, i_def, r_um, i_um - use aerosol_config_mod, only: n_radaer_step + use aerosol_config_mod, only: n_radaer_step, & + l_ukca_radaer_sustrat use socrates_init_mod, only: n_sw_band, & sw_n_band_exclude, & sw_index_exclude, & @@ -1382,6 +1383,8 @@ subroutine radaer_code( nlayers, & ukca_modal_wtv, & ! Logical to describe orientation l_inverted, & + ! Logical to account for optical properties of sulphate in atmosphere + l_ukca_radaer_sustrat, & ! Control option for prescribed single scattering albedo array i_ukca_radaer_prescribe_ssa, & ! Model level of the tropopause (input) From 88d1e961e6db8ec25cdf3558316625f492539fd3 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Tue, 25 Aug 2026 16:09:08 +0100 Subject: [PATCH 39/44] sustrat defaults to true --- .../rose-meta/um-aerosol/versions.py | 4 ++-- .../source/support/um_radaer_init_mod.f90 | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index ef29e40f07..cc256e81eb 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -62,9 +62,9 @@ def upgrade(self, config, meta_config=None): ["namelist:aerosol", "l_dust_mp_ageing"], ".false." ) - # Default to false since this is the setting in all existing tests + # Default to true since this is the setting in all existing tests self.add_setting( config, ["namelist:aerosol", "l_ukca_radaer_sustrat"], - ".false." ) + ".true." ) return config, self.reports diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 5f6f5975b5..8fc3cdeb9f 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -69,8 +69,8 @@ subroutine um_radaer_init() ! Dust ageing turned off l_dust_mp_ageing_local = .false. - ! sustrat turned off - l_ukca_radaer_sustrat_local = .false. + ! sustrat turned on + l_ukca_radaer_sustrat_local = .true. if ( l_radaer) then @@ -92,8 +92,8 @@ subroutine um_radaer_init() ! Dust ageing not allowed for dust only ukca l_dust_mp_ageing_local = .false. - ! sustrat turned off - l_ukca_radaer_sustrat_local = .false. + ! sustrat turned on + l_ukca_radaer_sustrat_local = .true. if ( l_radaer) then @@ -115,8 +115,8 @@ subroutine um_radaer_init() ! Dust ageing turned off l_dust_mp_ageing_local = .false. - ! sustrat turned off - l_ukca_radaer_sustrat_local = .false. + ! sustrat turned on + l_ukca_radaer_sustrat_local = .true. if ( l_radaer) then From fba5745b3717417f83e6a934429ff880424d10c2 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 27 Aug 2026 14:44:39 +0100 Subject: [PATCH 40/44] Mohit and Ian suggested changes --- .../rose-meta/um-aerosol/versions.py | 19 +---- .../source/kernel/radaer_kernel_mod.F90 | 6 -- .../source/support/um_radaer_init_mod.f90 | 82 ++++++++----------- .../source/support/um_ukca_init_mod.f90 | 13 ++- .../gungho/source/driver/gungho_model_mod.F90 | 14 +++- 5 files changed, 51 insertions(+), 83 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py index cc256e81eb..94ee8927b8 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/versions.py @@ -29,7 +29,6 @@ class vn32_t698(MacroUpgrade): Users can now set dust ageing via the namelist. Users can now set radaer SUstrat via the namelist. - """ BEFORE_TAG = "vn3.2" @@ -38,24 +37,10 @@ class vn32_t698(MacroUpgrade): def upgrade(self, config, meta_config=None): # Add settings - glomap_mode = self.get_setting_value(config, - ["namelist:aerosol", - "glomap_mode"]) - - if glomap_mode == "'dust_and_clim'": - # Existing suites with dust_and_clim need mode_setup==6 - mode_setup = "'DUonly_2mode'" - elif glomap_mode == "'ukca'": - # Existing suites with ukca need mode_setup==8 - mode_setup = "'SUBCOCSSDU_7mode'" - else: - # This is trigger ignored - default to SUBCOCSSDU_7mode - mode_setup = "'SUBCOCSSDU_7mode'" - - # Add new settings with the specified option + # Add new settings with the default option SUBCOCSSDU_7mode self.add_setting( config, ["namelist:aerosol","mode_setup"], - mode_setup ) + "'SUBCOCSSDU_7mode'") # Default to false since this is the setting in all existing tests self.add_setting( config, diff --git a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 index 3e4590f345..b728bc73d2 100644 --- a/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 +++ b/interfaces/physics_schemes_interface/source/kernel/radaer_kernel_mod.F90 @@ -380,12 +380,6 @@ subroutine radaer_code( nlayers, & ip_ukca_mode_accum, & ip_ukca_mode_coarse - use ukca_radaer_band_average_mod, only: ukca_radaer_band_average - - use ukca_radaer_prepare_mod, only: ukca_radaer_prepare - - use ukca_radaer_compute_aod_mod, only: ukca_radaer_compute_aod - use planet_config_mod, only: p_zero, kappa, gravity use ukca_radaer_precalc, only: npd_ukca_aod_wavel diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 index 8fc3cdeb9f..b1135d648f 100644 --- a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 @@ -18,19 +18,17 @@ module um_radaer_init_mod mode_setup_SUBCOCSSDU_7mode, & mode_setup_DUonly_2mode, & l_dust_mp_ageing, & - l_radaer, & l_ukca_radaer_sustrat - use ukca_mode_setup, only: i_ukca_bc_tuned, & - i_ukca_tune_bc_off + use ukca_api_mod, only: ukca_i_sussbcocdu_7mode, & + ukca_i_du_2mode, & + ukca_i_ukca_bc_tuned, & + ukca_i_ukca_tune_bc_off use constants_mod, only: i_um use ukca_radaer_lfric_init_mod, only: ukca_radaer_lfric_init - use ukca_config_specification_mod, only: i_sussbcocdu_7mode, & - i_du_2mode - use log_mod, only: log_event, & log_scratch_space, & LOG_LEVEL_ERROR @@ -60,11 +58,11 @@ subroutine um_radaer_init() if ( glomap_mode == glomap_mode_climatology ) then ! mode_setup is not set in the namelist for glomap_mode_climatology - ! this is always fixed to i_sussbcocdu_7mode. - i_mode_setup_radaer_local = i_sussbcocdu_7mode + ! this is always fixed to ukca_i_sussbcocdu_7mode. + i_mode_setup_radaer_local = ukca_i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_tune_bc_off + i_ukca_tune_bc_local = ukca_i_ukca_tune_bc_off ! Dust ageing turned off l_dust_mp_ageing_local = .false. @@ -72,22 +70,20 @@ subroutine um_radaer_init() ! sustrat turned on l_ukca_radaer_sustrat_local = .true. - if ( l_radaer) then - - call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & - i_ukca_tune_bc_local, & - l_dust_mp_ageing_local, & - l_ukca_radaer_sustrat_local ) + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) end if else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent mode_setup between ukca and radaer - ! this is always fixed to i_sussbcocdu_7mode. - i_mode_setup_radaer_local = i_sussbcocdu_7mode + ! this is always fixed to ukca_i_sussbcocdu_7mode. + i_mode_setup_radaer_local = ukca_i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_tune_bc_off + i_ukca_tune_bc_local = ukca_i_ukca_tune_bc_off ! Dust ageing not allowed for dust only ukca l_dust_mp_ageing_local = .false. @@ -95,22 +91,18 @@ subroutine um_radaer_init() ! sustrat turned on l_ukca_radaer_sustrat_local = .true. - if ( l_radaer) then - - call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & - i_ukca_tune_bc_local, & - l_dust_mp_ageing_local, & - l_ukca_radaer_sustrat_local ) - - end if + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) else if ( glomap_mode == glomap_mode_radaer_test ) then ! This was developed for aqua planet runs and may be redundant - ! For now fix this to i_sussbcocdu_7mode. - i_mode_setup_radaer_local = i_sussbcocdu_7mode + ! For now fix this to ukca_i_sussbcocdu_7mode. + i_mode_setup_radaer_local = ukca_i_sussbcocdu_7mode ! Tune BC turned off - i_ukca_tune_bc_local = i_ukca_tune_bc_off + i_ukca_tune_bc_local = ukca_i_ukca_tune_bc_off ! Dust ageing turned off l_dust_mp_ageing_local = .false. @@ -118,14 +110,10 @@ subroutine um_radaer_init() ! sustrat turned on l_ukca_radaer_sustrat_local = .true. - if ( l_radaer) then - - call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & - i_ukca_tune_bc_local, & - l_dust_mp_ageing_local, & - l_ukca_radaer_sustrat_local ) - - end if + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) else if ( glomap_mode == glomap_mode_ukca ) then ! UKCA and RADAER will use the same value for mode_setup @@ -133,17 +121,17 @@ subroutine um_radaer_init() ! Match rose-meta integers with those used in UKCA select case ( mode_setup ) case ( mode_setup_SUBCOCSSDU_7mode ) - i_mode_setup_radaer_local = i_sussbcocdu_7mode + i_mode_setup_radaer_local = ukca_i_sussbcocdu_7mode case ( mode_setup_DUonly_2mode ) - i_mode_setup_radaer_local = i_du_2mode + i_mode_setup_radaer_local = ukca_i_du_2mode case default write( log_scratch_space, '(A,I0)' ) & 'Developers should include additional mode settings here: ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) end select - ! UKCA currently set to i_ukca_bc_tuned - i_ukca_tune_bc_local = i_ukca_bc_tuned + ! UKCA currently set to ukca_i_ukca_bc_tuned + i_ukca_tune_bc_local = ukca_i_ukca_bc_tuned ! Dust ageing set by namelist l_dust_mp_ageing_local = l_dust_mp_ageing @@ -151,14 +139,10 @@ subroutine um_radaer_init() ! sustrat set by namelist l_ukca_radaer_sustrat_local = l_ukca_radaer_sustrat - if ( l_radaer) then - - call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & - i_ukca_tune_bc_local, & - l_dust_mp_ageing_local, & - l_ukca_radaer_sustrat_local ) - - end if + call ukca_radaer_lfric_init( i_mode_setup_radaer_local, & + i_ukca_tune_bc_local, & + l_dust_mp_ageing_local, & + l_ukca_radaer_sustrat_local ) end if diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index 9beff94c93..28491e7830 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -100,7 +100,9 @@ module um_ukca_init_mod ukca_maxlen_emiss_vert_fact, & ukca_strat_lbc_env, & ukca_get_photol_reaction_data, & - ukca_photol_varname_len + ukca_photol_varname_len, & + ukca_i_sussbcocdu_7mode, & + ukca_i_du_2mode ! Photolysis module use photol_api_mod, only: photol_jlabel_len, photol_fieldname_len, & @@ -109,9 +111,6 @@ module um_ukca_init_mod photol_sw_phases, photol_max_wvl, photol_max_crossec, & photol_wvl_intervals, photol_num_tvals - use ukca_config_specification_mod, only: i_sussbcocdu_7mode, & - i_du_2mode - implicit none private @@ -933,12 +932,12 @@ subroutine ukca_init( row_length, rows, model_levels, bl_levels, & select case( mode_setup ) case ( mode_setup_SUBCOCSSDU_7mode ) - i_mode_setup_local = i_sussbcocdu_7mode + i_mode_setup_local = ukca_i_sussbcocdu_7mode case ( mode_setup_DUonly_2mode ) - i_mode_setup_local = i_du_2mode + i_mode_setup_local = ukca_i_du_2mode case default write( log_scratch_space, '(A,I0)' ) & - 'Developers should include additional mode settings here: ', mode_setup + 'This Glomap option is not supported yet. Include it here ', mode_setup call log_event( log_scratch_space, LOG_LEVEL_ERROR ) end select diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index 8ff879085b..006b91cdff 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -443,6 +443,7 @@ subroutine basic_initialisations(mesh,model_clock,config) radiation_socrates, & surface, & surface_jules + use aerosol_config_mod, only: l_radaer #endif use config_mod, only: config_type @@ -495,13 +496,18 @@ subroutine basic_initialisations(mesh,model_clock,config) call um_ukca_init(ncells_ukca, model_clock) ! This is the way into the UKCA repo - ! Read all the radaer lut namelist files - call um_radaer_lut_init() + if ( l_radaer ) then - ! Initialisation of UKCA RADAER variables - call um_radaer_init() + ! Read all the radaer lut namelist files + call um_radaer_lut_init() + + ! Initialisation of UKCA RADAER variables + call um_radaer_init() + + end if end if + #endif end subroutine basic_initialisations From b2fe4b5976a12a9eee2bdca2d268bbaa65caef2f Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 27 Aug 2026 14:50:50 +0100 Subject: [PATCH 41/44] I used git mv to hopefully preserve history --- .../support/{um_radaer_init_mod.f90 => radaer_init_mod.f90} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename interfaces/physics_schemes_interface/source/support/{um_radaer_init_mod.f90 => radaer_init_mod.f90} (100%) diff --git a/interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 similarity index 100% rename from interfaces/physics_schemes_interface/source/support/um_radaer_init_mod.f90 rename to interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 From c5a32d6620cb5e666656c1d0270fc3e5d008278d Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 27 Aug 2026 15:29:22 +0100 Subject: [PATCH 42/44] Remove trailing white space --- science/gungho/source/driver/gungho_model_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/science/gungho/source/driver/gungho_model_mod.F90 b/science/gungho/source/driver/gungho_model_mod.F90 index 006b91cdff..3c5b6cef30 100644 --- a/science/gungho/source/driver/gungho_model_mod.F90 +++ b/science/gungho/source/driver/gungho_model_mod.F90 @@ -504,7 +504,7 @@ subroutine basic_initialisations(mesh,model_clock,config) ! Initialisation of UKCA RADAER variables call um_radaer_init() - end if + end if end if From 9c6c53aafb583dce80c1d3a31771659b08d793e6 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:17:47 +0100 Subject: [PATCH 43/44] build error --- .../source/support/radaer_init_mod.f90 | 2 -- .../source/support/um_ukca_init_mod.f90 | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 index b1135d648f..09ea68c0f0 100644 --- a/interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/radaer_init_mod.f90 @@ -75,8 +75,6 @@ subroutine um_radaer_init() l_dust_mp_ageing_local, & l_ukca_radaer_sustrat_local ) - end if - else if ( glomap_mode == glomap_mode_dust_and_clim ) then ! dust_and_clim runs with a diffent mode_setup between ukca and radaer ! this is always fixed to ukca_i_sussbcocdu_7mode. diff --git a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 index 28491e7830..d942f543e6 100644 --- a/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 +++ b/interfaces/physics_schemes_interface/source/support/um_ukca_init_mod.f90 @@ -1890,8 +1890,8 @@ subroutine aerosol_ukca_dust_only_init( row_length, rows, model_levels, & ! i_mode_nzts=15, & ukca_mode_seg_size=i_ukca_mode_seg_size, & - ! i_mode_setup hard coded to i_du_2mode (6) for dust_and_clim - i_mode_setup=i_du_2mode, & + ! i_mode_setup hard coded to ukca_i_du_2mode (6) for dust_and_clim + i_mode_setup=ukca_i_du_2mode, & i_mode_nucscav=i_mode_nucscav, & l_cv_rainout=.not.(l_ukca_plume_scav), & l_dust_mp_slinn_impc_scav=.true., & From 766fafb5b875fc04a80778e5d9070f55f50fa7e0 Mon Sep 17 00:00:00 2001 From: Alan J Hewitt <40797340+alanjhewitt@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:48:25 +0100 Subject: [PATCH 44/44] validate rose meta failure --- .../rose-meta/um-aerosol/HEAD/rose-meta.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf index 70381bad5a..e8f3b7072e 100644 --- a/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf +++ b/interfaces/physics_schemes_interface/rose-meta/um-aerosol/HEAD/rose-meta.conf @@ -202,7 +202,7 @@ sort-key=Panel-F01 type=real [namelist:aerosol=mode_setup] -compulsory=true +compulsory=false description=Set GLOMAP Aerosol Components and Modes !enumeration=true help=The GLOMAP aerosol scheme is currently available in the configurations @@ -236,7 +236,7 @@ value-titles=DUonly_2mode,SUBCOCSSDU_7mode values='DUonly_2mode','SUBCOCSSDU_7mode' [namelist:aerosol=l_dust_mp_ageing] -compulsory=true +compulsory=false description=Turn on ageing, nucleation scavenging, coagulation, =activation, and hetero chemistry for =UKCA-mode dust and microplastics @@ -264,7 +264,7 @@ trigger=namelist:aerosol=aclw_file: .true. ; type=logical [namelist:aerosol=l_ukca_radaer_sustrat] -compulsory=true +compulsory=false description=Sulphuric acid aerosol in stratosphere help=Direct effect of UKCA-MODE aerosols will assume sulphuric acid =optical properties for sulphate aerosol in the stratosphere