Repository navigation
Conversation
TestingChrysalis, Intel, OpenMPI: CTests 62/62 at 88631ec, including the new parabolic tests in double and single precision, with no new build warnings. With E3SM-Project/polaris#902, run on an earlier build of the same model source, all 10 Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly. |
What the parabolic reconstruction doesAgainst the quasi-analytic reference, At rest, any tendency is error. With T and S quadratic in pressure, Over a stepped sea floor with T and S quadratic in pressure, On the z-star seamount, kinetic energy after 6 days is 3.7 times lower with Scripts: https://web.lcrc.anl.gov/public/e3sm/diagnostic_output/xasaydavis/fv_hpg_ppm_20261025/scripts/ Posted by Claude Code on @xylar's behalf. The figures, analysis and wording above are AI-authored; please check them accordingly. |
Where the two columns' floors are more than a layer apart in pressure, as with terrain-following layers over a steep slope, compare the shallower floor with the deeper column's own interface just below it, then carry the anchor down to the edge's deepest interface with the matched-pressure integrand. Shifting both floors to their mean pressure with one first-order expansion left an error that grows with the cube of the offset and is the same at every depth. Where the floors are within one layer of each other, as on a flat floor, the anchor is unchanged. Partial bottom cells usually keep a sloping floor within one layer too, but not where a thin bottom cell lies entirely above the deeper column's layer of the same index, so realistic meshes change slightly at some edges along steep slopes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A resting, linear-in-pressure state on terrain-following layers whose floors are 6.4 layers apart. The host reference mirrors the new anchor and must reproduce the kernel, the tendency must stay well below the centered scheme's, and the mean-pressure anchor must fail that gate. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The figure's runs predate the anchor treatment for sea floors more than a layer apart, and the residual the old text referred to is no longer described under "Over a sloping sea floor". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Choose the unlimited piecewise parabolic method of Colella and Woodward: interface values from the polynomial through the cumulative integral at the five nearest interfaces, built from divided differences of the layer means, and a mean-preserving parabola through them. Short columns take the polynomial through all their interfaces. - At the ends of a column take the coefficients from that polynomial's own derivatives at the layer midpoint, so a thin bottom cell does not amplify round-off when its reconstruction is extrapolated below the floor. - Record the measurements behind the choice over a parabola fitted to three layer means, and what the default two-point rule costs the parabolic reconstruction. - Say what the reconstruction adds to the tests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The parabolic reconstruction ships first, on its own with the two-cell stencil, then the wide stencil, then the second-order equation-of-state expansion; in each, Polaris gains the change first, written from the design. - The second-order expansion is kept unless measurement with the parabolic reconstruction and the wide stencil shows it does not help. - The defaults stay linear with the two-cell stencil until a realistic configuration shows the gain is worth the cost. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Confirm the parabolic reconstruction in Omega: the unit test, the ten horiz_press_grad variants against the Polaris kernel, and the seamount for six days. - On the sigma seamount it makes the instability grow three to five times faster; record that where the instability is described. - Qualify the third-order statement of section 6.7, whose refinement holds the displacement at a fixed number of layers, against the rates the unit test measures at fixed tilt. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
VerticalReconstruction: ppm now selects the unlimited piecewise parabolic method that the design specifies. Each layer's parabola keeps the layer mean and takes, at its interfaces, the derivative of the polynomial through the cumulative integral at the five nearest interfaces, built from divided differences of the layer means. Short columns use the polynomial through all their interfaces, and at the ends of a column the coefficients come from that polynomial's own derivatives, so a thin bottom cell does not amplify round-off when it is extrapolated below the floor. The column scan's three evaluation sites -- the integrand of each edge layer, the anchor's short integrals and its carry-down -- all go through one function, reconEval, so they cannot describe different water. The linear reconstruction is evaluated exactly as before and remains the default. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The estimator on a single column: a quadratic reproduced everywhere, beyond the column included; a cubic met at every interface; the layer integral of the deviation; columns of one to three layers; and a thin bottom cell extrapolated below the floor, against the interface form, which this test shows amplifying round-off. - The matched-pressure integrand zero at every quadrature point on a quadratic, with a cubic as the control. - On the two-column state: the exactness gate on linear and quadratic profiles in both precisions, the linear reconstruction as the control, the host assembly's fidelity to the kernel, and a cubic converging faster than with the linear reconstruction. The host assembly now evaluates the reconstruction through reconEval, as the kernel does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The user guide gives VerticalReconstruction's two values and what 'ppm' makes exact. The developer guide describes how the coefficients are formed, why the end layers take theirs from the polynomial's own derivatives, and that every evaluation goes through reconEval, and it lists the curvature arrays. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
88631ec to
ae76f38
Compare
Testing on chrysalisTested the merge of #636 (
chrysalis, intel, openmpiPolaris
|
| Task | Scheme | doStep (s) |
pressureGradTerm (s) |
doStep vs Centered |
doStep vs FV linear |
|---|---|---|---|---|---|
| rk4 | Centered | 52.7 | 0.67 | ||
| rk4 | FV linear | 63.6 | 4.69 | +20.9% | |
| rk4 | FV ppm | 77.0 | 12.50 | +46.1% | +20.9% |
| split_explicit | Centered | 6.82 | 0.05 | ||
| split_explicit | FV linear | 8.02 | 0.37 | +17.6% | |
| split_explicit | FV ppm | 9.18 | 1.02 | +34.6% | +14.5% |
With ppm, pressureGradTerm takes 2.7× as long as with linear. In rk4 it accounts for 7.8 s of the 13.3 s increase in doStep; the rest falls outside Omega's timers, as for FV linear against Centered in #658. Runs: /lcrc/group/e3sm/ac.xylar/polaris_1.1/chrysalis/omega_pr_test/pr636-ae76f38/chrysalis_intel/ppm_perf
Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.
Testing on auroraThe intel row tested the merge of #636 ( The intelgpu row was rerun after this PR's test-only fixes, testing the merge of #636 (
aurora, intel, mpichPolaris
|
| Row | Task | Scheme | doStep (s) |
pressureGradTerm (s) |
doStep vs Centered |
doStep vs FV linear |
|---|---|---|---|---|---|---|
| intel | QU240 rk4 | Centered | 82.3 | 1.03 | ||
| intel | QU240 rk4 | FV linear | 92.2 | 4.03 | +12.1% | |
| intel | QU240 rk4 | FV ppm | 106.0 | 11.87 | +28.9% | +15.0% |
| intel | QU240 split_explicit | Centered | 9.28 | 0.09 | ||
| intel | QU240 split_explicit | FV linear | 10.29 | 0.33 | +10.9% | |
| intel | QU240 split_explicit | FV ppm | 11.46 | 0.99 | +23.6% | +11.4% |
| intelgpu | QU240 rk4 | Centered | 12.23 | 0.18 | ||
| intelgpu | QU240 rk4 | FV linear | 13.17 | 1.22 | +7.6% | |
| intelgpu | QU240 rk4 | FV ppm | 13.90 | 1.98 | +13.7% | +5.6% |
| intelgpu | QU240 split_explicit | Centered | 2.55 | 0.01 | ||
| intelgpu | QU240 split_explicit | FV linear | 2.62 | 0.10 | +2.7% | |
| intelgpu | QU240 split_explicit | FV ppm | 2.68 | 0.16 | +5.3% | +2.5% |
| intelgpu | EC30to60E2r2 split_explicit | Centered | 4.40 | 0.02 | ||
| intelgpu | EC30to60E2r2 split_explicit | FV linear | 4.53 | 0.12 | +3.0% | |
| intelgpu | EC30to60E2r2 split_explicit | FV ppm | 4.61 | 0.20 | +4.8% | +1.7% |
With ppm, pressureGradTerm takes 2.9-3.0× as long as with linear on the CPU and 1.6× on the GPU. Runs: /lus/flare/projects/E3SM_Dec/xylar/polaris_1.1/aurora/omega_pr_test/pr636-ae76f38/aurora_{intel,intelgpu}/ppm_perf
Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.
Testing on pm-cpu and pm-gpuThe pm-cpu row tested the merge of #636 ( The pm-gpu row was rerun after this PR's test-only fixes, testing the merge of #636 (
pm-cpu, gnu, mpichPolaris
|
| Row | Task | Scheme | doStep (s) |
pressureGradTerm (s) |
doStep vs Centered |
doStep vs FV linear |
|---|---|---|---|---|---|---|
| pm-cpu | QU240 rk4 | Centered | 163.11 | 2.20 | ||
| pm-cpu | QU240 rk4 | FV linear | 185.01 | 11.10 | +13.4% | |
| pm-cpu | QU240 rk4 | FV ppm | 203.16 | 21.39 | +24.6% | +9.8% |
| pm-cpu | QU240 split_explicit | Centered | 18.24 | 0.18 | ||
| pm-cpu | QU240 split_explicit | FV linear | 20.51 | 0.92 | +12.5% | |
| pm-cpu | QU240 split_explicit | FV ppm | 21.95 | 1.77 | +20.4% | +7.0% |
| pm-gpu | QU240 rk4 | Centered | 9.55 | 0.20 | ||
| pm-gpu | QU240 rk4 | FV linear | 10.30 | 1.00 | +7.9% | |
| pm-gpu | QU240 rk4 | FV ppm | 11.32 | 2.02 | +18.6% | +9.9% |
| pm-gpu | QU240 split_explicit | Centered | 1.50 | 0.02 | ||
| pm-gpu | QU240 split_explicit | FV linear | 1.56 | 0.08 | +3.8% | |
| pm-gpu | QU240 split_explicit | FV ppm | 1.64 | 0.17 | +9.3% | +5.3% |
| pm-gpu | EC30to60E2r2 split_explicit | Centered | 3.59 | 0.02 | ||
| pm-gpu | EC30to60E2r2 split_explicit | FV linear | 3.67 | 0.09 | +2.4% | |
| pm-gpu | EC30to60E2r2 split_explicit | FV ppm | 3.77 | 0.19 | +5.2% | +2.7% |
With ppm, pressureGradTerm takes 1.9× as long as with linear on pm-cpu and 2.0× on pm-gpu. Runs: /pscratch/sd/x/xylar/polaris_1.1/omega_pr_test/pr636-ae76f38/pm-{cpu_gnu,gpu_gnugpu}/ppm_perf
Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.
…lling terms The parabolic harness fidelity check held the host assembly to the kernel within a relative 1e-10 of the cubic profile's tendency. That tendency is itself a residual of terms that cancel, about 1e7 times their round-off, so the tolerance was tighter than one rounding of those terms. On Aurora's Intel GPUs the kernel rounds differently from the host, and the two differed by 1.9e-19 m/s2, 0.003 of that round-off, which failed the check. The check now uses the absolute tolerance of the linear reconstruction's fidelity check, 8 eps times the scale of the cancelling terms, still about 1e-6 of the residual. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GCC 14 reported -Wfree-nonheap-object, in both precisions, on the vector of probe pressures that testParabolicReconstruction grows for each layer. There are at most nine, so a fixed array holds them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Testing summaryAll 5 rows have been run: Chrysalis, Aurora, Perlmutter. Every CTest and coupled test passes. Every row has the same 3 expected
Two test-only fixes followed the first runs, and the GPU rows were rerun with them (the Aurora and Perlmutter comments above are updated):
Cost of ppmWith ppm, the pressure gradient takes 1.6–3× as long as with linear reconstruction. Per time step, ppm adds 7–21% to FV linear's cost on CPUs, against 11–21% for FV linear over Centered. On GPUs it adds 2–10%. On the GPU EC30to60E2r2 runs it adds only 2–3%, so ppm is about 5% slower than Centered there. Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly. |





Add a parabolic vertical reconstruction to the FiniteVolume pressure gradient, selected with VerticalReconstruction: ppm. It makes the scheme exact for resting profiles quadratic in pressure, not only linear ones, and it is more accurate than the linear reconstruction on most of the Polaris two-column tests. The linear reconstruction stays the default until a realistic configuration shows the gain is worth the cost. Builds on #635 and the design in #448; only the last six commits are new.
The design is revised here rather than in #448, which records it as it stood when the second-order scheme merged. The first three new commits update
PGradHighOrder.md(rendered).On sigma layers over the seamount,
ppmmakes the existing instability grow faster, which is one more reasonlinearstays the default.The Polaris reference and tests are in E3SM-Project/polaris#902.
Checklist
Documentation:
Linting
Building
Testing
aurora, intel, mpich
aurora, intelgpu, mpich
chrysalis, intel, openmpi
pm-cpu, gnu, mpich
pm-gpu, gnugpu, mpich
Provide relevant details in a comment to the PR titled
TestingNew tests:
Posted by Claude Code on @xylar's behalf. The wording above is AI-authored; please check it accordingly.
🤖 Generated with Claude Code