An interactive Geophysical Fluid Dynamics Textbook Notation

Ch 6. Rotating shallow water & geostrophic adjustment

Overview

Perturb a rotating fluid away from rest and two things happen at once: fast inertia-gravity waves radiate the imbalance outward, and rotation traps a piece of the disturbance behind as a standing, balanced flow. This is geostrophic adjustment, and it is the mechanism by which almost every localized disturbance in the atmosphere or ocean — a convective burst, a wind-stress event, an eddy shed from an unstable current — settles into the slowly evolving balanced motion that the rest of this book is about. The deformation radius LR=c/f0L_R=c/f_0 is the scale that decides the outcome: disturbances much smaller than LRL_R disperse almost entirely as gravity waves, while disturbances much larger than LRL_R survive almost unchanged as geostrophic flow. What is conserved throughout — and what therefore predicts the balanced end state before you integrate a single time step — is the linear potential vorticity q=ζ−η^q=\zeta-\hat\eta.

The model

Notebook: notebooks/ch06_geostrophic-adjustment.py → exported to /nb/ch06_geostrophic-adjustment.html. Governing equations use the symbols in notation:

η^t+u^x+v^y=0,u^t−f^v^=−η^x,v^t+f^u^=−η^y,f^=1+β^ (y−y0).\hat\eta_t+\hat u_x+\hat v_y=0,\qquad \hat u_t-\hat f\hat v=-\hat\eta_x,\qquad \hat v_t+\hat f\hat u=-\hat\eta_y, \qquad \hat f=1+\hat\beta\,(y-y_0).

Pseudo-spectral on a doubly-periodic domain (gfdlib.spectral.Grid), classical RK4 (gfdlib.timestep.rk4 — the system is exactly linear, so no integrating factor is needed), with the new gfdlib.shallowwater module supplying the RHS and two potential-vorticity primitives: potential_vorticity (diagnose q=ζ−η^q=\zeta-\hat\eta) and invert_pv (solve (∇2−1)ηbal=q(\nabla^2-1)\eta_{bal}=q for the balanced height field carrying a given PV). Three presets: a small-scale burst (σ≪LR\sigma\ll L_R), a large-scale surge (σ≫LR\sigma\gg L_R), and a β\beta-plane run that shows the balanced remnant drift westward as a Rossby wave.

What to look for

  1. Waves win at small scales. Run the small-scale burst preset and scrub the frame slider from the start: rings of inertia-gravity waves carry essentially the whole height anomaly away (at the nondimensional wave speed c=1c=1 — check the ring radius against elapsed time), and the final η\eta is nearly flat. The overlay of ηbal=\eta_{bal}= invert_pv(q0)(q_0) predicted that end state before the run started — compare them at the last frame.
  2. Balance wins at large scales. Switch to the large-scale surge preset: now most of the height anomaly survives, and what changes instead is the wind field, which spins up into a rim current around the anomaly. Same equations, same initial shape — only σ/LR\sigma/L_R differs.
  3. Energetics of the remnant. Watch the energy panel in the large-scale case: even when balance “wins,” at most one third of the released potential energy ends up in the balanced flow — the rest radiates. Rossby’s classic result, visible as the gap between the curves.
  4. The remnant is not stuck. In the β-plane preset the balanced remnant itself drifts westward — adjustment hands the disturbance off to Rossby-wave dynamics (Ch. 8–9), which is where its story continues.

Prefer to run it yourself? Download as a Jupyter notebook — it installs its own dependencies in the first cell. The sliders are static in Jupyter; edit value= and re-run to change a parameter.

Both fluids

Exercises

  1. (analytic) Starting from q=ζ−η^q=\zeta-\hat\eta and the momentum/continuity equations, derive qt=−β^v^q_t=-\hat\beta\hat v. Confirm it reduces to exact pointwise conservation on the ff-plane.
  2. (computational) Modify ch06_geostrophic-adjustment.py to add linear (Rayleigh) drag −ru^,−rv^-r\hat u,-r\hat v to the momentum equations. Does qq still evolve as qt=−β^v^q_t=-\hat\beta\hat v, or does drag act as an additional PV source? Check against the modified notebook’s own diagnostic.
  3. (exploratory) Sweep σ/LR\sigma/L_R finely between the “small” and “large” presets and plot the fraction of η0\eta_0’s peak amplitude that survives in ηbal=\eta_{bal}= invert_pv(q0). At what σ/LR\sigma/L_R does the survival fraction cross 50%?

Further reading

Vallis, AOFD 2nd ed., §3.7–3.9 (geostrophic adjustment) and §5.2 (linear PV); Gill, Atmosphere-Ocean Dynamics, ch. 7; Salmon, Lectures on GFD, §2.4; Rossby (1938), J. Mar. Res. 1, 239–263.