Geostrophic 2D Core
neuralpom.cores.geostrophic_2d is an isolated two-dimensional periodic dynamics core for mesoscale-style geostrophic turbulence experiments. It is not a hydrostatic POM case and should not be implemented as an implicit case hook.
State
The core advances only horizontal velocity and pressure:
The grid is a double-periodic Arakawa-C layout with velocity on staggered faces and pressure at cell centers. Incompressibility is enforced by a projection step.
Numerics
- Third-order Runge-Kutta stepping for the advective, Coriolis, and viscosity tendencies.
- Periodic pressure projection using either FFT or PCG.
- Constant or Smagorinsky horizontal viscosity.
- Direct latitude-dependent Coriolis parameter between
lat_min_degandlat_max_deg.
The default benchmark case is two_dimensional_geostrophic_turbulence, a 100 x 100, 2000 km x 2000 km periodic patch.
Usage
PYTHONPATH=src python scripts/benchmarks/run_2d_geostrophic_turbulence.py \
--output-root outputs/2d_geostrophic_turbulence \
--steps 10 \
--snapshot-interval 1Validate a run directory:
PYTHONPATH=src python scripts/analysis/validate_2d_geostrophic_turbulence.py \
outputs/2d_geostrophic_turbulence/<run-name>Mainline Boundary
This core is intentionally separate from implicit:
- It has no sigma vertical coordinate.
- It has no hydrostatic free-surface/baroclinic mode splitting.
- It has no POM tracer, turbulence-closure, or bathymetry state.
Future 2D hybrid training should build adapters around this core family instead of adding 2D-specific branches to the hydrostatic POM core.
