Skip to content

Add halo exchanges to ForwardBackward Timestepper - #490

Open
andrewdnolan wants to merge 2 commits into
E3SM-Project:developfrom
andrewdnolan:omega/forward-backward-halo
Open

Add halo exchanges to ForwardBackward Timestepper#490
andrewdnolan wants to merge 2 commits into
E3SM-Project:developfrom
andrewdnolan:omega/forward-backward-halo

Conversation

@andrewdnolan

@andrewdnolan andrewdnolan commented Jul 31, 2026

Copy link
Copy Markdown

This PR add missing halo exchanges between sub steps for the ForwardBackward time stepper. Without these PEM test using ForwardBackward time stepping failed, even after rebasing onto #488 .

Fixes #489.

Checklist

  • 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.

@andrewdnolan andrewdnolan added the bug Something isn't working label Jul 31, 2026
Comment thread components/omega/src/timeStepping/ForwardBackwardStepper.cpp Outdated
@andrewdnolan

Copy link
Copy Markdown
Author

Frontier CTest unit tests:

  • Machine: fontier
  • Compiler: craygnu / craygnu-mphipcc
  • Build type: Release
  • Result: All tests passed
  • Logs:
    • craygnu: /lustre/orion/cli115/proj-shared/anolan/omega_PR490_halo/craygnu/build/ctest.log
    • craygnu-mphipcc: /lustre/orion/cli115/proj-shared/anolan/omega_PR490_halo/craygnu-mphipcc/build/ctest.log

@xylar

xylar commented Aug 1, 2026

Copy link
Copy Markdown

@hyungyukang, please give this a look when you can.

Comment thread components/omega/src/timeStepping/ForwardBackwardStepper.cpp Outdated
Comment thread components/omega/src/timeStepping/ForwardBackwardStepper.cpp Outdated
andrewdnolan and others added 2 commits August 12, 2026 11:17
Co-authored-by: Hyun (Hyun-Gyu) Kang <47987430+hyungyukang@users.noreply.github.com>
@andrewdnolan
andrewdnolan force-pushed the omega/forward-backward-halo branch from 2e0a7aa to b879387 Compare August 12, 2026 16:02
@andrewdnolan

Copy link
Copy Markdown
Author

Testing:

  • PASS: ERS_Vmct.T62_oQU240.COMEGA-IAF.frontier_craygnu.20260812_111903_jba01b
  • PASS: PEM_Vmct.T62_oQU240.COMEGA-IAF.frontier_craygnu.20260812_120844_9qcobw

Where I needed to apply this diff:

diff --git a/components/omega/cime_config/buildnml b/components/omega/cime_config/buildnml
index 9f86189bdb..30817523bc 100755
--- a/components/omega/cime_config/buildnml
+++ b/components/omega/cime_config/buildnml
@@ -275,12 +275,8 @@ def _build_time_integration_config(default_time_integration, case):
     # RunDuration is not used in coupled runs
     time_integration["RunDuration"] = "none"
 
-    # All meshes use RK4 timestepping (for now)
-    time_integration["TimeStepper"] = "RungeKutta4"
-
-    if ocn_grid == "oQU240":
-        time_integration["TimeStep"] = "0000_00:05:00"
-    elif ocn_grid == "EC30to60E2r2":
+    if ocn_grid == "EC30to60E2r2":
+        time_integration["TimeStepper"] = "RungeKutta4"
         time_integration["TimeStep"] = "0000_00:01:00"
 
     return time_integration

in order to use Forward-Backward timestepping. As an aside, #494 will make changes to the omega.yml file much easier, but until that's merged this manual diff is required.

@hyungyukang hyungyukang 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.

CTests passed on both Frontier GPU and CPU.
The Polaris decomp and restart tests for the baroclinic channel also passed using the Forward-Backward time stepper.

Based on @andrewdnolan 's testing, my own testing, and visual inspection, I am approving this PR. Thanks, @andrewdnolan !

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

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Forward-Backward stepper missing intermediate halo exchanges

4 participants