Skip to content

Density-normal damping ​

Temperature and salinity corrections also change the forces that drive the ocean. Through the equation of state, a tracer increment can alter density, stratification, and baroclinic pressure gradients. Density-normal damping (DND) targets the density-modifying part of a constrained tracer increment. (Manuscript, Sections 2.2 and 5.1; Appendix C)

Separate the correction by its density response ​

Work within one active vertical layer. Let i index wet horizontal cells and let sT,sS be the positive correction scales for temperature and salinity. For constrained tracer increments δTi,δSi, define the standardized vector zi and the scaled equation-of-state gradient gi:

zi=(δTi/sTδSi/sS),gi=(sT∂TρisS∂Sρi).

Here ρi is density evaluated at the pre-correction state. Its first-order response is gi⊤zi. Let ni=gi/‖gi‖2 be the local unit density normal where the gradient is nonzero, and let wi be normalized wet-volume weights.

The projection must also respect the two layer budgets. Define the density-normal subspace S as vectors p with a scalar amplitude βi at each cell:

S={p:pi=βini,∑iwiβini=0}.

Let E be the orthogonal projection onto S under the volume-weighted inner product, and I the identity. The decomposition z=Ez+(I−E)z separates the constrained density-normal projection from its orthogonal remainder. Both components retain the zero layer means.

Retain three quarters of the projection ​

For retention factor c∈[0,1], the damped increment is

zc=(I−E)z+cEz.

The paper uses c=3/4. The density-normal projection keeps 75% of its amplitude and 56.25% of its squared norm, before the final paired limiter. Its squared-norm reduction is 1−c2=43.75%. The orthogonal component is retained in full. These percentages describe the projection operation; forecast error is measured separately.

EXPLORE THE PROJECTION
Orthogonal component Density-normal component
0% · removed100% · retained
56.25%of squared projection norm retained

The orthogonal component stays fixed. At the paper setting, the squared projection norm decreases by 43.75%.

Schematic in projection coordinates, before the final paired limiter. The slider illustrates the linear projection identity; it does not run an ocean forecast.

How the code applies it ​

evaluation/density.py first applies the canonical constrained correction, evaluates the EOS gradient at the original tracer state, and obtains a layer-budget-preserving density-normal amplitude. It changes that amplitude by the factor c−1, applies the paired tracer limiter, writes consistent current and backward fields, and recomputes density with the full EOS.

The implementation solves a two-constraint problem per layer using a small Gram matrix and its pseudoinverse. The constraints couple the local density-normal directions across the layer. A pointwise multiplication of all temperature and salinity increments by 0.75 would implement a different operation.

Select it in a frozen forecast ​

bash
python -m neuralpom.evaluation.campaign worker \
  --protocol configs/local/evaluation_100d.json \
  --variant explicit_1day_posttrain_density75 --device cuda:0

The protocol names the DND policy density75. The constrained policy is the Undamped constrained update, and raw selects the unconstrained comparison. See Reproduction to match the configuration, weights, calibration, and reference data.

Read the evidence ​

The manuscript compares DND against Undamped correction and norm-matched uniform damping using the same network weights. This separates the effect of direction from the effect of overall increment size. Its projection diagnostics and forecast comparisons are reproduced in the paper guide, with numerical values in paper/data/policy_comparisons/.