Skip to content

Conversation

@minghangli-uni
Copy link
Collaborator

@minghangli-uni minghangli-uni commented May 12, 2025

1. Summary:
Update MOM_input parameters to closely follow the latest settings from GFDL OM5, which have been shown to support stable long-term runs.

What has changed?

  1. Most parameters in MOM_input
  2. coupling timestep in nuopc.runseq
  3. ocn_cpl_dt in nuopc.runconfig
  4. All doc files in docs

Why was this done?
stable long-term control runs without truncation errors.

2. Issues Addressed:

3. Depedencies (e.g. on payu, model or om3-scripts)

This change requires changes to (note required version where true):

  • payu:
  • access-om3:
  • om3-scripts:

4. Ad-hoc Testing

What ad-hoc testing was done? How are you convinced this change is correct (plots are good)?

Answers are not changed compared to the stable long run.

ocean.stats in this PR

  1      0,  700435.000,     0, En 1.1534026194849000E-03, CFL  0.14190, SL  2.8286E-09, M 1.38176E+21, S 34.7210, T  3.5677, Me  0.00E+00, Se  0.00E+00, Te  0.00E+00
  2     96,  700436.000,     0, En 1.2393540284500390E-03, CFL  0.11140, SL  2.8307E-09, M 1.38176E+21, S 34.7210, T  3.5678, Me  1.89E-19, Se  1.80E-17, Te  1.42E-18
  3    192,  700437.000,     0, En 1.2722991874921168E-03, CFL  0.10365, SL  2.8329E-09, M 1.38176E+21, S 34.7210, T  3.5678, Me  8.66E-20, Se -2.36E-17, Te -1.09E-18

ocean.stats in the stable long run

  1      0,  700435.000,     0, En 1.1534026194849000E-03, CFL  0.14190, SL  2.8286E-09, M 1.38176E+21, S 34.7210, T  3.5677, Me  0.00E+00, Se  0.00E+00, Te  0.00E+00
  2     96,  700436.000,     0, En 1.2393540284500390E-03, CFL  0.11140, SL  2.8307E-09, M 1.38176E+21, S 34.7210, T  3.5678, Me  1.89E-19, Se  1.80E-17, Te  1.42E-18
  3    192,  700437.000,     0, En 1.2722991874921168E-03, CFL  0.10365, SL  2.8329E-09, M 1.38176E+21, S 34.7210, T  3.5678, Me  8.66E-20, Se -2.36E-17, Te -1.09E-18

5. CI Testing

  • !test repro has been run

6. Reproducibility

Is this reproducible with the previous commit? (If not, why not?)

  • Yes
  • No - !test repro commit has been run.

7. Documentation

The docs folder has been updated with output from running the model?

  • Yes
  • N/A

A PR has been created for updating the documentation?

  • Yes:
  • N/A

8. Formatting

Changes to MOM_input have been copied from model output in docs/MOM_parameter_docs.short?

  • Yes
  • N/A

9. Merge Strategy

  • Merge commit
  • Rebase and merge
  • Squash

@minghangli-uni minghangli-uni self-assigned this May 12, 2025
@minghangli-uni minghangli-uni force-pushed the 555-params-updates branch 3 times, most recently from bfc7fe0 to 9bb88ab Compare May 15, 2025 01:10
@minghangli-uni
Copy link
Collaborator Author

minghangli-uni commented May 15, 2025

It is confirmed that a test run using the MOM parameters in this PR reproduces the results of the long-running control simulation (upto 49 years)

@minghangli-uni
Copy link
Collaborator Author

The parameter differences compared to the latest GFDL OM5 settings are documented here, https://github.com/minghangli-uni/access-om3-doc/blob/main/tables/MOM_comparison/GFDL-OM5_ACCESS-OM3_25km_nml_diff.md

@minghangli-uni
Copy link
Collaborator Author

For the vertex shear model, the following three parameters were not included in this PR, as they are not yet available in the current source. They will be incorporated once the corresponding PR from GFDL is merged.

VERTEX_SHEAR_VISCOSITY_BUG = False !   [Boolean] default = True
                                ! If true, use a bug in vertex shear that zeros out viscosities at vertices on
                                ! coastlines.
VERTEX_SHEAR_GEOMETRIC_MEAN = True !   [Boolean] default = False
                                ! If true, use a geometric mean for moving diffusivity from vertices to tracer
                                ! points.  False uses algebraic mean.
VERTEX_SHEAR_GEOMETRIC_MEAN_KDMIN = 1.0E-09 !   [m2 s-1] default = 0.0
                                ! If using the geometric mean in vertex shear, use this minimum value for Kd.
                                ! This is an ad-hoc parameter, the diffusivities on the edge of shear regions
                                ! are sensitive to the choice.

@minghangli-uni
Copy link
Collaborator Author

We may consider turning off SIMPLE_TKE_TO_KD for testing purposes, but not as part of this PR, as the following warning is reported in access-om3.err,

WARNING from PE     0: set_diffusivity_init: SIMPLE_TKE_TO_KD can not be used reliably with USE_REGRIDDING.

@minghangli-uni minghangli-uni marked this pull request as ready for review May 15, 2025 02:12
@minghangli-uni minghangli-uni requested a review from aekiss May 15, 2025 02:21
aekiss added a commit to COSIMA/access-om3-doc that referenced this pull request May 21, 2025
@aekiss
Copy link
Contributor

aekiss commented May 21, 2025

Comment on lines +665 to +677
MAX_P_SURF = 0.0 ! [Pa] default = -1.0
! The maximum surface pressure that can be exerted by the atmosphere and
! floating sea-ice or ice shelves. This is needed because the FMS coupling
! structure does not limit the water that can be frozen out of the ocean and the
! ice-ocean heat fluxes are treated explicitly. No limit is applied if a
! negative value is used.
USE_RIGID_SEA_ICE = True ! [Boolean] default = False
! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that
! resist vertical motion.
SEA_ICE_RIGID_MASS = 100.0 ! [kg m-2] default = 1000.0
! The mass of sea-ice per unit area at which the sea-ice starts to exhibit
! rigidity

Copy link
Contributor

Choose a reason for hiding this comment

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

Are these needed for coupled ice-ocean stability (damping gravity waves in ice-covered regions), or can they be deleted (together with DYNAMIC_SURFACE_PRESSURE above)? Maybe GFDL need this for stability because they're not coupling OM5 every timestep...?

Suggested change
MAX_P_SURF = 0.0 ! [Pa] default = -1.0
! The maximum surface pressure that can be exerted by the atmosphere and
! floating sea-ice or ice shelves. This is needed because the FMS coupling
! structure does not limit the water that can be frozen out of the ocean and the
! ice-ocean heat fluxes are treated explicitly. No limit is applied if a
! negative value is used.
USE_RIGID_SEA_ICE = True ! [Boolean] default = False
! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that
! resist vertical motion.
SEA_ICE_RIGID_MASS = 100.0 ! [kg m-2] default = 1000.0
! The mass of sea-ice per unit area at which the sea-ice starts to exhibit
! rigidity

Comment on lines +418 to +419
DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False
! If true, add a dynamic pressure due to a viscous ice shelf, for instance.
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need this? It seems to be useful only for a dynamic ice shelf, which we don't have (yet).
I'm imagine "dynamic pressure" here is akin to that defined in Fig 1 here. I guess turning this off would also require USE_RIGID_SEA_ICE = False? See comment on lines +665 to +677 below.

Suggested change
DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False
! If true, add a dynamic pressure due to a viscous ice shelf, for instance.

Copy link
Contributor

Choose a reason for hiding this comment

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

@claireyung should the ice shelf be hydrostatic, rigid, or dynamically relax from rigid to hydrostatic over some timescale?

Copy link
Collaborator

Choose a reason for hiding this comment

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

