Skip to content

Compute MeshScaling for variable-resolution meshes - #506

Merged
sbrus89 merged 15 commits into
E3SM-Project:developfrom
hyungyukang:omega/compute-mesh-scaling
Oct 23, 2026
Merged

sbrus89 merged 15 commits into
E3SM-Project:developfrom
hyungyukang:omega/compute-mesh-scaling

Conversation

@hyungyukang

@hyungyukang hyungyukang commented Aug 10, 2026 •

Copy link
Copy Markdown

This PR adds spatially variable MeshScalingDel2 and MeshScalingDel4 in HorzMesh.cpp so that horizontal viscosity and diffusivity scale with the local mesh resolution, following Eqs. (1) and (2) of Hoch et al., JAMES 2020. The reference width is the global median cell width rather than a user-specified width, as discussed in #506 (comment).

This PR resolves #476.

Changes

  • Add HorzMesh::computeMedianCellWidth(), which computes the global median cell width at initialization. Each cell's width is the diameter of a circle with the same area, $2\sqrt{A/\pi}$. The widths of owned cells are gathered on one task, so the median does not depend on the decomposition.
  • At each edge, compute the effective cell width $W$ from the mean area of the two adjacent cells, and set
    • MeshScalingDel2 $= W / W_{med}$
    • MeshScalingDel4 $= (W / W_{med})^3$
  • A single option is added to config/Default.yml, disabled by default. Setting it to false gives coefficients of one everywhere.
    HorzMesh:
      MeshScalingEnable: false
    

Checklist

  • Documentation:

  • Linting

  • Building

    • CMake build does not produce any new warnings from changes in this PR
  • Testing

    aurora, intel, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    aurora, intelgpu, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    chrysalis, intel, openmpi

    • CTests Pass
    • Polaris omega_pr Pass

    frontier, craygnu, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    frontier, craygnu-mphipcc, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    pm-cpu, gnu, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    pm-gpu, gnugpu, mpich

    • CTests Pass
    • Polaris omega_pr Pass
  • Provide relevant details in a comment to the PR titled Testing with the following:

    • Which machines CTest unit tests
      have been run on and indicate that are all passing.
    • The Polaris omega_pr test suite
      has passed, using the Polaris e3sm_submodules/Omega baseline
    • Document machine(s), compiler(s), and the build path(s) used for -p for both the baseline (Polaris e3sm_submodules/Omega) and the PR build
    • Indicate "All tests passed" or document failing tests

Comment thread components/omega/configs/Default.yml Outdated
TracerVertMixTendencyEnable: true
HorzMesh:
MeshScaling:
ScaleWithMesh: false

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I personally think we should get rid of ScaleWithMesh entirely and not have any support for MeshDensity. The tools for mesh creation now just fill it with all ones. so it is not going to be useful in new meshes. The term ScaleWithMesh is super confusing because it seems like it means UseRefWidth.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I thought this is what we already agreed to in #476 (comment)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@xylar , thanks. Right. I kept that part of the code just in case, mainly for comparison with MPAS-Ocean. Since UseRefWidth: true is the default, that approach will not be used. However, I agree that we should remove it to avoid any confusions and potential issues. Will work on it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think we can keep it on a testing branch or something for comparison to MPAS-Ocean but I don't want it to become part of the Omega code unless it's buried enough that no user will try to use it.

Comment thread components/omega/configs/Default.yml Outdated
MeshScaling:
ScaleWithMesh: false
UseRefWidth: true
RefWidth: 30.0e3

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I'm not sure that this is a good idea because it would be easy for users (or buildnml) to neglect to change this option and thus end up applying a different diffusivity than intended. Could this maybe be computed online (at init) as the median cell width? It's not clear to me that this needs to be user-configurable since the user can just change the diffusivities.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I also agree. The MPAS-Ocean equivalent settings have gotten me in trouble so many times. I like the median resolution idea. I think MPAS-Ocean has a setting where it uses the minimum but that's a noisy value. The median would be a lot more robust -- just requiring a global reduction at init.

@hyungyukang hyungyukang Aug 10, 2026 •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@cbegeman and @xylar , thanks for your thoughts on this. I agree. I also had some bad experiences with these settings.

To summarize next steps,

  • Removal of MeshScaling setting in omega.yml
  • Removal of MeshDensity related MeshScaling computations
  • Compute the global median cell width ($\Delta x_{med}$) at initialization
  • Compute MeshScalingDel2 and MeshScalingDel4 from $\Delta x_{med}$:

$$ MeshScalingDel2 = \frac{\Delta x}{\Delta x_{med}} $$ $$ MeshScalingDel4 = \left(\frac{\Delta x}{\Delta x_{med}} \right)^3 $$

Do you agree with this plan?

As far as I understand, in MPAS-Ocean, the Del2 and Del4 viscosity coefficients for each horizontal resolution are tuned based on the minimum grid spacing. One concern I have is that $\Delta x_{med}$ on a variable-resolution mesh may be larger than the minimum grid spacing, or its theoretical value. Also, $\Delta x_{med}$ may differ between meshes even if they share the same theoretical minimum grid spacing, for example, IcoswISC30E3r5 and EC30to60E2r2. This suggests that we may need to retune the Del2 and Del4 viscosity coefficients for Omega for each different mesh? Please let me know if I am misunderstanding anything.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

One concern I have is that $\Delta x_{med}$ on a variable-resolution mesh may be larger than the minimum grid spacing, or its theoretical value.

@hyungyukang, yes, that would be true by definition, so the coefficient would need to be adjusted accordingly. But the median resolution should be much more robust across different meshes that are generated at ostensibly the same resolution (because of noise in the Jigsaw generation process).

