Skip to content

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:

u(x,y,t),v(x,y,t),p(x,y,t)

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_deg and lat_max_deg.

The default benchmark case is two_dimensional_geostrophic_turbulence, a 100 x 100, 2000 km x 2000 km periodic patch.

Usage

bash
PYTHONPATH=src python scripts/benchmarks/run_2d_geostrophic_turbulence.py \
  --output-root outputs/2d_geostrophic_turbulence \
  --steps 10 \
  --snapshot-interval 1

Validate a run directory:

bash
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.

Released under the MIT License.