Skip to content

Reducing s_bot oscillations in reference density adaptation#695

Merged
matsbn merged 2 commits into
NorESMhub:masterfrom
matsbn:feature-sra_s_bot_modification
Nov 25, 2025
Merged

Reducing s_bot oscillations in reference density adaptation#695
matsbn merged 2 commits into
NorESMhub:masterfrom
matsbn:feature-sra_s_bot_modification

Conversation

@matsbn
Copy link
Copy Markdown
Contributor

@matsbn matsbn commented Nov 24, 2025

This PR modifies the s_bot optimization and also introduces the possibility of using different e-folding adjustment time scales for the parameter pairs (sp1, zp2) and (sp4, s_bot). The first parameter pair controls reference density profile in the upper ocean, while the second parameter pair controls the maximum range of the reference density profile.

It was found that both modifying the optimization of s_bot and increasing the e-folding adjustment time scale from 5 to 10 years were beneficial to reduce oscillations in the s_bot parameter. However, to be able to adjust to strong surface forcing perturbations it may be desirable to keep the relatively short 5 year adjustment time scale for the (sp1, zp2) parameters. Therefore the introduction of two e-folding adjustment time scales.

The impact of modifications to reference density adaptation was tested in CPLHIST forced ocean/ice simulations and compared to NorESMhub/noresm3_dev_simulations#269, which have pronounced oscillation in the s_bot parameter.

blom_sra_ts_n16_cplhist_s_bot

In the first figure, circles show annual optimization of the s_bot parameter, while solid lines show the parameter value actually used after time filtering. In blue is the NorESMhub/noresm3_dev_simulations#269 experiment, showing oscillations throughout the 120 years of simulation shown here. In orange is a 30 year test with a modification of the s_bot optimization that reduces oscillations compared to NorESMhub/noresm3_dev_simulations#269. In green the original optimization is used, but e-folding time scale increased from 5 to 10 years. This also reduces the oscillation in the time filtered parameter value. Finally in red is a 60 year simulation combining the modification of the s_bot optimization and increasing the adjustment time scale as implemented in this PR. Oscillations are still present, but strongly muted compared to NorESMhub/noresm3_dev_simulations#269. Also the annual optimizations have a much reduced range of variation.

blom_sra_ts_n16_cplhist

The second figure is the same as the first figure for s_bot, but shows all parameters participating in the density adaptation. It can be seen that the sp1 and zp2 parameters from the simulation using this PR (red color) follows closely NorESMhub/noresm3_dev_simulations#269 (blue color), which is desirable since the adjustment time scale is the same. The time filtered sp4 parameter is strongly influenced by the adjustment time scale where the simulations with 5 year time scale (blue and orange) and 10 year time scale (green and red) are grouped closely together.

…ed and the parameter pairs (sp1, zp2) and (sp4, s_bot) can now be adjusted with different e-folding time scales.
Copy link
Copy Markdown
Contributor

@TomasTorsvik TomasTorsvik left a comment

Choose a reason for hiding this comment

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

Looks OK to me. Would be good to hear from @JorgSchwinger about potential implications for spin-up, before merging.

@TomasTorsvik TomasTorsvik added this to the NorESM3.0 milestone Nov 24, 2025
@github-project-automation github-project-automation Bot moved this from Todo to In Progress in NorESM Development Nov 24, 2025
Comment thread phy/mod_vcoord.F90 Outdated
sra_clim_ts = 5._r8, &
sra_param_ts = 5._r8, &
sra_param_ts1 = 5._r8, &
sra_param_ts2 = 5._r8, &
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.

Shouldn't be the default value for sra_param_ts2 be 10, here, too?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks, @JorgSchwinger, I have changed default value of sra_param_ts2 now.

Copy link
Copy Markdown
Contributor

@JorgSchwinger JorgSchwinger left a comment

Choose a reason for hiding this comment

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

I can't really judge if it will be a problem to use an restart file created from a run with the old optimization, and use it as initial condition for a hybrid run with the new optimization, but I trust that it'll be possible.

@matsbn
Copy link
Copy Markdown
Contributor Author

matsbn commented Nov 25, 2025

I can't really judge if it will be a problem to use an restart file created from a run with the old optimization, and use it as initial condition for a hybrid run with the new optimization, but I trust that it'll be possible.

