gravimetry
Turn monthly gravity fields from GRACE and GRACE-FO into maps of water storage, and model the
gravity change an earthquake causes. Built on
geopotential.
Water stored on land and in the ocean in July 2026, against the 2004–2009 average.
Install
Example: from a monthly field to water height
The standard chain of the GRACE Tellus maps (Landerer & Swenson 2012):
- subtract a baseline;
- remove the stripes;
- smooth over 300 km;
- convert to centimetres of water.
use ;
let = ;
// A month and the baseline it is compared with (here: one changed coefficient).
let mut month = zeros;
month.set;
let baseline = zeros;
let change = anomaly;
let change = destripe;
let change = smooth;
let love = love_numbers.unwrap;
let water = change.grid;
println!; // 19 mm
With real data, read the month and the technical notes with
gravity-field. The
full chain
also replaces C̄20, C̄30 and degree 1.
Example: the gravity change of an earthquake
Left: the gravity step the July 2025 Kamchatka earthquake left in GRACE-FO. Right: the USGS fault model through the same filter, computed with this crate.
use ;
// A thrust fault: 100 × 50 km, 8 m of slip, its centre 20 km deep.
let fault = Fault ;
// Uplift and gravity change at the surface straight above it.
let above = fault.surface_change;
println!; // 1.20 m, +115 µGal
// What a satellite sees: surface masses on a grid, as coefficients, smoothed like the data.
let lats: = .map.collect;
let lons: = .map.collect;
let at_sea = ;
let masses = surface_masses;
let field = mass_coefficients;
let field = smooth;
For a real earthquake, coseismic::read_coulomb reads the coulomb.inp file that the
USGS publishes with every finite-fault model.
Example: fill the gaps in a monthly record
The GRACE record has gaps: missing months, and almost a year between the two missions. The Kalman smoother treats each coefficient as a slowly wandering signal plus noise. It gives the best estimate and its uncertainty for every month, gaps included.
use ;
// Five months, the middle one missing, each observed with an error of 1.
let times = .map;
let observed = ;
// A signal that varies by about 2 over about 6 months.
let result = smooth;
println!;
kalman::fit picks the signal's size and correlation time, and checks the stated errors, by
maximum likelihood over many series at once.
The smoother fitted to 24 years of monthly fields: how far COST-G's stated errors need scaling per degree, and how well withheld months are predicted.
What is inside
| Item | What it does |
|---|---|
love_numbers |
How much the solid Earth sags under a load, per degree (Wahr et al. 1998, Table 1) |
gaussian_weights, smooth |
Averaging over a chosen radius (Wahr et al. 1998, after Jekeli 1981) |
destripe |
Removes the north–south stripes of GRACE noise (Swenson & Wahr 2006), ported from gravity-toolkit |
mean, anomaly |
Baseline means and differences, across GM and radius conventions |
coseismic |
Uplift and gravity change of faults in an elastic half-space (Okada 1985; Okubo 1992). It also reads USGS coulomb.inp files and corrects for seawater pushed aside by seafloor uplift |
mass_coefficients |
Spherical-harmonic coefficients of point masses |
kalman |
A Kalman smoother for series with gaps and per-month errors, and a maximum-likelihood fit of its settings (Rauch et al. 1965) |
transport_weights |
The smallest mass flow that carries a change, the flow field in the GRACE Mass Atlas |
atmosphere |
Sound, buoyancy and Lamb waves in the air (the acoustic-gravity dispersion relation), the mass of a pressure change, and the ocean's forced response to a fast pressure pulse (Wright et al. 2022; Proudman 1929) |
How it is checked
- Love numbers: against the published table.
- Smoothing weights: against their closed-form limit.
- Stripe removal: on synthetic patterns.
- Fault model:
- Okada's (1985) published check values;
- mass conservation: a buried fault's equivalent mass sums to zero;
- on the 2025 Kamchatka fault model, its uplift matches the USGS's own surface displacement with r = 0.89.
- Point masses: their potential matches Newton's law.
- Kalman smoother:
- it matches the exact Gaussian-process solution to 1e-10;
- its fit recovers the settings of simulated data;
- on the real record, withheld months are predicted with calibrated errors.
- Atmosphere: the isothermal values at 250 K (sound 317 m/s, cut-off 0.0217 rad/s, buoyancy 0.0196 rad/s); the Lamb wave is trapped at every wavelength; the Tonga Lamb speed of 318.2 m/s is sound at 252 K; a slow pressure pulse gives the inverse barometer.
Not included yet: glacial isostatic adjustment, DDK filters, basin averages and leakage corrections.
Part of quantum-gravimeter.