The expectation should not be that the same coefficient is right for IcoswISC30E3r5 and EC30to60E2r2, though they wouldn't differ by too much. I helpful piece of information for debugging would be to have Omega output:

  • $\Delta x_{med}$
  • the min and max values of the del2 and del4 coefficients.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Do you agree with this plan?

Yes, I agree.

@hyungyukang
hyungyukang marked this pull request as draft August 12, 2026 13:28
@hyungyukang
hyungyukang force-pushed the omega/compute-mesh-scaling branch from 52f4931 to dbe3b6f Compare September 14, 2026 03:24
@cbegeman

cbegeman commented Sep 14, 2026 •

Copy link
Copy Markdown

@hyungyukang Great to see you're getting back to this. I had missed your prior question until now but happy to take a look again when you like or when it's ready for review. I accidentally hit the close button -- sorry about that!

@cbegeman cbegeman closed this Sep 14, 2026
@cbegeman cbegeman reopened this Sep 14, 2026
@hyungyukang
hyungyukang force-pushed the omega/compute-mesh-scaling branch from dbe3b6f to 2cd0411 Compare October 12, 2026 14:09
@xylar

xylar commented Oct 17, 2026

Copy link
Copy Markdown

@hyungyukang and @cbegeman, this fix is still badly needed and I think the revisions discussed in #506 (comment) still aren't here (even after the rebase).

This is causing difficulties in E3SM-Project/polaris#643 becasue without it the viscosity for non-uniform meshes is messy. It is also badly needed for the unified mesh.

Could we revive this as a priority?

@hyungyukang

Copy link
Copy Markdown
Author

@xylar , Sorry for the delay. I was working on this, but I hadn’t found a good time to test it. I’m making it my highest priority now.

- Add mesh-density-based scaling for del2 and del4 viscosity/diffusion
- Follow the MPAS-Ocean approach for computing mesh scaling
- Replace mesh scaling options with MeshScalingEnable
- Drop ScaleWithMesh, UseRefWidth, MaxMeshDensity and the MeshDensity-
  based scaling.
- A single HorzMesh MeshScalingEnable switch (default true)
  scales the mixing coefficients with the cell width relative to the
  global median cell width; when false, both coefficients are one.
@hyungyukang
hyungyukang force-pushed the omega/compute-mesh-scaling branch from aecc383 to f8a3562 Compare October 19, 2026 20:52
@hyungyukang

Copy link
Copy Markdown
Author

@xylar and @cbegeman , I’ve addressed the comments and suggestions. The mesh scaling is now computed based on the global median cell width of the given variable-resolution mesh. I ran one-day simulations on the EC30to60E2r2 and RRS18to6v3 meshes using the updated del2/del4 viscosity coefficients, which are listed here for several selected meshes. Both runs completed successfully. And please let me know if you have any suggestions for testing.

I think it’s ready for another review. Could you take a look when you have time?

@hyungyukang
hyungyukang marked this pull request as ready for review October 20, 2026 19:41

@xylar xylar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@hyungyukang, thanks, this now does what we agreed in #506 (comment): the MeshDensity path and the nested options are gone, the median is exact and independent of the decomposition, and the log reports the median and the range of both factors. The conversion table in the User's Guide is helpful, and your EC30to60E2r2 median (35.92 km) matches what I measured from that mesh (35.9 km).

One thing is left, inline: the default.


Drafted by @xylar and Claude Code together

Comment thread components/omega/configs/Default.yml Outdated
KPPNonLocalTracerFluxTendencyEnable: true
KPPNonLocalTracerDiagnosticsEnable: false
HorzMesh:
MeshScalingEnable: false

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The last commit switched this to false, but the User's Guide still says scaling is on by default and shows true. The new test in HorzMeshTest.cpp also checks the scaled coefficients the mesh was created with, so I'd expect it to fail with the default off on any mesh whose cells aren't all the same area. We agreed scaling should be the default, so I'd set this back to true. That will change omega_pr results on meshes with unequal cell areas, which the Testing comment can note.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Thanks. I was thinking to match MPAS-O's default. I switched back to true.

@xylar

xylar commented Oct 20, 2026

Copy link
Copy Markdown

Some things will need to change on the Polaris side so we scale things correctly for Omega and MPAS-Ocean based on this update. I'll work on that and run the omega_pr suite tomorrow.

Enabled `MeshScalingEnable` by default in `Default.yml`
@hyungyukang

Copy link
Copy Markdown
Author

Some things will need to change on the Polaris side so we scale things correctly for Omega and MPAS-Ocean based on this update. I'll work on that and run the omega_pr suite tomorrow.

Thanks, @xylar, for the quick review. I think the realistic global ocean test cases on variable-resolution meshes in Polaris need to be updated. Please let me know if there’s anything I can help with.

@hyungyukang

Copy link
Copy Markdown
Author

Polaris omega_pr suite

  • Baseline workdir: /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/polaris_mesh_scaling/omega_pr/baseline_omega
  • Baseline build: /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/polaris_mesh_scaling/omega_pr/baseline_omega/build
  • PR build: /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/polaris_mesh_scaling/omega_pr/branchline_omega/build
  • PR workdir: /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/polaris_mesh_scaling/omega_pr/branchline_omega
  • Baseline Polaris: 662796b1b7a1ec9980c667326c9be7529a5ea42b (662796b1)
  • PR Polaris: 662796b1b7a1ec9980c667326c9be7529a5ea42b (662796b1-dirty)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 3c1c8633ed940833d446f0a9224deaf77ffe8c6e (omega-v0.0.0-alpha0.1-26110-g3c1c8633ed)
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Log: /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/polaris_mesh_scaling/omega_pr/branchline_omega/polaris_omega_pr.o5721045
  • Result:
    • Diffs (16 of 32):
    - ocean/planar/baroclinic_channel/split_explicit/10km/decomp
      - normalVelocity: l1=8.968e-10  l2=5.445e-12  linf=1.451e-13
      - salinity:       l1=1.131e-11  l2=2.969e-13  linf=2.132e-14
      - temperature:    l1=1.710e-11  l2=2.186e-13  linf=1.421e-14
    - ocean/planar/baroclinic_channel/split_explicit/10km/restart
      - normalVelocity: l1=3.008e-12  l2=2.084e-13  linf=4.020e-14
      - salinity:       l1=4.974e-14  l2=2.132e-14  linf=1.421e-14
      - temperature:    l1=2.807e-13  l2=2.831e-14  linf=5.329e-15
    - ocean/planar/baroclinic_channel/split_explicit/10km/threads
      - normalVelocity: l1=8.968e-10  l2=5.445e-12  linf=1.451e-13
      - salinity:       l1=1.131e-11  l2=2.969e-13  linf=2.132e-14
      - temperature:    l1=1.710e-11  l2=2.186e-13  linf=1.421e-14
    - ocean/planar/baroclinic_channel/rk4/10km/decomp
      - normalVelocity: l1=1.084e-19  l2=1.084e-19  linf=1.084e-19
    - ocean/planar/baroclinic_channel/rk4/10km/restart
      - normalVelocity: l1=6.543e-26  l2=2.796e-26  linf=2.585e-26
    - ocean/planar/baroclinic_channel/rk4/10km/threads
      - normalVelocity: l1=1.084e-19  l2=1.084e-19  linf=1.084e-19
    - ocean/planar/barotropic_gyre/munk/free-slip
      - normalVelocity: l1=2.985e-18  l2=7.348e-20  linf=8.470e-21
    - ocean/planar/manufactured_solution/convergence_both/del2
      - layerThickness: l1=3.338e-10  l2=8.993e-12  linf=6.821e-13
      - normalVelocity: l1=7.509e-11  l2=1.098e-12  linf=5.262e-14
    - ocean/planar/manufactured_solution/convergence_both/del4
      - layerThickness: l1=1.629e-08  l2=1.027e-10  linf=2.160e-12
      - normalVelocity: l1=3.444e-09  l2=1.247e-11  linf=1.589e-13
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_2_del4
      - normalVelocity: l1=1.387e-07  l2=2.176e-08  linf=1.126e-08
      - temperature:    l1=4.652e-10  l2=2.049e-12  linf=1.563e-13
      - salinity:       l1=6.376e-10  l2=2.755e-12  linf=5.684e-14
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_3
      - normalVelocity: l1=1.320e-04  l2=4.684e-05  linf=2.845e-05
      - temperature:    l1=4.904e-10  l2=4.074e-12  linf=1.428e-12
      - salinity:       l1=6.397e-10  l2=2.765e-12  linf=7.105e-14
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_4
      - normalVelocity: l1=7.881e-04  l2=1.784e-04  linf=6.190e-05
      - temperature:    l1=2.980e-07  l2=5.414e-08  linf=1.727e-08
      - salinity:       l1=6.598e-10  l2=2.828e-12  linf=5.684e-14
    - ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_4_del4
      - normalVelocity: l1=4.561e+00  l2=1.870e-01  linf=3.258e-02
      - temperature:    l1=1.582e+00  l2=1.261e-01  linf=3.119e-02
      - salinity:       l1=1.503e-09  l2=5.736e-12  linf=9.237e-14
    - ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_3_nofct
      - normalVelocity: l1=3.678e-01  l2=9.155e-03  linf=1.354e-03
      - temperature:    l1=1.099e-05  l2=4.405e-07  linf=3.528e-08
      - salinity:       l1=1.368e-09  l2=5.267e-12  linf=8.527e-14
    - ocean/planar/seamount/linear/zstar/short
      - temperature:    l1=1.813e-08  l2=1.460e-10  linf=8.997e-12
      - layerThickness: l1=3.786e-09  l2=4.272e-11  linf=3.183e-12
      - normalVelocity: l1=1.077e-07  l2=2.654e-10  linf=2.931e-12
    - ocean/planar/seamount/nonlinear/sigma/short
      - temperature:    l1=2.866e-08  l2=1.850e-10  linf=6.697e-12
      - layerThickness: l1=3.801e-09  l2=4.270e-11  linf=3.155e-12

Since Omega’s mesh scaling is enabled by default, the omega_pr tests now compute mesh scaling for every mesh, which causes differences in the results. I think mesh scaling should be disabled for the planar tests (QU and icos meshes as well).

@xylar

xylar commented Oct 21, 2026

Copy link
Copy Markdown

Testing on aurora: CTests only

I reran only the CTests on Aurora with Intel and IntelGPU (MPICH), for the merge of #506 (2fb807112e) into develop (1feac2f815) as 074e2c0d50. The new commit changes only a test, so the omega_pr results in the earlier Testing comment still apply.

CTest unit tests:

  • Machine: aurora
  • Compiler: intel
  • Build type: Release
  • Build: /lus/flare/projects/E3SM_Dec/xylar/polaris_1.1/aurora/omega_pr_test/pr506-2fb8071/aurora_intel/build
  • Omega: 074e2c0d50c4c9e1b463d05e5351ee9e89152c1b (Omega-v0.1.0-alpha.1-6254-g074e2c0d50)
  • Result: All tests passed
  • Log: /lus/flare/projects/E3SM_Dec/xylar/polaris_1.1/aurora/omega_pr_test/pr506-2fb8071/aurora_intel/build/ctests.log

CTest unit tests:

  • Machine: aurora
  • Compiler: intelgpu
  • Build type: Release
  • Build: /lus/flare/projects/E3SM_Dec/xylar/polaris_1.1/aurora/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build
  • Omega: 074e2c0d50c4c9e1b463d05e5351ee9e89152c1b (Omega-v0.1.0-alpha.1-6254-g074e2c0d50)
  • Failures (1 of 61):
    • SUBMESOEDDIES_TEST
  • Log: /lus/flare/projects/E3SM_Dec/xylar/polaris_1.1/aurora/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build/ctests.log

SUBMESOEDDIES_TEST on intelgpu is #618, unrelated to this PR.


Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.

@xylar

xylar commented Oct 21, 2026

Copy link
Copy Markdown

Testing on frontier: CTests only

I reran only the CTests on Frontier with craygnu and craygnu-mphipcc (MPICH), for the merge of #506 (2fb807112e) into develop (1feac2f815) as 074e2c0d50. The new commit changes only a test, so the omega_pr results in the earlier Testing comment still apply.

CTest unit tests:

  • Machine: frontier
  • Compiler: craygnu
  • Build type: Release
  • Build: /lustre/orion/cli115/scratch/xylar/polaris_1.1/frontier/omega_pr_test/pr506-2fb8071/frontier_craygnu/ctest/build_omega/build_frontier_craygnu
  • Omega: 074e2c0d50c4c9e1b463d05e5351ee9e89152c1b (Omega-v0.1.0-alpha.1-6254-g074e2c0d50)
  • Result: All tests passed
  • Log: /lustre/orion/cli115/scratch/xylar/polaris_1.1/frontier/omega_pr_test/pr506-2fb8071/frontier_craygnu/ctest/build_omega/build_frontier_craygnu/ctests.log

CTest unit tests:

  • Machine: frontier
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Build: /lustre/orion/cli115/scratch/xylar/polaris_1.1/frontier/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/ctest/build_omega/build_frontier_craygnu-mphipcc
  • Omega: 074e2c0d50c4c9e1b463d05e5351ee9e89152c1b (Omega-v0.1.0-alpha.1-6254-g074e2c0d50)
  • Result: All tests passed
  • Log: /lustre/orion/cli115/scratch/xylar/polaris_1.1/frontier/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/ctest/build_omega/build_frontier_craygnu-mphipcc/ctests.log

Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.

@xylar xylar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I like @cbegeman's suggestion but I'd like to get this in before #598.

I tested this in Polaris in E3SM-Project/polaris#867 including the two realistic global tests with cached meshes. This is doing what we want and is comparable to the MPAS-Ocean equivalent when we account for the different reference cell size.

@hyungyukang

Copy link
Copy Markdown
Author

@xylar , Thanks a lot for testing and fixing the CTest issue in this PR. I also agree with @cbegeman’s idea and will open an issue so we don’t lose track of it.

@xylar

xylar commented Oct 22, 2026

Copy link
Copy Markdown

@cbegeman, it wasn't clear if you want to see testing beyond what I did in E3SM-Project/polaris#867 before we merge this. Please let us know.

@sbrus89

sbrus89 commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator

Tested the merge of #506 (3c1c863) into develop (1feac2f) as ad58598, against develop (1feac2f) rather than the Polaris submodule, because answer-changing PRs, including the KPP fix in #603, have merged into develop since the PR's base and the commit Polaris pins. The baseline ran with Polaris 662796b1b7, without the changes in Polaris 07c74515db that the PR needs.

I wasn't aware that any non-B4B PR's were merged to develop, although it's possible something slipped past with NERSC, LCRC, and ALCF being down over the past week.

@xylar

xylar commented Oct 22, 2026

Copy link
Copy Markdown

@sbrus89, you're right; that sentence was wrong. Nothing answer-changing has merged into develop since the commit Polaris pins (cdb935b). Each PR merged since (#466, #570, #603, #562, #438 and #523) passed omega_pr bit-for-bit against cdb935b in its own testing. Your #523 test merge is identical to develop at 1feac2f815, the baseline used here.

The results above stand; only the stated reason for the baseline was wrong. I've struck it out in the four testing comments.


Posted by Claude Code on @xylar's behalf. The testing, analysis and wording
above are AI-authored; please check them accordingly.

@xylar

xylar commented Oct 22, 2026

Copy link
Copy Markdown

@sbrus89, I'm making changes to the tool to hopefully prevent this kind of nonsense from creeping in again. The agent said it guessed based on the PR title that it might be non-BFB and made some other pretty confusing excuses. I'm making the instructions quite a bit stricter. Thanks for pointing out the mistake!

@cbegeman

Copy link
Copy Markdown

@cbegeman, it wasn't clear if you want to see testing beyond what I did in E3SM-Project/polaris#867 before we merge this. Please let us know.

Can you elaborate on what your testing in E3SM-Project#867 shows? It's not immediately apparent to me from the figures how the effects of mesh scaling are manifesting in EC30to60. The comment could be on that PR.

@xylar

xylar commented Oct 22, 2026

Copy link
Copy Markdown

That's fair. I'll produce more relevant plots in E3SM-Project/polaris#867 and post there.

Comment thread components/omega/doc/userGuide/HorzMesh.md
@xylar

xylar commented Oct 22, 2026

Copy link
Copy Markdown

@cbegeman, the plots are in E3SM-Project/polaris#867 (comment). With MPAS-Ocean's reference width set to Omega's median, the two models' ν2 and ν4 are bit-for-bit identical on every ocean edge of EC30to60E2r2 and QU.240km, and follow W and W³ as intended.


Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.

@cbegeman

Copy link
Copy Markdown

@xylar Thank you so much for that additional analysis and testing! That more than shows that this PR is working as expected.

@cbegeman cbegeman left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Thank you so much for tackling this @hyungyukang ! It's clear from @xylar 's testing that this is functioning as intended.

Add viscosity coefficients to config_overrides.yaml used for
coupled mode.
@sbrus89

sbrus89 commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Testing on chrysalis

Tested the merge of #506 (2fb807112e) into develop (ede8e22014) as 55fb6efda7, against Polaris' Omega submodule (cdb935bb5a). The baseline ran with Polaris 4572f0a114, without the changes in Polaris 07c74515db that the PR needs.

Row CTests omega_pr New build warnings
chrysalis, intel, openmpi 61 of 61 passed 30 of 32 passed, 2 with baseline differences 0
chrysalis, intel, openmpi

Polaris omega_pr suite

  • Baseline workdir: /lcrc/group/e3sm/sbrus/omega_pr_test/baselines/chrysalis_intel_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /lcrc/group/e3sm/sbrus/omega_pr_test/baselines/chrysalis_intel_polaris-4572f0a_omega-cdb935b/build
  • PR build: /lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/build
  • PR workdir: /lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.1.0-109-g4572f0a114-dirty)
  • PR Polaris: b08a2ea5ce92289c838db8ae748682eff1bbd740 (1.1.0-179-gb08a2ea5ce)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: chrysalis
  • Partition: debug
  • Compiler: intel
  • Build type: Release
  • Log: /lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/omega_pr/polaris_omega_pr.o1313474
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.284e-11  l2=3.987e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.284e-11  l2=3.987e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a114 Merge pull request #868 from xylar/fix-katara
eff8ba770e Merge pull request #860 from xylar/cosine-bell-rk4
765e5b7806 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b9 Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

b08a2ea5ce Merge PR testing utility for local testing
07c74515db Clarify where a task turns Omega's mesh scaling on
3ac7ab91f1 Turn off Omega's mesh scaling unless a task asks for it
91b4d459c9 Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support
### CTest unit tests: - Machine: `chrysalis` - Compiler: `intel` - Build type: `Release` - Build: `/lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/build` - Omega: `55fb6efda797b8f358f43165631da8abd8d0f1a9` (`Omega-v0.1.0-alpha.1-6269-g55fb6efda7`) - Result: All tests passed - Log: `/lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/build/ctests.log`

Build warnings

No new warnings (37 in the PR build, 37 in the baseline build).

  • Baseline build log: /lcrc/group/e3sm/sbrus/omega_pr_test/baselines/chrysalis_intel_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /lcrc/group/e3sm/sbrus/omega_pr_test/pr506-2fb8071/chrysalis_intel/build/build_omega.log

Notes

The utility didn't do a local merge of E3SM-Project/polaris#867 so thecosine_bell/decomp and cosine_bell/restart differences come from Polaris, not this PR: the baseline ran with Polaris main, which has E3SM-Project/polaris#860 (cosine_bell back to RK4) and E3SM-Project/polaris#857 (angleEdge recompute fix), while E3SM-Project/polaris#867's branch predates both. The angleEdge differences (~1e-11) match E3SM-Project#857.

@sbrus89

sbrus89 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

Testing on aurora

Tested the merge of #506 (2fb807112e) into develop (ede8e22014) as 55fb6efda7, against Polaris' Omega submodule (cdb935bb5a). The baseline ran with Polaris 4572f0a114, without the changes in Polaris 07c74515db that the PR needs.

Row CTests omega_pr New build warnings
aurora, intel, mpich 61 of 61 passed 30 of 32 passed, 2 with baseline differences 0
aurora, intelgpu, mpich 61 of 61 passed 30 of 32 passed, 2 with baseline differences 1
aurora, intel, mpich

Polaris omega_pr suite

  • Baseline workdir: /home/brus/run/omega_pr_test/baselines/aurora_intel_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /home/brus/run/omega_pr_test/baselines/aurora_intel_polaris-4572f0a_omega-cdb935b/build
  • PR build: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/build
  • PR workdir: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.1.0-109-g4572f0a11-dirty)
  • PR Polaris: d7ef2f13e831f7a2c66df06f3e3e3f0425c491f7 (1.1.0-179-gd7ef2f13e)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: aurora
  • Compiler: intel
  • Build type: Release
  • Log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/omega_pr/polaris_omega_pr.o8954165
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.286e-11  l2=3.990e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.286e-11  l2=3.990e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a11 Merge pull request #868 from xylar/fix-katara
eff8ba770 Merge pull request #860 from xylar/cosine-bell-rk4
765e5b780 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

d7ef2f13e Merge PR testing utility for local testing
07c74515d Clarify where a task turns Omega's mesh scaling on
3ac7ab91f Turn off Omega's mesh scaling unless a task asks for it
91b4d459c Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support

CTest unit tests:

  • Machine: aurora
  • Compiler: intel
  • Build type: Release
  • Build: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/build
  • Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Result: All tests passed
  • Log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/build/ctests.log

Build warnings

No new warnings (14 in the PR build, 14 in the baseline build).

  • Baseline build log: /home/brus/run/omega_pr_test/baselines/aurora_intel_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intel/build/build_omega.log
aurora, intelgpu, mpich

Polaris omega_pr suite

  • Baseline workdir: /home/brus/run/omega_pr_test/baselines/aurora_intelgpu_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /home/brus/run/omega_pr_test/baselines/aurora_intelgpu_polaris-4572f0a_omega-cdb935b/build
  • PR build: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build
  • PR workdir: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.1.0-109-g4572f0a11-dirty)
  • PR Polaris: d7ef2f13e831f7a2c66df06f3e3e3f0425c491f7 (1.1.0-179-gd7ef2f13e)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: aurora
  • Compiler: intelgpu
  • Build type: Release
  • Log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/omega_pr/polaris_omega_pr.o8954223
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.286e-11  l2=3.990e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.286e-11  l2=3.990e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a11 Merge pull request #868 from xylar/fix-katara
eff8ba770 Merge pull request #860 from xylar/cosine-bell-rk4
765e5b780 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

d7ef2f13e Merge PR testing utility for local testing
07c74515d Clarify where a task turns Omega's mesh scaling on
3ac7ab91f Turn off Omega's mesh scaling unless a task asks for it
91b4d459c Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support

CTest unit tests:

  • Machine: aurora
  • Compiler: intelgpu
  • Build type: Release
  • Build: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build
  • Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Result: All tests passed
  • Log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build/ctests.log

Build warnings

1 new warnings, 0 in files this PR changes (241 in the PR build, 262 in the baseline build). Those in files the PR changes are marked *.

New warnings
  172: [-Wvla-cxx-extension] variable length arrays in C++ are a Clang extension
  • Baseline build log: /home/brus/run/omega_pr_test/baselines/aurora_intelgpu_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /home/brus/run/omega_pr_test/pr506-2fb8071/aurora_intelgpu/build/build_omega.log

Notes

The cosine_bell/decomp and cosine_bell/restart differences on both rows come from Polaris, not this PR: the baseline ran with Polaris main, which has E3SM-Project/polaris#860 (cosine_bell back to RK4) and E3SM-Project/polaris#857 (angleEdge recompute fix), while E3SM-Project/polaris#867's branch predates both. The angleEdge differences (~1e-11) match E3SM-Project#857.

The new intelgpu warning is a -Wvla-cxx-extension warning in Scorpio (externals/scorpio), whose pin is the same in both builds and whose files already give this warning in the baseline, so it is unrelated to this PR, which changes only HorzMesh and its tests.

@sbrus89

sbrus89 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

Testing on pm-cpu and pm-gpu

Tested the merge of #506 (2fb807112e) into develop (ede8e22014) as 55fb6efda7, against Polaris' Omega submodule (cdb935bb5a). The baseline ran with Polaris 4572f0a114, without the changes in Polaris 07c74515db that the PR needs.

Row CTests omega_pr New build warnings
pm-cpu, gnu, mpich 61 of 61 passed 30 of 32 passed, 2 with baseline differences 0
pm-gpu, gnugpu, mpich 61 of 61 passed 6 of 32 passed, 26 with baseline differences 3
pm-cpu, gnu, mpich

Polaris omega_pr suite

  • Baseline workdir: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-cpu_gnu_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-cpu_gnu_polaris-4572f0a_omega-cdb935b/build
  • PR build: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/build
  • PR workdir: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.0.0-1030-g4572f0a114-dirty)
  • PR Polaris: 21204adc18e2b758df3ddc2589719811f7398673 (1.0.0-1100-g21204adc18)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/omega_pr/polaris_omega_pr.o60112849
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.287e-11  l2=3.990e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.287e-11  l2=3.990e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a114 Merge pull request #868 from xylar/fix-katara
eff8ba770e Merge pull request #860 from xylar/cosine-bell-rk4
765e5b7806 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b9 Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

21204adc18 Merge PR testing utility for local testing
07c74515db Clarify where a task turns Omega's mesh scaling on
3ac7ab91f1 Turn off Omega's mesh scaling unless a task asks for it
91b4d459c9 Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support

CTest unit tests:

  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Build: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/build
  • Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Result: All tests passed
  • Log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/build/ctests.log

Build warnings

No new warnings (4 in the PR build, 4 in the baseline build).

  • Baseline build log: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-cpu_gnu_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-cpu_gnu/build/build_omega.log
pm-gpu, gnugpu, mpich

Polaris omega_pr suite

  • Baseline workdir: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-gpu_gnugpu_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-gpu_gnugpu_polaris-4572f0a_omega-cdb935b/build
  • PR build: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/build
  • PR workdir: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.0.0-1030-g4572f0a114-dirty)
  • PR Polaris: 21204adc18e2b758df3ddc2589719811f7398673 (1.0.0-1100-g21204adc18)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: pm-gpu
  • Compiler: gnugpu
  • Build type: Release
  • Log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/omega_pr/polaris_omega_pr.o60114600
  • Result:
    • Diffs (26 of 32):
    - ocean/planar/baroclinic_channel/split_explicit/10km/decomp
      - no norms (missing file or variable)
    - ocean/planar/baroclinic_channel/split_explicit/10km/restart
      - no norms (missing file or variable)
    - ocean/planar/baroclinic_channel/split_explicit/10km/threads
      - no norms (missing file or variable)
    - ocean/planar/baroclinic_channel/rk4/10km/decomp
      - no norms (missing file or variable)
    - ocean/planar/baroclinic_channel/rk4/10km/restart
      - no norms (missing file or variable)
    - ocean/planar/baroclinic_channel/rk4/10km/threads
      - no norms (missing file or variable)
    - ocean/planar/barotropic_channel/short
      - no norms (missing file or variable)
    - ocean/planar/barotropic_gyre/munk/free-slip
      - no norms (missing file or variable)
    - ocean/planar/manufactured_solution/convergence_both/default
      - no norms (missing file or variable)
    - ocean/planar/manufactured_solution/convergence_both/del2
      - no norms (missing file or variable)
    - ocean/planar/manufactured_solution/convergence_both/del4
      - no norms (missing file or variable)
    - ocean/planar/manufactured_solution/rk4/convergence_both/default
      - no norms (missing file or variable)
    - ocean/planar/merry_go_round/default
      - no norms (missing file or variable)
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_2_del4
      - no norms (missing file or variable)
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_3
      - no norms (missing file or variable)
    - ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_4
      - no norms (missing file or variable)
    - ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_4_del4
      - no norms (missing file or variable)
    - ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_3_nofct
      - no norms (missing file or variable)
    - ocean/planar/seamount/linear/zstar/short
      - no norms (missing file or variable)
    - ocean/planar/seamount/nonlinear/sigma/short
      - no norms (missing file or variable)
    - ocean/spherical/icos/cosine_bell/decomp
      - no norms (missing file or variable)
    - ocean/spherical/icos/cosine_bell/restart
      - no norms (missing file or variable)
    - ocean/column/ekman
      - no norms (missing file or variable)
    - ocean/column/inertial
      - no norms (missing file or variable)
    - ocean/column/kpp_combined
      - no norms (missing file or variable)
    - ocean/column/kpp_cooling_with_mixedlayer
      - no norms (missing file or variable)
Recent commits

Baseline Polaris:

4572f0a114 Merge pull request #868 from xylar/fix-katara
eff8ba770e Merge pull request #860 from xylar/cosine-bell-rk4
765e5b7806 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b9 Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

21204adc18 Merge PR testing utility for local testing
07c74515db Clarify where a task turns Omega's mesh scaling on
3ac7ab91f1 Turn off Omega's mesh scaling unless a task asks for it
91b4d459c9 Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support

CTest unit tests:

  • Machine: pm-gpu
  • Compiler: gnugpu
  • Build type: Release
  • Build: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/build
  • Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Result: All tests passed
  • Log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/build/ctests.log

Build warnings

3 new warnings, 0 in files this PR changes (852 in the PR build, 842 in the baseline build). Those in files the PR changes are marked *.

New warnings
  components/omega/src/ocn/Frazil.cpp: [#177-D] variable "LocIceRefSal" was declared but never referenced (0 -> 2)
  components/omega/src/ocn/Frazil.cpp: [#177-D] variable "LocLatIce" was declared but never referenced (0 -> 2)
  components/omega/test/ocn/FrazilTest.cpp: [#177-D] variable "RTol" was declared but never referenced (0 -> 3)
  • Baseline build log: /global/homes/s/sbrus/scratch/omega_pr_test/baselines/pm-gpu_gnugpu_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /global/homes/s/sbrus/scratch/omega_pr_test/pr506-2fb8071/pm-gpu_gnugpu/build/build_omega.log

Notes

The cosine_bell/decomp and cosine_bell/restart differences on both rows come from Polaris, not this PR: the baseline ran with Polaris main, which has E3SM-Project/polaris#860 (cosine_bell back to RK4) and E3SM-Project/polaris#857 (angleEdge recompute fix), while E3SM-Project/polaris#867's branch predates both.

The other 24 pm-gpu differences are not real: the baseline job hit the 30-minute debug limit after only 4 tasks, having spent about 20 minutes starting up before its first Omega run, so those tasks have no baseline output to compare against. All 32 PR tasks ran successfully. A fair comparison needs the pm-gpu baseline rerun with more time.

The 3 new pm-gpu warnings are in Frazil code that reached develop after the Omega commit Polaris pins, not in files this PR changes.

@xylar

xylar commented Oct 23, 2026

Copy link
Copy Markdown

I agree that E3SM-Project/polaris#860 and maybe E3SM-Project/polaris#857 explain the diffs.

@sbrus89

sbrus89 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

Testing on frontier

Tested the merge of #506 (2fb807112e) into develop (ede8e22014) as 55fb6efda7, against Polaris' Omega submodule (cdb935bb5a). The baseline ran with Polaris 4572f0a114, without the changes in Polaris 07c74515db that the PR needs.

Row CTests omega_pr New build warnings
frontier, craygnu, mpich 61 of 61 passed 30 of 32 passed, 2 with baseline differences 0
frontier, craygnu-mphipcc, mpich 61 of 61 passed 30 of 32 passed, 2 with baseline differences 0
frontier, craygnu, mpich

Polaris omega_pr suite

  • Baseline workdir: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu_polaris-4572f0a_omega-cdb935b/build
  • PR build: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/build
  • PR workdir: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.1.0-109-g4572f0a114)
  • PR Polaris: 4a052e08755f79f9341985f849288a6d0a77855f (1.1.0-186-g4a052e0875)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu
  • Build type: Release
  • Log: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/omega_pr/polaris_omega_pr.o5733801
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.287e-11  l2=3.991e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.287e-11  l2=3.991e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a114 Merge pull request #868 from xylar/fix-katara
eff8ba770e Merge pull request #860 from xylar/cosine-bell-rk4
765e5b7806 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b9 Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

4a052e0875 Merge the Omega PR testing utility (local, not pushed)
07c74515db Clarify where a task turns Omega's mesh scaling on
3ac7ab91f1 Turn off Omega's mesh scaling unless a task asks for it
91b4d459c9 Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support
### CTest unit tests: - Machine: `frontier` - Compiler: `craygnu` - Build type: `Release` - Build: `/ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/build` - Omega: `55fb6efda797b8f358f43165631da8abd8d0f1a9` (`Omega-v0.1.0-alpha.1-6269-g55fb6efda7`) - Result: All tests passed - Log: `/ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/build/ctests.log`

Build warnings

No new warnings (3 in the PR build, 3 in the baseline build).

  • Baseline build log: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu/build/build_omega.log
frontier, craygnu-mphipcc, mpich

Polaris omega_pr suite

  • Baseline workdir: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu-mphipcc_polaris-4572f0a_omega-cdb935b/omega_pr
  • Baseline build: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu-mphipcc_polaris-4572f0a_omega-cdb935b/build
  • PR build: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/build
  • PR workdir: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/omega_pr
  • Baseline Polaris: 4572f0a114b5c77c08f278356813ccd147238ace (1.1.0-109-g4572f0a114)
  • PR Polaris: 4a052e08755f79f9341985f849288a6d0a77855f (1.1.0-186-g4a052e0875)
  • Baseline Omega: cdb935bb5a8d995b0878616e001a2701a2627519 (Omega-v0.1.0-alpha.1-6142-gcdb935bb5a)
  • PR Omega: 55fb6efda797b8f358f43165631da8abd8d0f1a9 (Omega-v0.1.0-alpha.1-6269-g55fb6efda7)
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Log: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/omega_pr/polaris_omega_pr.o5733883
  • Result:
    • Diffs (2 of 32):
    - ocean/spherical/icos/cosine_bell/decomp
      - tracer1:        l1=8.704e+00  l2=9.627e-01  linf=2.177e-01
      - normalVelocity: l1=1.205e+00  l2=1.948e-02  linf=1.192e-03
      - angleEdge:      l1=2.287e-11  l2=3.991e-13  linf=7.727e-14
    - ocean/spherical/icos/cosine_bell/restart
      - tracer1:        l1=1.027e+01  l2=1.545e+00  linf=3.924e-01
      - normalVelocity: l1=7.770e-01  l2=1.379e-02  linf=9.920e-04
      - angleEdge:      l1=2.287e-11  l2=3.991e-13  linf=7.727e-14
Recent commits

Baseline Polaris:

4572f0a114 Merge pull request #868 from xylar/fix-katara
eff8ba770e Merge pull request #860 from xylar/cosine-bell-rk4
765e5b7806 Merge pull request #857 from xylar/fix-angle-edge-recompute
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill
2a2c8ad4b9 Merge pull request #855 from xylar/fix-float32-diff-summary

PR Polaris:

4a052e0875 Merge the Omega PR testing utility (local, not pushed)
07c74515db Clarify where a task turns Omega's mesh scaling on
3ac7ab91f1 Turn off Omega's mesh scaling unless a task asks for it
91b4d459c9 Scale Omega's horizontal mixing with the mesh in realistic_global runs
662796b1b7 Merge pull request #864 from xylar/add-release-notes-skill

Baseline Omega:

cdb935bb5a Merge pull request #600 from xylar/omega/fix-pm-mpi-flags
b90c3dae8d Merge pull request #601 from andrewdnolan/omega/cxx20-for-coupled
9641c6cf9e Merge pull request #546 from xylar/omega/fix-cf-units
55c3de8c15 Merge pull request #566: e3sm/master into omega/develop
9aba4a8032 Merge pull request #597 from xylar/omega/fix-real-literal-nvcc

PR Omega:

55fb6efda7 Test merge of E3SM-Project/Omega#506 (2fb807112e) into develop (ede8e22014)
ede8e22014 Merge pull request #625 from grnydawn/ykim/omega/standalone-cpu-arch-flags
eeef0a29dc Merge pull request #611 from brian-oneill/omega/analysis-restarts-and-samples
b0bcc838e3 Merge pull request #617 from mwarusz/omega/submesoscale-eddies
1feac2f815 Merge pull request #523 from vijaysm/vijaysm/omega/moab-support
### CTest unit tests: - Machine: `frontier` - Compiler: `craygnu-mphipcc` - Build type: `Release` - Build: `/ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/build` - Omega: `55fb6efda797b8f358f43165631da8abd8d0f1a9` (`Omega-v0.1.0-alpha.1-6269-g55fb6efda7`) - Result: All tests passed - Log: `/ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/build/ctests.log`

Build warnings

No new warnings (6 in the PR build, 6 in the baseline build).

  • Baseline build log: /ccs/home/brus/run/omega_pr_test/baselines/frontier_craygnu-mphipcc_polaris-4572f0a_omega-cdb935b/build/build_omega.log
  • PR build log: /ccs/home/brus/run/omega_pr_test/pr506-2fb8071/frontier_craygnu-mphipcc/build/build_omega.log

Notes

On both rows, the two cosine_bell diffs come from the Polaris branch, not from this PR. The PR's Polaris branch (07c74515db, E3SM-Project/polaris#867) branches from main before E3SM-Project/polaris#857 and E3SM-Project/polaris#860, which the baseline Polaris (main, 4572f0a114) includes. Without them, the PR run recomputes angleEdge in the base mesh (the 1e-13 diff) and runs cosine_bell with split_explicit instead of RK4, which accounts for the tracer1 and normalVelocity diffs. Updating E3SM-Project/polaris#867 to current main should remove them.

Column tasks fail some conservation property checks (vmix_unstable on both rows, and vmix_stable and inertial on craygnu-mphipcc), but they fail the same checks with identical errors in the baseline, so those failures predate this PR. CTests pass on both rows, and there are no new build warnings.

@andrewdnolan andrewdnolan left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@hyungyukang Couple of minor comments about unneeded entries, since they match the defaults in config/Default.yml.

But otherwise looks great!

Comment thread components/omega/cime_config/omega_buildnml/data/config_overrides.yaml Outdated
Comment thread components/omega/cime_config/omega_buildnml/data/config_overrides.yaml Outdated
@sbrus89

sbrus89 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

The diffs in my testing can be ignored, the utility didn't do a local merge of E3SM-Project/polaris#867 into main, and the pm-gpu baseline run timed out.

hyungyukang and others added 2 commits October 23, 2026 10:49
Address PR reviewer's suggestion

Co-authored-by: Andrew Nolan <32367657+andrewdnolan@users.noreply.github.com>
Address PR reviewer's suggestion

Co-authored-by: Andrew Nolan <32367657+andrewdnolan@users.noreply.github.com>
@andrewdnolan

Copy link
Copy Markdown
Collaborator

@sbrus89 I'd say unit test and validation that run as part of CI should be sufficient for testing those config changes. Looks like those are all passing!

@sbrus89
sbrus89 merged commit 23b13af into E3SM-Project:develop Oct 23, 2026
8 checks passed
@hyungyukang

Copy link
Copy Markdown
Author

Thanks @sbrus89 !

xylar added a commit to xylar/polaris that referenced this pull request Oct 23, 2026
This brings in E3SM-Project/Omega#506, which adds mesh scaling of the
horizontal mixing coefficients.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

MeshScaling should be spatially variable to properly account for changes in mesh resolution.

5 participants