Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
453666d
merging changes from older branch
alanjhewitt Aug 7, 2026
3f2eaa9
Add RADAER API documentation
alanjhewitt Aug 7, 2026
1b91106
Add documentation
alanjhewitt Aug 7, 2026
f114df3
tidy
alanjhewitt Aug 7, 2026
8281df6
I think I need new namelist in all of these
alanjhewitt Aug 7, 2026
84f4601
Beginning of initialisation pipework to UKCA repo
alanjhewitt Aug 7, 2026
763c39a
Beginning of initialisation pipework to UKCA repo
alanjhewitt Aug 7, 2026
d8f4d36
Revert " Add documentation"
alanjhewitt Aug 7, 2026
13cc02d
Revert " Beginning of initialisation pipework to UKCA repo"
alanjhewitt Aug 7, 2026
7501b76
Revert " Beginning of initialisation pipework to UKCA repo"
alanjhewitt Aug 7, 2026
f6e3b82
Revert " I think I need new namelist in all of these"
alanjhewitt Aug 7, 2026
2d4b474
Revert " merging changes from older branch"
alanjhewitt Aug 7, 2026
568abf9
messy - but now only one versions.py
alanjhewitt Aug 7, 2026
3ccbb0d
maybe sorted git revert
alanjhewitt Aug 7, 2026
09bd990
only ukca setting should trigger i_mode_setup
alanjhewitt Aug 7, 2026
b2541ef
pass dust ageing and BC tuning setting to radaer in namelist
alanjhewitt Aug 11, 2026
a132533
dust ageing not allowed for dust only
alanjhewitt Aug 11, 2026
8deee3e
initialisation pipework
alanjhewitt Aug 11, 2026
88c1669
Its time to start testing this change
alanjhewitt Aug 11, 2026
621164b
Fixed errors in upgrade macro
alanjhewitt Aug 11, 2026
6b74a99
Typo
alanjhewitt Aug 11, 2026
2fc181b
Typo
alanjhewitt Aug 11, 2026
0cdd0db
Merge branch 'MetOffice:main' into radaer_api_la_side_5
alanjhewitt Aug 12, 2026
338a1ae
LFRic needs to see these UKCA modules
alanjhewitt Aug 12, 2026
c11ade5
tidy - makes it read better in emacs
alanjhewitt Aug 12, 2026
bd2ac92
I think this fail-if test is broken
alanjhewitt Aug 12, 2026
aa48fcd
Fix build errors
alanjhewitt Aug 13, 2026
e49ca5f
some fixes
alanjhewitt Aug 13, 2026
904d47b
build errors
alanjhewitt Aug 13, 2026
8feab8d
validate rose-meta error
alanjhewitt Aug 13, 2026
2c0477a
whoops - forgotten an argument
alanjhewitt Aug 14, 2026
94cb9ec
typo
alanjhewitt Aug 14, 2026
05b4cae
This will now use the enumeration values for mode_setup
alanjhewitt Aug 14, 2026
5d9fc41
Fixing build errors
alanjhewitt Aug 14, 2026
f0002bc
Run time errors - integers dont match
alanjhewitt Aug 14, 2026
81ab53c
Only initialise when l_radaer is true
alanjhewitt Aug 24, 2026
c6b5b0f
use allocatable lists specific to i_mode_setup
alanjhewitt Aug 24, 2026
a83cb0f
include new UKCA module
alanjhewitt Aug 24, 2026
71375a4
l_sustrat is now a namelist option
alanjhewitt Aug 25, 2026
88d1e96
sustrat defaults to true
alanjhewitt Aug 25, 2026
fba5745
Mohit and Ian suggested changes
alanjhewitt Aug 27, 2026
b2fe4b5
I used git mv to hopefully preserve history
alanjhewitt Aug 27, 2026
c5a32d6
Remove trailing white space
alanjhewitt Aug 27, 2026
9c6c53a
build error
alanjhewitt Aug 27, 2026
766fafb
validate rose meta failure
alanjhewitt Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions build/extract/extract.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -356,6 +357,10 @@ 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
- 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
Expand Down
4 changes: 2 additions & 2 deletions dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
26 changes: 26 additions & 0 deletions documentation/source/science_guide/radaer/index.rst
Original file line number Diff line number Diff line change
@@ -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:

*
34 changes: 34 additions & 0 deletions documentation/source/science_guide/radaer/radaer_api.rst
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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=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'
Expand All @@ -200,6 +201,50 @@ range=0:99.9
sort-key=Panel-F01
type=real

[namelist:aerosol=mode_setup]
compulsory=false
description=Set GLOMAP Aerosol Components and Modes
!enumeration=true
help=The GLOMAP aerosol scheme is currently available in the configurations
=described below:
=
=DUonly_2mode (previously option (6) in the UM)
= Dust (DU) in insoluble accumulation and insoluble coarse mode.
= This is sometimes labelled as DUonly_2mode
=
=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 SUBCOCSSDUNH_7mode ( previously option (12) ) for UKESM2.
=
=Coming soon SolInsol.
=
=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
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=false
description=Turn on ageing, nucleation scavenging, coagulation,
=activation, and hetero chemistry for
=UKCA-mode dust and microplastics
#fail-if=this ==".true." and namelist:aerosol=mode_setup==6
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
Expand All @@ -215,6 +260,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=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
=aerosol optical depth.
ns=namelist/Science/UM Aerosol
sort-key=Panel-B01a
type=logical

[namelist:aerosol=marine_pom_ems_scaling]
Expand All @@ -223,7 +279,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]
Expand Down Expand Up @@ -314,7 +370,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]
Expand Down Expand Up @@ -350,7 +406,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]
Expand All @@ -363,7 +419,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

Expand All @@ -376,7 +432,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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,38 @@ def __repr__(self):
__str__ = __repr__


"""
Copy this template and complete to add your macro
class vn32_t698(MacroUpgrade):
"""
Upgrade macro for ticket #698 by Alan J Hewitt.

class vnXX_txxx(MacroUpgrade):
# Upgrade macro for <TICKET> by <Author>
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).

BEFORE_TAG = "vnX.X"
AFTER_TAG = "vnX.X_txxx"
Users can now set dust ageing via the namelist.

Users can now set radaer SUstrat via the namelist.
"""

BEFORE_TAG = "vn3.2"
AFTER_TAG = "vn3.2_t698"

def upgrade(self, config, meta_config=None):
# Add settings

# Add new settings with the default option SUBCOCSSDU_7mode
self.add_setting( config,
["namelist:aerosol","mode_setup"],
"'SUBCOCSSDU_7mode'")

# Default to false since this is the setting in all existing tests
self.add_setting( config,
["namelist:aerosol", "l_dust_mp_ageing"],
".false." )

# Default to true since this is the setting in all existing tests
self.add_setting( config,
["namelist:aerosol", "l_ukca_radaer_sustrat"],
".true." )

return config, self.reports
"""
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Loading
Loading