Skip to content

Hygroscopicity MS11 ratio option#31

Merged
Pierre Siddall (Pierre-siddall) merged 15 commits into
MetOffice:mainfrom
JoeCartonKelly-MO:hygro_ratios_option
May 20, 2026
Merged

Hygroscopicity MS11 ratio option#31
Pierre Siddall (Pierre-siddall) merged 15 commits into
MetOffice:mainfrom
JoeCartonKelly-MO:hygro_ratios_option

Conversation

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor

@JoeCartonKelly-MO Joe Carton-Kelly (JoeCartonKelly-MO) commented Apr 15, 2026

PR Summary

Sci/Tech Reviewer: mo-dangrosvenor
Code Reviewer: Pierre Siddall (@Pierre-siddall)

This change impacts Glomap mode setup 11 (SOL/INSOL). In this PR we make it so that users can, via a rose namelist (there is an attached UM PR below), redistribute the sulphate aerosol into its 4 actual species (sulphate, sea salt, black carbon and organic carbon) within the hygroscopicity calculations. We found that when treating everything as sulphate, in environments when sulphate is not the dominant aerosol, we saw too much hygroscopic growth from our aerosols and by having this option we allow users to get a better reflection of the growth of the area they are modelling. This change only impacts the wet component of aerosol as we still want the dry element to always be treated as sulphate. This change does not impact the activation scheme outside of the fact that the aerosols are different as a result of their wet part changing. I am going to attach some figures showing the impact that this change can have on aerosol optical depth further down
  • linked MetOffice/um#70
  • linked MetOffice/um_doc#16

Code Quality Checklist

(Some checks are automatically carried out via the CI pipeline)

  • I have performed a self-review of my own code
  • My code follows the project's style guidelines
  • Comments have been included that aid understanding and enhance the
    readability of the code
  • My changes generate no new warnings

Testing

  • I have tested this change locally, using the UKCA rose-stem suite
  • If shared files have been modified, I have run the UM and LFRic Apps rose
    stem suites
  • If any tests fail (rose-stem or CI) the reason is understood and
    acceptable (eg. kgo changes)
  • I have added tests to cover new functionality as appropriate (eg. system
    tests, unit tests, etc.)
I have run Mohit's um14.1 rigorous test (a copy of suite dx-502) with the trac.log printed below. I have run umdp3_checker on UKCA and ran the fixer to make it all okay. I will show a full UM solinsol rose-stem-test where I have changed the value to show that kgo fails in this case and one where I haven't to show that it doesn't when given default values.

trac.log

|| Suite Name: || '''u-dy599/run9''' ||
|| Suite Owner: || joseph.cartonkelly ||
|| Report Generated: || 2026/05/12 21:13:28 ||
|| Cylc-Review: || https://cylchub/services/cylc-review/taskjobs/joseph.cartonkelly/?suite=u-dy599/run9 ||
|| ''ROSE_ORIG_HOST:'' || cazldf00000G.spice.sc.metoffice.gov.uk ||

|| '''Task''' || '''State''' ||
|| atmos_cristrat_16x8 || succeeded ||
|| atmos_cristrat_16x8_2omp || succeeded ||
|| atmos_cristrat_col_16x8 || succeeded ||
|| atmos_cristrat_col_8x12 || succeeded ||
|| atmos_cristrat_crun || succeeded ||
|| atmos_cristrat_nrun || succeeded ||
|| atmos_cristrat_rigorous_16x8 || succeeded ||
|| atmos_offl_16x8 || succeeded ||
|| atmos_offl_8x12 || succeeded ||
|| atmos_strat_16x8 || succeeded ||
|| atmos_strat_16x8_2omp || succeeded ||
|| atmos_strat_col_16x8 || succeeded ||
|| atmos_strat_col_8x12 || succeeded ||
|| atmos_strat_crun || succeeded ||
|| atmos_strat_nrun || succeeded ||
|| atmos_strat_rigorous_16x8 || succeeded ||
|| extract || succeeded ||
|| fcm_make || succeeded ||
|| fcm_make_rigorous || succeeded ||
|| housekeep_cririgor || succeeded ||
|| housekeep_cristrat || succeeded ||
|| housekeep_offl || succeeded ||
|| housekeep_rigor || succeeded ||
|| housekeep_strat || succeeded ||
|| recon_cristrat || succeeded ||
|| recon_cristrat_rigorous || succeeded ||
|| recon_offl || succeeded ||
|| recon_strat || succeeded ||
|| recon_strat_rigorous || succeeded ||
|| rose_ana_cristrat_atmos_kgo || succeeded ||
|| rose_ana_cristrat_atmos_nruncrun || succeeded ||
|| rose_ana_cristrat_atmos_omp || succeeded ||
|| rose_ana_cristrat_col_atmos_proc || succeeded ||
|| rose_ana_offl_atmos_kgo || succeeded ||
|| rose_ana_offl_atmos_proc || succeeded ||
|| rose_ana_strat_atmos_kgo || succeeded ||
|| rose_ana_strat_atmos_nruncrun || succeeded ||
|| rose_ana_strat_atmos_omp || succeeded ||
|| rose_ana_strat_atmos_rigorous || succeeded ||
|| rose_ana_strat_col_atmos_kgo || succeeded ||
|| rose_ana_strat_col_atmos_proc || succeeded ||

Security Considerations

  • I have reviewed my changes for potential security issues
  • Sensitive data is properly handled (if applicable)
  • Authentication and authorisation are properly implemented (if applicable)

Performance Impact

  • Performance of the code has been considered and, if applicable, suitable
    performance measurements have been conducted

AI Assistance and Attribution

  • Some of the content of this change has been produced with the assistance
    of Generative AI tool name (e.g., Met Office Github Copilot Enterprise,
    Github Copilot Personal, ChatGPT GPT-4, etc) and I have followed the
    Simulation Systems AI policy
    (including attribution labels)

Documentation

  • Where appropriate I have updated documentation related to this change and
    confirmed that it builds correctly

Sci/Tech Review

  • I understand this area of code and the changes being added
  • The proposed changes correspond to the pull request description
  • Documentation is sufficient (do documentation papers need updating)
  • Sufficient testing has been completed

Please alert the code reviewer via a tag when you have approved the SR

Code Review

  • All dependencies have been resolved
  • Related Issues have been properly linked and addressed
  • CLA compliance has been confirmed
  • Code quality standards have been met
  • Tests are adequate and have passed
  • Documentation is complete and accurate
  • Security considerations have been addressed
  • Performance impact is acceptable

@github-actions github-actions Bot added the cla-required The CLA has not yet been signed by the author of this PR - added by GA label Apr 15, 2026
@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

For evidence of the science changes, I ran one version with the ratio as (1.0,0.0,0.0,0.0) which is the default and automatically passes kgo for any solinsol tests. I also ran a version with values set to (0.075,0.492,0.050,0.383). The images on the left are the default values and on the right are new values
Aitken soluble AOD 550nm:
image
Accumulation soluble AOD 550nm:
image
Coarse soluble AOD 550nm:
image
Accumulation insoluble AOD 550nm:
image
Coarse insoluble AOD 550nm:
image

You can see a large reduction in AOD for the soluble species when we don't treat everything as Sulphate (a more physically realistic set up) so this change allows us better control over hygroscopic growth in mode setup 11 (SOL/INSOL)

@JoeCartonKelly-MO Joe Carton-Kelly (JoeCartonKelly-MO) marked this pull request as ready for review April 16, 2026 12:59
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90 Outdated
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
@Pierre-siddall Pierre Siddall (Pierre-siddall) added the Linked UM This PR is linked to a MetOffice/um PR label Apr 24, 2026
@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

mo-dangrosvenor Hi Dan,

I have made the updated changes to all 3 pull requests, adding additional information to the meta data and generally tidying up the changes. Let me know what you think of the latest set up. I have also rerun all the required tests and everything looks okay still.

@mo-dangrosvenor
Copy link
Copy Markdown

For evidence of the science changes, I ran one version with the ratio as (1.0,0.0,0.0,0.0) which is the default and automatically passes kgo for any solinsol tests. I also ran a version with values set to (0.075,0.492,0.050,0.383). The images on the left are the default values and on the right are new values Aitken soluble AOD 550nm: image Accumulation soluble AOD 550nm: image Coarse soluble AOD 550nm: image Accumulation insoluble AOD 550nm: image Coarse insoluble AOD 550nm: image

You can see a large reduction in AOD for the soluble species when we don't treat everything as Sulphate (a more physically realistic set up) so this change allows us better control over hygroscopic growth in mode setup 11 (SOL/INSOL)

Hi. It would be good to see these re-plotted following the bug-fix relating to mdcopy. Could you also please give some detail on the suite IDs and the types of suites used for the AOD plots (e.g., are they nudged, how long did you run for, which model setup, etc.?). How long is the AOD averaged over? It would be best to do these tests in a nudged suite if possible so that meteorological differences between runs are minimised. It would also be useful to test one-at-a-time changes too to make sure that the species are behaving as expected. E.g., testing ratio arrays of [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0], [0.25, 0.25, 0.25, 0.25] and maybe [0.333, 0.333, 0.333, 0.0]. The [0.0, 0.0, 0.0, 1.0] ratios would test that everything works ok with the water content calculation when SU, CL and OC have zero ions. The volume of plots for these extra tests could be reduced by just showing one of the AOD values perhaps (e.g., just accumulation mode soluble AOD).

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

Hi mo-dangrosvenor,

The figures above are the end result values for AOD from running sol/insol rose-stem tests. I am happy to run these tests again with the new set up and the different configurations of values that you have suggested but running a nudged suite will take too long, with the review deadline fast approaching.

@mo-dangrosvenor
Copy link
Copy Markdown

Hi mo-dangrosvenor,

The figures above are the end result values for AOD from running sol/insol rose-stem tests. I am happy to run these tests again with the new set up and the different configurations of values that you have suggested but running a nudged suite will take too long, with the review deadline fast approaching.

Ok, thanks. It would be necessary to repeat with with the updated code (or are you saying that these were done after the mdcopy bug was fixed?). Some detail on how long the runs ran for (which rose-stem tests?), whether the fields shown are snapshots or time-averages (and over how long if so) etc. would be good.

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

Hi Dan,

I can provide all that information with the figures later today!

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

Hi mo-dangrosvenor,

I have added in a fix to the component issue. All the IF statements were failing for the other species, so like mdcopy, I have created a component_copy which I then set as TRUE for all the soluble imodes for organic carbon and seasalt. This gives a much more realistic answer for when everything is seasalt, that is different to when everything is sulphate. I am now going to rerun all the tests, update the PR main bits and supply soluble accumulation AOD for the different test ratios so that hopefully we can get this through SciTech review soon. Let me know if there is anything you feel I need to change with the latest code I have committed.

Joe

@mo-dangrosvenor
Copy link
Copy Markdown

Hi mo-dangrosvenor,

I have added in a fix to the component issue. All the IF statements were failing for the other species, so like mdcopy, I have created a component_copy which I then set as TRUE for all the soluble imodes for organic carbon and seasalt. This gives a much more realistic answer for when everything is seasalt, that is different to when everything is sulphate. I am now going to rerun all the tests, update the PR main bits and supply soluble accumulation AOD for the different test ratios so that hopefully we can get this through SciTech review soon. Let me know if there is anything you feel I need to change with the latest code I have committed.

Joe

Thanks. It seems like it could've been achieved in a simpler way than creating all those allocatable arrays, though? E.g., by just adding .OR.glomap_config%i_mode_setup == 11 to the IF statements for the relevant components (since you know which ones they are)? I'm also a bit concerned that the code for the nitrate scheme and cp_so are just confusing at this stage since they are not used. I think that they can just be added in future trunk updates when needed?

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

Thanks. It seems like it could've been achieved in a simpler way than creating all those allocatable arrays, though? E.g., by just adding .OR.glomap_config%i_mode_setup == 11 to the IF statements for the relevant components (since you know which ones they are)? I'm also a bit concerned that the code for the nitrate scheme and cp_so are just confusing at this stage since they are not used. I think that they can just be added in future trunk updates when needed?

That is a much better way of doing it. I will alter the code now and verify it still works. I can also remove it from the nitrate/cp_so. We were thinking it would make it simpler if changes were made in the future but I agree that it can just be done in future updates if required. Will make these changes and then perform all the tests and let you know when it is all good to be checked again.

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

Joe Carton-Kelly (JoeCartonKelly-MO) commented May 13, 2026

Updated accumulation AOD figures for 550nm. The rose-stem test I have run is the N96 GA AMIP one with no prescribed single scattering albedo. It is a 2-day test and the results are a dump period mean from each day of the simulation, in this case from the 2nd day (03/09/1981). I am looking specifically at the 4x8 noomp test for all these figures, to keep it consistent.

This is the accumulation soluble AOD when the wet part of the aerosol is 100% sulphate ([1.0,0.0,0.0,0.0])
image

This is the accumulation soluble AOD when everything is sea salt ([0.0,1.0,0.0,0.0])
image

This is the accumulation soluble AOD when everything is black carbon ([0.0,0.0,1.0,0.0])
image

This is the accumulation soluble AOD when everything is organic carbon ([0.0,0.0,0.0,1.0])
image

This is the accumulation soluble AOD when the wet part of the aerosol is split between the 4 species ([0.25,0.25,0.25,0.25])
image

This is the accumulation soluble AOD when the wet part of the aerosol is split between the 3 species used (no black carbon) ([0.33,0.33,0.0,0.33)]
image

And this last one is a comparison to the global values that I plotted earlier, now that we have fixed all the bugs in the code where we have worked out a global split of aerosol ([0.075,0.492,0.050,0.383])
image

@JoeCartonKelly-MO
Copy link
Copy Markdown
Contributor Author

The figures in the previous comment are much more consistent with what we would expect to see. Comparing all the different set ups we see the same spatial structure for all with different values on the colour bar. All sulphate sees particularly high maximum values with different configurations bringing the values down. Sea salt is very hygroscopic too so sees the 2nd largest values when all the wet part is treated as it. Organic carbon sees much lower values but not as low as black carbon, which as noted before, is not included in the wet growth in UKCA_VOLUME_MODE.F90.

@mo-dangrosvenor
Copy link
Copy Markdown

Pierre Siddall (@Pierre-siddall) - I've completed the Sci-Tech review now and am happy with the changes.

Copy link
Copy Markdown

@mo-dangrosvenor mo-dangrosvenor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy with the testing, code and documentation now.

Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90 Outdated
Comment thread src/science/core/aerosols/glomap/ukca_volume_mode.F90 Outdated
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Joe Carton-Kelly (@JoeCartonKelly-MO), this part of the linked ticket looks goods to me, moving onto the um and um_docs changes now.

@Pierre-siddall
Copy link
Copy Markdown
Contributor

Hi Joe Carton-Kelly (@JoeCartonKelly-MO) , I'm happy to merge this PR and it's linked tickets to trunk now via a bypass. However, could you set up verified commit for future PRs to ensure that commits don't clash with the branch protection rules being enforced.

@Pierre-siddall Pierre Siddall (Pierre-siddall) merged commit 1981f7d into MetOffice:main May 20, 2026
5 checks passed
@JoeCartonKelly-MO Joe Carton-Kelly (JoeCartonKelly-MO) deleted the hygro_ratios_option branch May 21, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The CLA has been signed as part of this PR - added by GA Linked UM This PR is linked to a MetOffice/um PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SOL/INSOL fixes: Improved hygroscopicity

5 participants