Repository navigation
Conversation
TestingCTests pass (50/50) on Chrysalis with Intel and OpenMPI, building this branch in: I also ran
Neither run is stable at dt 6 h, so this setup does not show the larger-time-step benefit in design section 5.6. Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly. |
|
Likely will replace #496 so the design is next to the implementation. |
baa0fc2 to
b0b3883
Compare
Temporary. Testers build the parent of this commit.
Temporary. Testers build the parent of this commit.
Testing: aurora, oneapi-ifx, mpichCTests: 57 of 57 passed. Tested the merge of #587 ( Polaris
|
Testing: pm-cpu, gnu, mpichCTests: 57 of 57 passed. Tested the merge of #587 ( Polaris
|
Testing: chrysalis, oneapi-ifx, openmpi (Polaris
|
Testing: pm-gpu, gnugpu, mpichCTests: 57 of 57 passed. Tested the merge of #587 ( Polaris
|
Testing: frontier, craygnu, mpichCTests: 57 of 57 passed. Tested the merge of #587 ( Polaris
|
Testing: frontier, craygnu-mphipcc, mpichCTests: 54 of 57 passed. Tested the merge of #587 ( Polaris
|
b0b3883 to
eecc52e
Compare
mark-petersen
left a comment
There was a problem hiding this comment.
Thanks! This looks great, and it is good to have an implicit Rayleigh drag to avoid time step problems.
I read the documentation and reviewed the code. I ran cTests on perlmutter and frontier for good measure merged into today's develop 1feac2f even though you tested it above.
I ran polaris on perlmutter cpu with omega_pr with default settings (RayleighDamping:Enable: false) and all tests pass. I reran with RayleighDamping:Enable: true and most tests passed. Single term and convergence tests fail, which would be expected. All decomp, restart, and thread tests pass, which is important. Tests with all terms on pass: baroclinic_channel, overflow, sea mount, and realistic_global.
Polaris results with Rayleigh Damping on:
polaris suite -c ocean -t omega_pr --model omega -p ${PSCRATCH}/omega-builds/opr-cpu/build -w ${PSCRATCH}/nightly/opr-cpu-RaleighDrag
/pscratch/sd/m/mpeterse/nightly/opr-cpu-RaleighDrag
Task Runtimes:
0:00:15 FAIL ocean/column/horiz_press_grad/salinity_gradient
0:00:28 PASS ocean/column/vmix_stable
0:00:28 PASS ocean/column/vmix_unstable
0:00:08 FAIL ocean/column/thermo
0:00:05 PASS ocean/planar/baroclinic_channel/split_explicit/10km/decomp
0:00:02 PASS ocean/planar/baroclinic_channel/split_explicit/10km/restart
0:00:02 PASS ocean/planar/baroclinic_channel/split_explicit/10km/threads
0:00:05 PASS ocean/planar/baroclinic_channel/rk4/10km/decomp
0:00:03 PASS ocean/planar/baroclinic_channel/rk4/10km/restart
0:00:02 PASS ocean/planar/baroclinic_channel/rk4/10km/threads
0:00:05 PASS ocean/planar/barotropic_channel/short
0:00:06 FAIL ocean/planar/barotropic_gyre/munk/free-slip
0:00:03 FAIL ocean/planar/manufactured_solution/convergence_both/default
0:00:01 FAIL ocean/planar/manufactured_solution/convergence_both/del2
0:00:01 FAIL ocean/planar/manufactured_solution/convergence_both/del4
0:00:01 FAIL ocean/planar/manufactured_solution/rk4/convergence_both/default
0:00:02 FAIL ocean/planar/merry_go_round/default
0:00:04 PASS ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_2_del4
0:00:03 PASS ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_3
0:00:03 PASS ocean/planar/overflow/linear/zstar/smoke_test_horiz_adv_order_4
0:00:05 PASS ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_4_del4
0:00:03 PASS ocean/planar/overflow/nonlinear/pstar/smoke_test_horiz_adv_order_3_nofct
0:00:04 PASS ocean/planar/seamount/linear/zstar/short
0:00:04 PASS ocean/planar/seamount/nonlinear/sigma/short
0:00:11 FAIL ocean/spherical/icos/cosine_bell/decomp
0:00:03 FAIL ocean/spherical/icos/cosine_bell/restart
0:00:24 PASS ocean/spherical/realistic_global/QU.240km/analysis_members/short
0:00:15 PASS ocean/spherical/realistic_global/QU.240km/restart
0:00:06 PASS ocean/column/ekman
0:00:15 FAIL ocean/column/inertial
0:00:21 PASS ocean/column/kpp_combined
0:00:22 PASS ocean/column/kpp_cooling_with_mixedlayer
|
Thanks @mark-petersen! |
|
@sbrus89, this needs a rebase to resolve a conflict. I'll do that ASAP. |
Rayleigh damping is a linear drag on momentum used during dynamic adjustment to remove the large-amplitude barotropic and inertia-gravity transients radiated by an initial condition that is not in dynamical balance. Omega has no such capability, which blocks generation of E3SM ocean initial conditions (Omega issue E3SM-Project#495). The design applies the damping implicitly, as an additional diagonal contribution to the existing implicit velocity vertical mixing solve in VelVertMixSetupOnEdge, so it is unconditionally stable for any product of the coefficient and the time step. It adds a single, spatially uniform coefficient in a new top-level RayleighDamping config group and introduces no new class or field. The depth-variable and bottom-only variants in MPAS-Ocean are deliberately not carried over. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Add a RayleighDamping config group (Enable, DampingCoeff) that applies a linear drag on normal velocity in every active layer. The damping is treated implicitly as an additional diagonal contribution, DT * DampingCoeff * PseudoThickness, in the velocity vertical mixing tridiagonal system, so it is stable for any DT * DampingCoeff. VertMix::init() reads the new group and aborts on a negative coefficient, and Tendencies aborts if damping is enabled without VelVertMixTendencyEnable. Damping is off by default. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Call VertMix::applyVelVertMixImplicit on a test state and check: analytic decay by 1 / (1 + DT * Coeff) with no viscosity or drag, for a typical and a very large coefficient; bit-for-bit agreement between disabled damping and a zero coefficient; and agreement with a host Thomas-algorithm solve when viscosity, implicit bottom drag and damping are all enabled. The test now initializes the default time stepper, tracers, auxiliary state and equation of state needed by the implicit solve. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
eecc52e to
871ade1
Compare
|
Done! |
Add Rayleigh damping, a linear drag on normal velocity used to spin up initial conditions through dynamic adjustment, following the design in #496. A new
RayleighDampingconfig group, off by default, adds the damping implicitly to the existing velocity vertical-mixing solve, so it is stable for any time step.This branch includes the design commit from #496, which should be merged first.
Fixes #495
Checklist
Documentation:
Linting
Building
Testing
aurora, oneapi-ifx, mpich
chrysalis, oneapi-ifx, openmpi
frontier, craygnu, mpich
frontier, craygnu-mphipcc, mpich
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 testing, analysis and wording above are AI-authored; please check them accordingly.
🤖 Generated with Claude Code