Skip to content

moved the Forcing to its own IO#443

Merged
sbrus89 merged 6 commits into
E3SM-Project:developfrom
alicebarthel:omega/add-forcing-io
Jul 11, 2026
Merged

moved the Forcing to its own IO#443
sbrus89 merged 6 commits into
E3SM-Project:developfrom
alicebarthel:omega/add-forcing-io

Conversation

@alicebarthel

@alicebarthel alicebarthel commented Jun 24, 2026

Copy link
Copy Markdown

This PR updates the code to expect the forcing from a dedicated forcing IO (by Default forcing.nc)

A polaris PR is required to update the tests to read forcing from forcing.nc instead of the init.nc, under development at https://github.com/alicebarthel/polaris/tree/update-forcing-io

Checklist

  • Linting
  • Building
    • CMake build does not produce any new warnings from changes in this PR
  • Testing
    • CTest unit tests - all pass on pm-cpu (gnu) - Update: no additional files needed.
    • The Polaris omega_pr test suite
      has passed, using the Polaris e3sm_submodules/Omega baseline

@alicebarthel

Copy link
Copy Markdown
Author

The following tests FAILED:
19 - IOSTREAM_TEST (Failed)
23 - FORCING_PLANE_TEST (Failed)
24 - FORCING_SPHERE_TEST (Failed)
25 - TENDENCIES_TEST (Failed)
27 - STATE_TEST (Failed)
35 - DRIVER_TEST (Failed)
Errors while running CTest

but the omega.log only shows expected errors. I'll investigate more tomorrow.

Comment thread components/omega/src/ocn/Forcing.cpp Outdated
Comment thread components/omega/src/ocn/Forcing.cpp
@alicebarthel

alicebarthel commented Jun 26, 2026

Copy link
Copy Markdown
Author

OK, here is an update:

  • because we added forcing into the yml file, IOStreams validateAll() now needed the forcing fields to be registered and a forcing file to be present --> i added these inits for the dependencies in IOStreams and StateTest.
  • to keep the coverage of the computeStress test, I had shifted the forcing test to have a SPHERE and a PLANE test at run time (based on existing tests). Thus this requires forcing files with the corresponding nCells dimensions. I have made these files manually and now call a different name for each forcing test (mirroring the treatment of the mesh at run time).

The ctests now all pass on pm-cpu (gnu).
They require the 3 new forcing files available on perlmutter at:
/global/homes/a/abarthel/pscratch/omega_scratch

I typically copy these in my base directory the run in each case directory:

cd test
ln -sf  ../../forcing_nCells_7153.nc forcing.nc
ln -sf  ../../forcing_nCells_2304.nc forcingPlanar.nc
ln -sf  ../../forcing_nCells_2562.nc forcingSphere.nc
cd ..

At this stage, anyone testing this PR with ctests should also fetch these.
Ultimately, these will be moved to be with the meshes if we keep this structure.

Comment thread components/omega/configs/Default.yml
@alicebarthel

Copy link
Copy Markdown
Author

Just an update:
Now that I removed the file dependencies, ctests pass on pm-cpu (gnu) without the extra files.
Currently the omega_pr fails against the baseline, investigating this for now:

Polaris omega_pr suite

  • Baseline workdir: /global/homes/a/abarthel/pscratch/polaris-scratch/new-main-baseline
  • Baseline build: /global/homes/a/abarthel/pscratch/polaris-scratch/new-main-baseline/build
  • PR build: /global/homes/a/abarthel/pscratch/omega_scratch/add-forcing-io-cpu-gnu4
  • PR workdir: /global/homes/a/abarthel/pscratch/polaris-scratch/polarismain+omega-forcing-io_vsCTRL
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Debug
  • Log: not found
  • Result:
    • Diffs (1 of 12):
      • ocean/planar/barotropic_gyre/munk/free-slip

@alicebarthel

Copy link
Copy Markdown
Author

Just documenting things here.
With the new polaris branch, I was able to pass the barotropic gyre test but unrelated tests fail:

Polaris omega_pr suite

  • Baseline workdir: /global/homes/a/abarthel/pscratch/polaris-scratch/baseline-current-develop/
  • Baseline build: /global/homes/a/abarthel/pscratch/polaris-scratch/baseline-current-develop/build
  • PR build: /global/homes/a/abarthel/pscratch/omega_scratch/add-forcing-io-currentdev
  • PR workdir: /global/homes/a/abarthel/pscratch/polaris-scratch/omega+polaris-forcingio_vs_baseline-current-develop
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Debug
  • Log: not found
  • Result:
    • Failures (3 of 9):
      • ocean/planar/merry_go_round/default
      • ocean/spherical/icos/cosine_bell/decomp
      • ocean/spherical/icos/cosine_bell/restart
    • Diffs (4 of 9):
      • ocean/planar/manufactured_solution/convergence_both/default
      • ocean/planar/manufactured_solution/convergence_both/del2
      • ocean/planar/manufactured_solution/convergence_both/del4
      • ocean/planar/overflow/default

@alicebarthel alicebarthel force-pushed the omega/add-forcing-io branch from e5b69a7 to 1a53098 Compare July 6, 2026 16:55
@andrewdnolan

Copy link
Copy Markdown

Testing

Polaris omega_pr suite

  • Baseline workdir: /pscratch/sd/a/anolan/omega_PR-443/baseline
  • Baseline build: /pscratch/sd/a/anolan/omega_PR-443/build/baseline
  • PR build: /pscratch/sd/a/anolan/omega_PR-443/build/add-forcing-stream
  • PR workdir: /pscratch/sd/a/anolan/omega_PR-443/add-forcing-stream
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: not found
  • Result:
    • Diffs (1 of 12):
      • ocean/planar/barotropic_gyre/munk/free-slip

@alicebarthel, I can confirm that the only diff I see is ocean/planar/barotropic_gyre/munk/free-slip when using your polaris branch.

I'd expect this test to diff since windStressMeridional and windStressZonal are removed from the init.nc file. Using the head of develop for the baseline means that no window forcing will be read in.

I haven't done enough baseline comparisons with polaris to know if it will work, but I'll try to regenerate the baseline using the head of main for polaris. (And then I'd expect everything to pass).

@cbegeman

cbegeman commented Jul 6, 2026

Copy link
Copy Markdown

@alicebarthel When this is ready for review, go ahead and post a PR from your polaris branch. It seems like you're close. Thanks!

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

Testing

Polaris omega_pr suite

  • Baseline workdir: /pscratch/sd/a/anolan/omega_PR-443/baseline
  • Baseline build: /pscratch/sd/a/anolan/omega_PR-443/build/baseline
  • PR build: /pscratch/sd/a/anolan/omega_PR-443/build/add-forcing-stream
  • PR workdir: /pscratch/sd/a/anolan/omega_PR-443/add-forcing-stream
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: not found
  • Result: All tests passed

In order to get the ocean/planar/barotropic_gyre/munk/free-slip testcase to pass, I needed to generate the baseline using the HEAD of main for polaris. I also need to rebase the polaris dev branch onto main, in order for the alpha versions of match.

@alicebarthel

Copy link
Copy Markdown
Author

Thanks @andrewdnolan I agree, this is the behavior we expected! Thanks for confirming.
The polaris PR is E3SM-Project/polaris#646.

@alicebarthel alicebarthel force-pushed the omega/add-forcing-io branch from 1a53098 to 9551899 Compare July 8, 2026 00:34
@alicebarthel alicebarthel requested a review from cbegeman July 8, 2026 00:35
@alicebarthel

alicebarthel commented Jul 8, 2026

Copy link
Copy Markdown
Author

OK, my new version fails the fill-value test. I may have been too hasty in my change last night.
The following tests FAILED:
41 - FILL_VALUE_TEST (Failed)
Looking into it now...
Update: this is a develop issue due to my rebase, not any changes I introduced. I should have left it to the merge team...

@cbegeman

cbegeman commented Jul 9, 2026

Copy link
Copy Markdown

Testing

using E3SM-Project/polaris#646 with the PR test

Polaris omega_pr suite

  • Baseline workdir: /home/cbegeman/polaris-output/main-omega-submodule-20260708
  • Baseline build: /home/cbegeman/polaris-output/main-omega-submodule-20260708/build
  • PR build: /home/cbegeman/polaris-output/forcing-omega-forcing-20260708/build
  • PR workdir: /home/cbegeman/polaris-output/forcing-omega-forcing-20260708
  • Machine: aurora
  • Compiler: oneapi-ifx
  • Build type: Release
  • Log: not found
  • Result: All tests passed

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

Approving on the basis of successful testing on aurora

@sbrus89

sbrus89 commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Testing

Passes CTests for craygnu and craygnu-mphipcc on Frontier.

@vanroekel

Copy link
Copy Markdown
Collaborator

When I checked this out for testing on pm-cpu/gpu the FillValue test still failed. It seems this still needs to be rebased to develop. All other cTests passed on gnu and gnugpu - Let me know if this is something I missed.

@alicebarthel alicebarthel force-pushed the omega/add-forcing-io branch from 9551899 to 1691025 Compare July 10, 2026 00:35
@alicebarthel

Copy link
Copy Markdown
Author

@vanroekel you are correct, this needed a rebase now that develop passes the ctests.
I pushed the rebased version.
The ctests all pass on pm-cpu(gnu) and on pm-gpu.

@alicebarthel

Copy link
Copy Markdown
Author

@sbrus89 I judge this to be ready for a merge since the polaris+omega combination was tested on 2 machines. Unless others have concerns.

@vanroekel

Copy link
Copy Markdown
Collaborator

Thanks @alicebarthel I have the pr_suite in the queue on pm-cpu/gpu and @sbrus89 will run on frontier in the morning. This should be able to be merged tomorrow.

@sbrus89

sbrus89 commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Testing

All omega_pr tests pass on Frontier craygnu:

Polaris omega_pr suite

  • Baseline workdir: /ccs/home/brus/run/polaris_forcing_io_omega_pr_baseline_craygnu_mpich/
  • Baseline build: /ccs/home/brus/run/polaris_forcing_io_omega_pr_baseline_craygnu_mpich/build
  • PR build: /ccs/home/brus/run/polaris_forcing_io_omega_pr_craygnu_mpich/build
  • PR workdir: /ccs/home/brus/run/polaris_forcing_io_omega_pr_craygnu_mpich
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu
  • Build type: Release
  • Log: not found
  • Result: All tests passed

and craygnu-mpihipcc:

Polaris omega_pr suite

  • Baseline workdir: /ccs/home/brus/run/polaris_forcing_io_omega_pr_baseline_craygnu-mphipcc_mpich/
  • Baseline build: /ccs/home/brus/run/polaris_forcing_io_omega_pr_baseline_craygnu-mphipcc_mpich/build
  • PR build: /ccs/home/brus/run/polaris_forcing_io_omega_pr_craygnu-mphipcc_mpich/build
  • PR workdir: /ccs/home/brus/run/polaris_forcing_io_omega_pr_craygnu-mphipcc_mpich
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Log: not found
  • Result: All tests passed

(using E3SM-Project/polaris#646 for PR test)

@vanroekel

Copy link
Copy Markdown
Collaborator

Polaris omega_pr suite

  • PR build: /pscratch/sd/l/lvroekel/forcing-io-build/build
  • PR workdir: /pscratch/sd/l/lvroekel/forcing-io-build
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: /pscratch/sd/l/lvroekel/forcing-io-build/polaris_omega_pr.o55736134
  • Result: All tests passed

pm-gpu is in the queue, will report back once done

@vanroekel

Copy link
Copy Markdown
Collaborator

pm-gpu testing finally got through

Polaris omega_pr suite

  • PR build: /pscratch/sd/l/lvroekel/update-forcing-io-build-gpu/build
  • PR workdir: /pscratch/sd/l/lvroekel/update-forcing-io-build-gpu
  • Machine: pm-gpu
  • Compiler: gnugpu
  • Build type: Release
  • Log: /pscratch/sd/l/lvroekel/update-forcing-io-build-gpu/polaris_omega_pr.o55765046
  • Result: All tests passed

@sbrus89 sbrus89 merged commit d422c4f into E3SM-Project:develop Jul 11, 2026
1 check passed
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.

6 participants