Skip to content

Adds penetrating shortwave radiation - #570

Open
vanroekel wants to merge 15 commits into
E3SM-Project:developfrom
vanroekel:vanroekel/omega/penetrating_solar
Open

vanroekel wants to merge 15 commits into
E3SM-Project:developfrom
vanroekel:vanroekel/omega/penetrating_solar

Conversation

@vanroekel

@vanroekel vanroekel commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

This allows shortwave radiation to enter the subsurface ocean instead of simply being deposited in the top layer. The penetration with depth follows the implementation of Manizza et al (2008), their equation 4. It splits the incident solar into three components, near IR, 'blue' band, and 'red' band. The solar flux at the bottom of the ocean is set to zero to ensure there are no energy leaks, i.e. the column integrated heating is identical for penetrating shortwave and when deposited in the top layer.

A unit test has been added with a very shallow column and it tests equivalence of heating in the penetrating case and top layer only case.

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

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

Unresolved moderate issues remain in halo exchange and regression-test coverage.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 2 Medium severity · 1 Low severity

Open (3)
What changed in this PR

Adds configurable, depth-dependent three-band penetrating shortwave heating to the ocean.

Changes:

  • Adds shortwave tendency and extinction-coefficient auxiliary fields.
  • Imports coupled Foxx_swnet forcing.
  • Updates configuration, tests, and documentation.
File Reviewed change / findings
components/​omega/​test/​ocn/​TendencyTermsTest.cpp Adds conservation coverage. Moderate (3 votes): strengthen assertions to validate per-layer attenuation.
components/​omega/​test/​ocn/​SfcCouplingTest.cpp Updates coupling fixtures. Moderate (2 votes): verify Foxx_swnet in both coupling paths.
components/​omega/​src/​ocn/​TendencyTerms.h Defines the shortwave penetration kernel.
components/​omega/​src/​ocn/​TendencyTerms.cpp Constructs the new kernel.
components/​omega/​src/​ocn/​Tendencies.h Registers the new tendency.
components/​omega/​src/​ocn/​Tendencies.cpp Applies the tendency. Moderate (1 vote): exchange extinction-field halos or restrict processing to owned cells.
components/​omega/​src/​ocn/​SfcCoupling.h Adds coupled shortwave storage.
components/​omega/​src/​ocn/​SfcCoupling.cpp Imports coupled shortwave flux. Moderate (1 vote): add Foxx_swnet coupling assertions.
components/​omega/​src/​ocn/​OceanInit.cpp Reads extinction inputs. Nit (2 votes): remove redundant shadowed declarations at lines 153 and 242.
components/​omega/​src/​ocn/​Forcing.cpp Enables and exchanges shortwave forcing.
components/​omega/​src/​ocn/​auxiliaryVars/​ShortwavePenAuxVars.h Declares extinction auxiliary fields.
components/​omega/​src/​ocn/​auxiliaryVars/​ShortwavePenAuxVars.cpp Registers extinction auxiliary fields.
components/​omega/​src/​ocn/​AuxiliaryState.h Adds shortwave auxiliary state. Moderate (1 vote): exchange both extinction arrays in exchangeHalo().
components/​omega/​src/​ocn/​AuxiliaryState.cpp Initializes auxiliary fields. Moderate (1 vote): exchange extinction halos; Nit (1 vote): reorder the ShortwavePenAux initializer.
components/​omega/​src/​drivers/​coupled/​omega_cpl_indices.F90 Adds the coupled shortwave import index.
components/​omega/​doc/​userGuide/​TendencyTerms.md Documents the tendency.
components/​omega/​doc/​userGuide/​Forcing.md Documents forcing configuration and behavior.
components/​omega/​doc/​userGuide/​AuxiliaryVariables.md Documents extinction fields.
components/​omega/​doc/​devGuide/​Forcing.md Documents implementation details.
components/​omega/​doc/​devGuide/​AuxiliaryVariables.md Documents auxiliary-field handling.
components/​omega/​configs/​Default.yml Adds feature defaults and input configuration.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread components/omega/test/ocn/SfcCouplingTest.cpp Outdated
Comment thread components/omega/test/ocn/TendencyTermsTest.cpp Outdated
Comment thread components/omega/src/ocn/OceanInit.cpp Outdated
@vanroekel
vanroekel force-pushed the vanroekel/omega/penetrating_solar branch from ca8d98a to 828ae13 Compare September 24, 2026 05:04
@vanroekel

Copy link
Copy Markdown
Collaborator Author

Here is a picture showing heating over 3 hours from different configurations. Jerlov use 2 exponentials and Manizza use 3. The default for omega will be somewhat like Manizza type 1 but with spatial variability

image

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

Just a quick first round of reviewing. Nice job on this @vanroekel!

I haven't tested it, but I can do that on Frontier and post the results.

Comment thread components/omega/configs/Default.yml Outdated
BottomDragCoeff: 1.0e-3
SfcThicknessForcingTendencyEnable: false
SfcTracerForcingTendencyEnable: false
PenetratingShortwaveTendencyEnable: 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.

This is bigger than just this PR, but I feel like we can organize this section a bit better. Perhaps more like the BottomDragTendency section above, where the parameters that go with that tendency are a subsection of that tendency flag. That way its clear what parameters go with what tendencies and it keeps it a bit cleaner? To start, I would suggest making NearIrFraction, NearIrCoeff, BlueFraction, and RedFraction sub parameters under a header of PenetratingShortwaveTendency along with an Enable parameter. And then one of us can do a clean up PR that tidies up the other ones too?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is fixed in the new version and reflected in the docs as well

Omega:
Tendencies:
SfcTracerForcingTendencyEnable: true
PenetratingShortwaveTendencyEnable: true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Is there a warning or something for if the user sets PenetratingShortwaveTendencyEnable: true, but SfcTracerForcingTendencyEnable: 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.

Also, need to add BlueFraction: 0.19 and RedFraction: 0.23 here too?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Added the Blue/Red fractions and added an error if PenetratingShortwaveTendencyEnable: true and SfcTracerForcingTendencyEnable: false. See L144 of OceanInit.cpp


The near-infrared fraction and extinction coefficient can be changed under
`Omega.Tendencies` with `NearIrFraction` and `NearIrCoeff`. The red and
blue/green band fractions remain fixed at 0.23 and 0.19, respectively.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This can lead to totals less than or greater than 1, yes? Is that a problem we anticipate and/or should mitigate somehow?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Also, where did these fractions/values come from? I don't seem them in the Manizza 2008 paper.

I see the 0.58, but not the 0.23 and 0.19.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The values were a mistake they should have both been 0.21 as per Manizza et al, that is fixed. There is also now a check that the NearIRFraction and BlueFraction and RedFraction sum to 1, see L365 of Tendencies.cpp

VorticityAux.registerFields(GroupName, AuxMeshName);
VelocityDel2Aux.registerFields(GroupName, AuxMeshName);
SurfTracerRestAux.registerFields(GroupName, AuxMeshName);
// Only the Default state's fields belong to the shared IO group created

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 am not sure I understand why ShortwavePenAux is treated differently here. Can you elaborate?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is removed, not sure why it was different

}

OMEGA_SCOPE(LocPenetratingShortwave, PenetratingShortwave);
if (LocPenetratingShortwave.Enabled) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Does not SfcTracerForcingTendencyEnable also have to be enabled for this to go through? Or is that checked elsewhere

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is fixed.


TracerForcingFieldsEnabled =
SfcThicknessForcingEnabled || SfcTracerForcingEnabled;
bool PenetratingShortwaveEnabled = 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 guess perhaps this is where we can double up and check if SfcTracerForcingTendencyEnable is also on and set PenetratingShortwaveEnabled based on that too?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Or is it L186 below that is what is really needed? Really we need TracerForcingFieldsEnabled enabled, right? Or do we also need SfcTracerForcingTendencyEnable enabled as well?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Actually looking here I think we need to strip all of the penetrating shortwave. Copilot loaded all this to check if tracer forcing is on at L189, but we don't want tracer forcing enabled if only Penetrating Shortwave is on. I'm going to remove it. I had co pilot add an error out in a different place if the two aren't on.

const Real Kb = ExtinctionCoeffBlue(ICell);
const Real ZSurface = GeomZInterface(ICell, KTop);

Real FluxAtTop = SurfaceFlux;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Can we amend these to be FluxAtLayerTop and FluxAtLayerBottom? I think that helps make this read clearer.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done, fixed it here and in TendenciesTest as well

const auto Mesh = HorzMesh::getDefault();
const auto VCoord = VertCoord::getDefault();

// Arbitrary test values for the incident surface shortwave flux and the

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Does this test the no penetrative flux beyond the bottom most layer part? I feel like with 60 x 10m layers, the test probably doesn't have any extra leftover flux by the time it gets to the bottom.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This was a mistake it should have been much shorter, column should be 16m then.

@vanroekel
vanroekel force-pushed the vanroekel/omega/penetrating_solar branch from 828ae13 to 585728b Compare October 2, 2026 16:17
@vanroekel

Copy link
Copy Markdown
Collaborator Author

Polaris omega_pr suite

  • PR build: /lcrc/group/e3sm/ac.vanroekel/solar_test_build
  • PR workdir: /lcrc/group/e3sm/ac.vanroekel/pr_suite_solar
  • Machine: chrysalis
  • Partition: debug
  • Compiler: intel
  • Build type: Release
  • Log: /lcrc/group/e3sm/ac.vanroekel/pr_suite_solar/polaris_omega_pr.o1301380
  • Result: All tests passed

@vanroekel

Copy link
Copy Markdown
Collaborator Author

Polaris omega_pr suite

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

@vanroekel

Copy link
Copy Markdown
Collaborator Author

Polaris omega_pr suite

  • PR build: /pscratch/sd/l/lvroekel/solar_pr_suite_gpu_build
  • PR workdir: /pscratch/sd/l/lvroekel/solar_pr_suite_gpu
  • Machine: pm-gpu
  • Compiler: gnugpu
  • Build type: Release
  • Log: /pscratch/sd/l/lvroekel/solar_pr_suite_gpu/polaris_omega_pr.o59302521
  • Result: All tests passed

@vanroekel

Copy link
Copy Markdown
Collaborator Author

Polaris omega_pr suite

  • PR build: /lustre/orion/cli115/scratch/vanroek/solar_omega_build_craygnu-mphipcc
  • PR workdir: /lustre/orion/cli115/scratch/vanroek/solar_frontier_craygnu-mphipcc_suite
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Log: /lustre/orion/cli115/scratch/vanroek/solar_frontier_craygnu-mphipcc_suite/polaris_omega_pr.o5602787
  • Result: All tests passed

OnCell);
}

if (TracerForcingFieldsEnabled) {

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 we need a Halo exchange here? I'd think running on CellOwned would be enough since this is cell to cell?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I think we may? The tracer tends iterate over nCellsAll so we'd have to make sure missing shortwave isn't needed. Can we punt on this until a later PR? Or @brian-oneill do you have thoughts on this one?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

actually thinking further on this I think it can be removed. I'm doing the surface tracer forcing over NCellsOwned and removing this exchange

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Yes, I agree. It doesn't look like this exchange was necessary

Comment thread components/omega/src/ocn/Tendencies.cpp Outdated
Err,
"Tendencies: SfcTracerForcingTendencyEnable not found in TendConfig");

Config PenSWConfig("PenetratingShortwaveTendency");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Very minor formatting but using SW capitalized as a shorthand for Shortwave seems strange.

Suggested change
Config PenSWConfig("PenetratingShortwaveTendency");
Config PenSwConfig("PenetratingShortwaveTendency");

Comment on lines +1220 to +1223
Real NearIrFraction = 0.58_Real;
Real NearIrCoeff = 2.86_Real;
Real RedFraction = 0.21_Real;
Real BlueFraction = 0.21_Real;

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'd prefer if we don't carry default values within the code. Default values should be in the Default.yml file. I'd rather expose that the value was not passed properly than run with a hard-coded value.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I don't agree with the proposed change. We do this approach in other places of the code (e.g. Vmix, the submeso PR) it's also what MPAS did too. I don't understand the need for another check within classes.

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 am not saying to add a check. I am saying that the fail should be triggered by the check when initializing/creating the class. So a default value here is not necessary except for ctests, which in this case already set the values.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I still don't understand. What check do you mean? Also how is the approach here different than what I see in other classes?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I'm confused because I thought the yaml checks we have are if the config is in the yaml and not a value check. Or maybe this is what you mean? You want to have a check that it's in the yaml? I would guess from the code, but maybe I misunderstand that even with those values it will fail. So I think these values may be redundant.

So maybe I'm understanding your reply. but let me know

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Agreed, this is broader than just this class. I tend to code things up with default values too. I just wonder if once the development is done, it is better to remove the default value assignment to ensure that the value is actually passed from the yaml file rather than inadvertently relying on the hard-coded default value, that's all. I don't expect it to be an issue, just redundant.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Are you basically advocating this section should be

bool Enabled;
Real NearIrFraction;
Real NearIrCoeff;
Real RedFraction;
Real BlueFraction;

?

If so I think I'd still prefer to leave the code as is. The model will still fail if the parameters aren't in the yaml file, I feel having the defaults is nice for clarity.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Basically if the parameter is not in the yaml file, the code should fail. Which I expect it to do given the checks at the class creation. So there should always be a value passed, so a local default value is unnecessary (and potentially confusing if we change default values down the line).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Leaving the code as is is fine by me, it is a preference rather than a requirement.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fair point. I'd prefer though this not be changed here alone. Can you create an issue for discussion? I like having the default, but I definitely see your point about changing of defaults. it would be good to get input from the broader team.


Real FluxAtLayerTop = SurfaceFlux;
for (I4 K = KTop; K <= KBot; ++K) {
Real FluxAtLayerBottom;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Declaring inside the loop seemed strange to me but it seems like for a double/float type it makes no difference to modern compilers.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Yes that is odd. I'll fix it momentarily

@brian-oneill

Copy link
Copy Markdown

@vanroekel The PenetratingShortwaveOnCell functor is written to use within a flat parallelFor wrapper, but contains a serial for loop which has only a superficial dependence between iterations. This is a perfect candidate for hierarchical parallelism. I see two possibilities: the serial for could be changed to a parallelForInner and redundantly calculate the top and bottom fluxes each iteration, or using two parallelForInner loops and scratch memory to calculate the interface fluxes first, then the tendencies.

I'm happy to do the refactor, do I have your permission to push a change to this branch?

Comment thread components/omega/src/ocn/Tendencies.cpp Outdated
const Real TotalFraction = this->PenetratingShortwave.NearIrFraction +
this->PenetratingShortwave.RedFraction +
this->PenetratingShortwave.BlueFraction;
if (std::abs(TotalFraction - 1.0_Real) > 1.0e-5_Real) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
if (std::abs(TotalFraction - 1.0_Real) > 1.0e-5_Real) {
if (Kokkos::abs(TotalFraction - 1.0_Real) > 1.0e-5_Real) {

#include "VertCoord.h"
#include "auxiliaryVars/KineticAuxVars.h"
#include "auxiliaryVars/PseudoThicknessAuxVars.h"
#include "auxiliaryVars/ShortwavePenAuxVars.h"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Does it make more sense to use forcingVars rather than auxiliaryVars? I know surface restoring is still in Aux but that was left over from the early design. Not a deal breaker, just a scope question.

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

This looks great @vanroekel !
Approving based on visual inspection, my comments are all minor. Is this in need of additional testing in polaris?
The ctests coverage looks good but let me know if you need anything else on this.

@vanroekel

Copy link
Copy Markdown
Collaborator Author

Thanks for the review @alicebarthel I'll address your comments now. I think the test coverage is good. I just need to test aurora. I'm turning on the polaris solar test I'm adding (E3SM-Project/polaris#796) in the pr suite so it's getting tested on every machine.

@vanroekel

Copy link
Copy Markdown
Collaborator Author

@brian-oneill I'd be happy to have you do that. Let me address and push fixes to @alicebarthel comments then you can take on the refactor. I'll let you know when ready

@brian-oneill

Copy link
Copy Markdown

The move from aux state to forcing was causing a failure in the FILL_VALUE_TEST, so I just pushed a small change to resolve that. I'm running some tests using the shortwave_pen test from E3SM-Project/polaris#796. Once that all looks good, I'll push the refactor.

@brian-oneill

Copy link
Copy Markdown

Testing

Ran the ctests at cbc3a06 with all tests passing using the following configurations:

  • Chrysalis with intel
  • Frontier with craygnu
  • Frontier with craygnu-mphipcc
  • pm-cpu with gnu
  • pm-gpu with gnugpu

@brian-oneill

Copy link
Copy Markdown

Testing

The following results are from tests using the ocean/column/shortwave_pen test from E3SM-Project/polaris#796 with 3d189cd as the baseline build and cbc3a06 as the PR build

Chrysalis, intel

  • Baseline workdir: /lcrc/group/e3sm/ac.boneill/polaris/baselines/intel_swpen/
  • Baseline build: /lcrc/group/e3sm/ac.boneill/lvrFork/build_intel
  • PR build: /lcrc/group/e3sm/ac.boneill/myFork/sw-refactor_intel
  • PR workdir: /lcrc/group/e3sm/ac.boneill/polaris/10-08-26/sw-refactor_intel
  • Machine: chrysalis
  • Partition: batch
  • Compiler: intel
  • Build type: Release
  • Log: /lcrc/group/e3sm/ac.boneill/polaris/10-08-26/sw-refactor_intel/1304646o.txt
  • Result: All tests passed

Frontier, craygnu

  • Baseline workdir: /lustre/orion/proj-shared/cli115/boneill/polaris/baselines/craygnu_swpen/
  • Baseline build: /lustre/orion/proj-shared/cli115/boneill/lvrFork/build_craygnu
  • PR build: /lustre/orion/proj-shared/cli115/boneill/myFork/sw-refactor_craygnu
  • PR workdir: /lustre/orion/proj-shared/cli115/boneill/polaris/10-08-26/sw-refactor_craygnu
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu
  • Build type: Release
  • Log: /lustre/orion/proj-shared/cli115/boneill/polaris/10-08-26/sw-refactor_craygnu/5638945o.txt
  • Result: All tests passed

Frontier, craygnu-mphipcc

  • Baseline workdir: /lustre/orion/proj-shared/cli115/boneill/polaris/baselines/craygnu-mphipcc_swpen
  • Baseline build: /lustre/orion/proj-shared/cli115/boneill/lvrFork/build_craygnu-mphipcc
  • PR build: /lustre/orion/proj-shared/cli115/boneill/myFork/sw-refactor_craygnu-mphipcc
  • PR workdir: /lustre/orion/proj-shared/cli115/boneill/polaris/10-08-26/sw-refactor_craygnu-mphipcc
  • Machine: frontier
  • Partition: batch
  • Compiler: craygnu-mphipcc
  • Build type: Release
  • Log: /lustre/orion/proj-shared/cli115/boneill/polaris/10-08-26/sw-refactor_craygnu-mphipcc/5638945o.txt
  • Result: All tests passed

pm-cpu, gnu

  • Baseline workdir: /global/cfs/cdirs/e3sm/boneill/polaris/baseline/gnu_swpen/
  • Baseline build: /global/cfs/cdirs/e3sm/boneill/lvrFork/build_gnu
  • PR build: /global/cfs/cdirs/e3sm/boneill/myFork/sw-refactor_gnu
  • PR workdir: /global/cfs/cdirs/e3sm/boneill/polaris/10-08-26/sw-refactor_gnu
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: /global/cfs/cdirs/e3sm/boneill/polaris/10-08-26/sw-refactor_gnu/59572864o.txt
  • Result: All tests passed

pm-gpu, gnugpu

  • Baseline workdir: /global/cfs/cdirs/e3sm/boneill/polaris/baseline/gnugpu_swpen
  • Baseline build: /global/cfs/cdirs/e3sm/boneill/lvrFork/build_gnugpu
  • PR build: /global/cfs/cdirs/e3sm/boneill/myFork/sw-refactor_gnugpu
  • PR workdir: /global/cfs/cdirs/e3sm/boneill/polaris/10-08-26/sw-refactor_gnugpu_1
  • Machine: pm-gpu
  • Compiler: gnugpu
  • Build type: Release
  • Log: /global/cfs/cdirs/e3sm/boneill/polaris/10-08-26/sw-refactor_gnugpu_1/59572867o.txt
  • Result: All tests passed

Aurora, oneapi-ifxgpu

  • Baseline workdir: /lus/flare/projects/E3SM_Dec/bjoneill/polaris/baselines/oneapi-ifxgpu_swpen
  • Baseline build: /lus/flare/projects/E3SM_Dec/bjoneill/lvrFork/build_oneapi-gpu
  • PR build: /lus/flare/projects/E3SM_Dec/bjoneill/myFork/sw-refactor_oneapi-ifxgpu
  • PR workdir: /lus/flare/projects/E3SM_Dec/bjoneill/polaris/10-08-26/sw-refactor_oneapi-ifxgpu_1
  • Machine: aurora
  • Compiler: oneapi-ifxgpu
  • Build type: Release
  • Log: /lus/flare/projects/E3SM_Dec/bjoneill/polaris/10-08-26/sw-refactor_oneapi-ifxgpu_1/8915070o.txt
  • Result: All tests passed

@vanroekel
vanroekel force-pushed the vanroekel/omega/penetrating_solar branch from cbc3a06 to 9cc4be9 Compare October 9, 2026 14:10
@vanroekel

Copy link
Copy Markdown
Collaborator Author

@brian-oneill and @katsmith133 I've rebased and retested on frontier. let me know if you have any further changes you'd like. Otherwise I think this is ready to go.

@brian-oneill brian-oneill 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 was very thorough in testing the changes I pushed (which helped me catch a couple bugs along the way). So other than one minor cleanup below, I approve.

Comment thread components/omega/src/ocn/Tendencies.cpp Outdated
Comment on lines +28 to +29
#include <cmath>
#include <iostream>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

These includes don't look necessary, probably a vestige of developing/debugging?

This branch has not been deployed

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

Labels

enhancement New feature or request Omega

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants