Skip to content

Add support for running G-Cases - #507

Open
andrewdnolan wants to merge 56 commits into
developfrom
andrewdnolan/omega/g-case-coupling
Open

Add support for running G-Cases#507
andrewdnolan wants to merge 56 commits into
developfrom
andrewdnolan/omega/g-case-coupling

Conversation

@andrewdnolan

@andrewdnolan andrewdnolan commented Aug 10, 2026

Copy link
Copy Markdown

This PR hooks up the coupling channels needed to support G-cases. In order to support this, it:

  • Calculates the running AvgNormalVeolcity and AvgSshGrad on edges for each ocean timestep (on the device). Reconstruction to cell centers, which still happens on device, occurs in OcnToCplFields::copyToHost‎. This prevents reconstruction happening every ocean timestep and instead happens only every coupling interval.
    • Reconstructed fields are then exported to the o2x_So_u/o2x_So_v and o2x_So_dhdx/o2x_So_dhdy coupler fields, respectively.
  • Adds G-Case compset definitions to components/omega/cime_config/config_compsets.xml.
  • Import the remaining x2o cpl fields (e.g. Foxx_swnet, Faxa_lwdn, ...) and applies those to the Forcing class.
  • Converts (to first order) Omega's internal absolute salinity (g / kg) to practical salinity (psu), when exporting o2x_So_s to the coupler.

This PR is blocked by:

The branch used to open this PR has been rebased onto each of these PR. As these they are merged into develop, this branch should be rebased to remove the already merged commits.


Checklist

  • Documentation:

  • Linting

  • Building

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

    aurora, oneapi-ifx, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    chrysalis, oneapi-ifx, 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
    • Document testing used to verify the changes including any tests that are added/modified/impacted.
  • Performance related PRs: Please include a relevant PACE experiment link documenting performance before and after.

  • New tests:

    • CTest unit tests for new features have been added per the approved design.
    • Polaris tests for new features have been added per the approved design (and included in a test suite)
  • Stealth Features

    • If any stealth features are included in the PR, please confirm that they have been documented.

andrewdnolan and others added 30 commits August 11, 2026 17:03
Mesh overrides are optional; empty dict when not provided
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Accdidently was turning on tracer restroing which was causing crashes
Point to mesh with correct reconstruction variables names, which
were changed as part of #480
@andrewdnolan
andrewdnolan force-pushed the andrewdnolan/omega/g-case-coupling branch from 35e33b1 to 34b5483 Compare August 11, 2026 21:59
@andrewdnolan

Copy link
Copy Markdown
Author

Testing:

PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu.20260811_171246_675kgd
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu CREATE_NEWCASE
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu XML
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SETUP
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SHAREDLIB_BUILD time=99
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu MODEL_BUILD time=208
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SUBMIT
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu RUN time=685
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu COMPARE_base_modpes
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu MEMLEAK
    PASS PEM_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SHORT_TERM_ARCHIVER

ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu.20260811_155937_csm0bl
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu CREATE_NEWCASE
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu XML
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SETUP
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SHAREDLIB_BUILD time=93
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu MODEL_BUILD time=203
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SUBMIT
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu RUN time=773
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu COMPARE_base_rest
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu MEMLEAK
    PASS ERS_Vmct.T62_oQU240.GOMEGA-IAF.frontier_craygnu SHORT_TERM_ARCHIVER

@cbegeman

Copy link
Copy Markdown

I just want to remind you that the SSH grad as produced by SSHGradOnEdge is not the right one for coupling. See https://github.com/E3SM-Ocean-Discussion/E3SM/pull/140/changes for the full gradient to use. If you want to replicate MPAS-O first, just include the SSH and sea ice pressure.

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.

7 participants