Skip to content

Implicit double-gyre numerical version policy

Active version

The active accelerated implicit core identifies itself as implicit-dg-v2-aligned-1e5. It retains the V2 solver acceleration stack, uses the native warm start and spectral preconditioner, and tightens the default relative eta-solver tolerance from the archived V2 value of 103 to 105. The Smagorinsky forward operator uses the pre-V3 definition

νS=CSΔxΔyI,

where I is the non-negative strain invariant. In particular, I=0 must produce νS=0 unless an experiment explicitly requests a non-zero aam_min.

Training logs print the resolved core class and NUMERICS_VERSION. Data, training, and inference manifests must record this value together with the eta solver tolerance, preconditioner, Triton flags, CUDA Graph flags, and graph eta iteration cap.

No-spatial-Shapiro data-generation variant

The standard V2-Align operator keeps its historical horizontal Shapiro filters enabled with coefficient 0.05. Controlled data-generation experiments may set NEURALPOM_IMPLICIT_SPATIAL_SHAPIRO=off to disable all three spatial applications together: barotropic elevation, internal velocity, and tracers. This switch does not alter the Robert-Asselin time filter, elliptic solver, forcing, closure, time step, or initialization. Such runs remain V2-Align configuration variants rather than new core implementations and must use a separate output root. Their root manifest and per-member provenance must record the requested switch and all three resolved Shapiro coefficients.

Archived V3 operator

The retired V3 operator replaced I with max(I,108). That expression introduced a positive forward viscosity at zero strain and changed the double-gyre trajectory. The V3 source is preserved by the annotated Git tag archive/implicit-v3-safe-sqrt-20260818; it must not be imported or copied into active training code.

Archived legacy V2 profile

The historical V2 profile used a native warm start, spectral preconditioning, and a relative eta-solver tolerance of 103. It remains available only through the annotated Git tag archive/implicit-v2-legacy-1e3-20260819 for old checkpoint reproduction. New training and matched inference use the active 105 profile. A historical checkpoint must not be silently moved from the archived profile to the active profile.

The boundary, forcing, and numerics-provider refactors remain active because historical replay found no additional double-gyre numerical breakpoint after the V3 safe_sqrt change. They are infrastructure, not a separate numerical version.

Compatibility rule

Checkpoints are coupled to the core used for training. A run may use V1, legacy V2, or active V2 only when the chosen version and resolved solver options are explicit in its manifest; silently switching a trained checkpoint between them is prohibited. New solver-alignment changes must pass the fixed V1 replay gate before becoming defaults.

Released under the MIT License.