Arakawa staggered grid

Grid family
arakawa
Kind
grid
Source
src/grids/arakawa.jl
Tags
#grid #staggered #arakawa #c-grid #b-grid #shallow-water

Description

The Arakawa family is not a standalone topology — it is a stagger wrapper around a base curvilinear grid (Cartesian or lat-lon today; cubed-sphere is on the roadmap). It assigns prognostic variables to one of four canonical locations per cell:

LocationVariable held thereUsed by
cell_centerscalars (mass h, pressure, tracers)A, B, C, D
face_xu-component of velocity (C/D)C
face_yv-component of velocity (C/D)C
vertexu, v together (B)B

The Arakawa A/B/C/D distinction is just the choice of which subset of locations carries u, v, and h:

  • A-grid: all variables co-located at cell centers (simple but hosts checkerboard modes for the divergence operator)
  • B-grid: h at center, both u and v at vertices
  • C-grid: h at center, u at face_x, v at face_y (good for wave equations and divergence-conservative discretizations)
  • D-grid: dual of C — u and v swapped between face_x and face_y

ESD currently seeds the C-grid via the divergence_arakawa_c rule, which demonstrates the stagger_enum / requires_locations / emits_location fields used to make stagger-position selectors authoritative in the rule schema.

Visualization

Arakawa A/B/C/D stagger comparison
Variable placement on a single cell for each Arakawa stagger: A (all co-located), B (uv on vertices), C (u on face_x, v on face_y), D (the dual of C).

Trait coverage

Registered against AbstractStaggeredGrid (which sits beneath AbstractCurvilinearGrid). The base-grid trait calls all delegate to the underlying Cartesian / lat-lon implementation; stagger-aware methods like location_centers(grid, :face_x) add the per-location offset.

See also

  • divergence_arakawa_c
  • Arakawa & Lamb (1977), Methods in Computational Physics 17:173–265
  • discretizations/SELECTOR_KINDS.md