This parameter is for damping waves under ice shelves, even when a static ice shelf is used (it's in the barotropic solver part of the code). Of course it's not doing anything without an ice shelf but I will want it set to True when I add ice shelves. I haven't explored varying the lengthscales of this parameterisation.

Copy link
Contributor

Choose a reason for hiding this comment

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

OK, so assuming it has no stability or performance penalties we can just leave it on even in the configs without ice shelves.

! scaled viscosity, the Smagorinsky and Leith viscosities, and AH.
SMAGORINSKY_AH = True ! [Boolean] default = False
! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity.
SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0
Copy link
Contributor

Choose a reason for hiding this comment

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

access-om2 used k_smag_iso=2.0, but SMAG_BI_CONST is different notation specifying the same thing. k_smag_iso is C in Griffies & Hallberg 2000. Comparing MOM5 and MOM6 it seems that SMAGORINSKY_AH is equivalent (if we neglect grid anisotropy) to 0.125*(k_smag_iso/pi)**2, which equals 0.05066 in the access-om2 case with k_smag_iso=2.0. If this interpretation is correct, then our om3 viscosity is about the same (slightly larger) than in om2. So I'm happy with that.

! The background biharmonic horizontal viscosity.
LEITH_AH = True ! [Boolean] default = False
! If true, use a biharmonic Leith nonlinear eddy viscosity.
AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm happy with this, but FYI ACCESS-OM2 used vel_micom_iso=0 for 0.25° and 0.1°, and 0.04 ms−1 for 1°

Copy link
Contributor

Choose a reason for hiding this comment

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

This may make OM3 0.25° more viscous than access-om2-025 in regions where this term dominates the viscosity (ie exceeds Smagorinsky).

! total tolerance for SSH is 4 times this value. The default is
! 0.5*NK*ANGSTROM, and this should not be set less than about
! 10^-15*MAXIMUM_DEPTH.
VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08
Copy link
Contributor

Choose a reason for hiding this comment

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

Interesting that GFDL are only checking ETA_TOLERANCE (via default ETA_TOLERANCE = 1.0E-06), not VELOCITY_TOLERANCE. This seems potentially risky - is there any harm in retaining VELOCITY_TOLERANCE = 1.0E-04 ?

aekiss
aekiss previously approved these changes Jun 4, 2025
Copy link
Contributor

@aekiss aekiss left a comment

Choose a reason for hiding this comment

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

Approving, on the assumption that these are an improvement over the previous parameters. But we should return to this and give a careful check that we're happy with these parameters.

@minghangli-uni
Copy link
Collaborator Author

!test repro commit

@github-actions
Copy link

github-actions bot commented Jun 4, 2025

❌ The Bitwise Reproducibility Check Failed ❌

When comparing:

  • 555-params-updates (checksums created using commit f3b449b), against
  • dev-MC_25km_jra_ryf (checksums in commit 44d7453)

🔧 The new checksums will be committed to this PR, if they differ from what is on this branch.

Further information

The experiment can be found on Gadi at /scratch/tm70/repro-ci/experiments/access-om3-configs/f3b449b44696dbe79c84eaf73a0baea5fbe7c9de, and the test results at https://github.com/ACCESS-NRI/access-om3-configs/runs/43440599096.

The checksums generated by this !test command are found in the testing/checksum directory of https://github.com/ACCESS-NRI/access-om3-configs/actions/runs/15435266621/artifacts/3256357759.

The checksums compared against are found here https://github.com/ACCESS-NRI/access-om3-configs/tree/44d7453b92323f930131485cab8f43910f872c10/testing/checksum

@github-actions
Copy link

github-actions bot commented Jun 4, 2025

!test Command Failed ❌ There was a problem committing the result of the reproducibility run. See https://github.com/ACCESS-NRI/access-om3-configs/actions/runs/15435266621

@minghangli-uni
Copy link
Collaborator Author

Here comes the error message

FATAL from PE 1299: ocean_model_restart was called with unused buoyancy fluxes. For conservation, the ocean restart files can only be created after the buoyancy forcing is applied.

This occurs during the restart write and is due to the current CI runlength is 3hrs, which is not an integer multiple of the tracer timestep (7200s). specifically 10800/7200=1.5, so the thermo cycle is only half way completed and its fluxes are still partially unapplied, hence MOM aborts this intentially to preserve conservation.

Changing the runlength to a multiple of DT_THERM, eg 2hrs, 4hrs resolves the issue.

@minghangli-uni
Copy link
Collaborator Author

!test repro commit

@github-actions
Copy link

github-actions bot commented Jun 5, 2025

❌ The Bitwise Reproducibility Check Failed ❌

When comparing:

  • 555-params-updates (checksums created using commit f3b449b), against
  • dev-MC_25km_jra_ryf (checksums in commit 44d7453)

🔧 The new checksums will be committed to this PR, if they differ from what is on this branch.

Further information

The experiment can be found on Gadi at /scratch/tm70/repro-ci/experiments/access-om3-configs/f3b449b44696dbe79c84eaf73a0baea5fbe7c9de, and the test results at https://github.com/ACCESS-NRI/access-om3-configs/runs/43511491814.

The checksums generated by this !test command are found in the testing/checksum directory of https://github.com/ACCESS-NRI/access-om3-configs/actions/runs/15457063024/artifacts/3264267237.

The checksums compared against are found here https://github.com/ACCESS-NRI/access-om3-configs/tree/44d7453b92323f930131485cab8f43910f872c10/testing/checksum

@minghangli-uni
Copy link
Collaborator Author

Sorry @aekiss could you please review it again? I also ping @dougiesquire and @anton-seaice here if you are happy for a look?

@chrisb13 chrisb13 requested review from claireyung and removed request for claireyung June 5, 2025 03:12
aekiss
aekiss previously approved these changes Jun 5, 2025
Copy link
Contributor

@aekiss aekiss left a comment

Choose a reason for hiding this comment

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

approved, assuming checksums are the only change since my last review

minghangli-uni and others added 16 commits June 5, 2025 14:41
 1. MOM_input: DT=900s, DT_THERM=7200s, DTBT=-0.9;
 2. nuopc.runseq: 900s;
 3. nuopc.runconfig: ocn_cpl_dt = 900.
 Update MEKE
module MOM_thickness_diffuse
 no GM parameterisation
 Update horizontal mixing coefficients
 Update background viscosity to 0
 VELOCITY_TOLERANCE set to default
 Disable Leith and enable biharmonic Smagorinsky eddy viscosity
 Change to Bodner et al. 2023 formulation of the restratifying mixed-layer restratification parameterisation.
module MOM_diabatic_driver
 Implicit energetics PBL scheme to determine diffusivity and viscosity in the PBL
module MOM_CVMix_KPP
 Disabled
module MOM_CVMix_conv
 Disabled
module MOM_CVMix_shear
 Disabled
module MOM_CVMix_ddiff
 Disabled
module MOM_kappa_shear
 Jackson's shear-driven turbulence
module MOM_energetic_PBL
 Enable ePBL and disable KPP
 Add SIMPLE_TKE_TO_KD, but can not be used reliably with USE_REGRIDDING?
 Reduce BBL_EFFIC from default 0.2 to 0.01
 Add background KD, KD_MIN, Henyey_igw_background latitude scaling for near surface background diffusivity
 Add double diffusion
 Remove KHTR_MIN & Remove MAX_TR_DIFFUSION_CFL
 Disable nuetral diffusion
 Disable horizontal diffusion of tracers near boundaries
 Reduce SEA_ICE_RIGID_MASS from 1000 to 100
 Enable max limit of surface pressure
 Remove constant unresolved background gust for ustar
 Disable surface pressure in EOS
 Enable a dynamic pressure due to viscous ice shelves
@minghangli-uni
Copy link
Collaborator Author

My apologies @aekiss , I just made a small update to the comment for DTBT_RESET_PERIOD, changing it from 1.08E4 to 7200.0 to be consistent with *.short.

DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0

@minghangli-uni minghangli-uni merged commit fafee19 into dev-MC_25km_jra_ryf Jun 5, 2025
11 checks passed
@minghangli-uni minghangli-uni deleted the 555-params-updates branch June 5, 2025 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants