Hygroscopicity MS11 ratio option#31
Hygroscopicity MS11 ratio option#31Joe Carton-Kelly (JoeCartonKelly-MO) wants to merge 7 commits intoMetOffice:mainfrom
Conversation
…ults to all sulphate
…stributed between species
| mdcopy(:,imode,cp_su) = glomap_config%solinsol_hygro_ratio(1)* & | ||
| (mdcopy(:,imode,cp_su)) | ||
| mdcopy(:,imode,cp_cl) = glomap_config%solinsol_hygro_ratio(2)* & | ||
| (mdcopy(:,imode,cp_su)) |
There was a problem hiding this comment.
Is this correct? Since mdcopy(:,imode,cp_su) will have been changed by the line above? Shouldn't you use the original md(:,imode,cp_su) arrays to calculate mdcopy, instead of using mdcopy itself?
There was a problem hiding this comment.
Yes this is a very good point. You are correct that by using mdcopy throughout we are making everything much smaller as we are compounding the changes. I am addressing this in the next commit and will rerun tests after I have addressed all your comments
| cl(:,3)=md(:,imode,cp_cl)/avogadro ! [Na] in moles per cc (air) | ||
| cl(:,-4)=md(:,imode,cp_cl)/avogadro ! [Cl] in moles per cc (air) | ||
| cl(:,3)=mdcopy(:,imode,cp_cl)/avogadro ! [Na] in moles per cc (air) | ||
| cl(:,-4)=mdcopy(:,imode,cp_cl)/avogadro ! [Cl] in moles per cc (air) |
There was a problem hiding this comment.
It looks like there is no equivalent to this for cp_bc? If not, then there doesn't seem much point in adding in cp_bc since it is never used? Also, why do you only use the new md values for the concentration (cl) calculations and not in the rest of the routine that also uses md?
There was a problem hiding this comment.
You are correct that cp_bc is never used. I think its important to have an input for black carbon so that we are taking percentages across the 4 species (sulphate, sea salt, organic carbon and black carbon) however there is no need to actually include it in this script. My logic was to keep everything in, even if it isn't used to show consistency but I will remove the bc stuff as you are correct it doesn't need to actually be in this script.
| IF (component(imode,icp)) THEN | ||
| IF (soluble(icp)) THEN | ||
| WHERE (mask(:)) | ||
| rhotmp(:)=rhotmp(:)+md(:,imode,icp)*mm_rhocp(icp) |
There was a problem hiding this comment.
My above point was also asking why you don't use the updated md values in the rest of the routine. Here for example. Shouldn't you be using mdcopy here and throughout the rest of the routine? You could just replace md with mdcopy? Or preserve mdcopy as the original values and then only update md perhaps?
There was a problem hiding this comment.
Hi Dan,
I did this change with Anthony Jones so I'm going to speak to him soon to verify the reasoning but I believe the reason why we created mdcopy is that we only wanted to affect cl (ion concentration) as this would only affect the hygroscopic growth of particles and make them grow more slowly (we saw particles grow too fast in environments where there wouldn't normally be much sulphate - in solinsol every soluble aerosol is treated as sulphate). This means that after line 426 (call for ukca_water_content...) we want to use the original all sulphate values.
Further, I only change md to mdcopy for variables that had one of cp_su,cp_oc or cp_cl to minimise the changes but I could easily change line 402 for example (one of the cp_nitrate ones) to include mdcopy as this wouldn't have an impact as nitrate isn't being factored into this





PR Summary
Sci/Tech Reviewer: mo-dangrosvenor
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. 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 and MetOffice/um_doc#16 - closes #29Code Reviewer: Pierre Siddall (@Pierre-siddall)
Code Quality Checklist
(Some checks are automatically carried out via the CI pipeline)
readability of the code
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
- If any tests fail (rose-stem or CI) the reason is understood and
- I have added tests to cover new functionality as appropriate (eg. system
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.stem suites
acceptable (eg. kgo changes)
tests, unit tests, etc.)
trac.log
|| Suite Name: || '''u-dy599/run4''' ||
|| Suite Owner: || joseph.cartonkelly ||
|| Report Generated: || 2026/04/15 11:06:23 ||
|| Cylc-Review: || https://cylchub/services/cylc-review/taskjobs/joseph.cartonkelly/?suite=u-dy599/run4 ||
|| ''ROSE_ORIG_HOST:'' || cazldf0000F3.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
Performance Impact
performance measurements have been conducted
AI Assistance and Attribution
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
confirmed that it builds correctly
Sci/Tech Review
Please alert the code reviewer via a tag when you have approved the SR
Code Review