Technically the modified optimization can continue as either a hybrid or branch run from a restart produced with the old optimization. The test simulations mentioned in the PR have started as hybrid continuations (similar procedure to your NorESMhub/noresm3_dev_simulations#269).

Copy link
Copy Markdown
Collaborator

@jmaerz jmaerz left a comment

Choose a reason for hiding this comment

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

Can't contribute much - thanks for the careful investigation of it.

@TomasTorsvik
Copy link
Copy Markdown
Contributor

@matsbn - I think you can merge this when you are ready. At the moment, the plan is to use tag v1.12.16 for noresm3_0_beta08, that will change restart framework for all components (should be bit-for-bit with noresm3_0_beta07). And then we will have some BLOM updates, including this one, in a later NorESM tag.

@matsbn matsbn merged commit c4c547c into NorESMhub:master Nov 25, 2025
4 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in NorESM Development Nov 25, 2025
@TomasTorsvik
Copy link
Copy Markdown
Contributor

TomasTorsvik commented Nov 27, 2025

@matsbn , @JensBDebernard , @mvdebolskiy , @mvertens , @mvdebolskiy
I made a BLOM tag v1.12.18 on the master branch after this was merged, and ran the aux_blom_noresm test based on beta06 and v1.12.18.

RUNDIR: /cluster/work/users/tomast/noresm/nor3_b06-BLOM_v1.12.18
BASELINE: /cluster/shared/noresm/noresm_baselines/blom_develop/nor3_b06-BLOM_v1.12.18

Test output:

$ ./cs.status.20251127_122532_7bnm4o -s
20251127_122532_7bnm4o: 22 tests
  FAIL ERI_C2.TL319_tn14.NOIIAJRAOC.betzy_intel
  FAIL ERP_Ld3_P256.T62_tn14.NOINYOC.betzy_gnu
  FAIL ERP_Ld3_P256.T62_tn14.NOINYOC.betzy_intel
  DIFF ERR_Ld3.TL319_tn14.NOIIAJRAOC.betzy_gnu
  NLFAIL ERS_Ld3.T62_tn14.N2NOINYOC.betzy_intel
  DIFF ERS_Ld3.T62_tn14.NOINYOC.betzy_intel
  FAIL ERS_Ld3.T62_tn14_wtn14nw.NOINY_WW3.betzy_gnu.blom-wavice
  DIFF ERS_Ld3.T62_tn14_wtn14nw.NOINY_WW3.betzy_intel.blom-wavice
  DIFF ERS_Ld3.T62_tn21.NOINY.betzy_intel
  DIFF ERS_Ld3.TL319_tn05.NOIIAJRA.betzy_intel
  DIFF ERS_Ld5.T62_tn14.NOINY.betzy_intel.blom-woa_nuopc
  DIFF SMS_D_Ld1.T62_tn14.NOIIA.betzy_intel
  DIFF SMS_D_Ld1.T62_tn14.NOIIAJRAOC1850.betzy_intel
  DIFF SMS_D_Ld1.T62_tn14.NOIIAJRAOC20TR.betzy_intel
  DIFF SMS_D_Ld1.T62_tn14.NOIIAOC.betzy_intel
  DIFF SMS_D_Ld1.T62_tn14.NOINYOC.betzy_gnu
  DIFF SMS_D_Ld1.T62_tn14.NOINYOC.betzy_intel
  FAIL SMS_D_Ld1.T62_tn14_wtn14nw.NOINYOC_WW3.betzy_gnu.blom-wavice
  DIFF SMS_D_Ld1.T62_tn14_wtn14nw.NOINYOC_WW3.betzy_intel.blom-wavice
  DIFF SMS_D_Ld1.TL319_tn14.NOIIAJRARYF6162OC.betzy_intel
  DIFF SMS_D_Ld1.TL319_tn14.NOIIAJRARYF8485OC.betzy_gnu
  DIFF SMS_D_Ld1.TL319_tn14.NOIIAJRARYF8485OC.betzy_intel

4 failing tests are failing constantly. NLFAIL=namelist changes only. DIFFs for all compsets are expected.

FAIL at ERI_C2 is new, this fails at RUN. Need to look once more on this.

@TomasTorsvik
Copy link
Copy Markdown
Contributor

The ERI_C2 went through on 2nd attempt.

@jmaerz
Copy link
Copy Markdown
Collaborator

jmaerz commented Nov 27, 2025

Hi @TomasTorsvik , not sure, if the information matters, but note that with the former PR #685 namelist changes were introduced (I am not sure, if there was a tag inbetween).

@TomasTorsvik
Copy link
Copy Markdown
Contributor

@jmaerz - thanks for notification :)
Yes, I was aware, I expect that is why we get the 1 NLFAIL for the N2NOINYOC test.

@matsbn
Copy link
Copy Markdown
Contributor Author

matsbn commented Nov 27, 2025

Thanks for testing, @TomasTorsvik! With expected differences in output and ERI_C2 test passing, are the tests OK then?

@TomasTorsvik
Copy link
Copy Markdown
Contributor

Thanks for testing, @TomasTorsvik! With expected differences in output and ERI_C2 test passing, are the tests OK then?

Yes, all tests for the v1.12.18 tag are OK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants