gravimetry
Satellite gravimetry from instrument to map. Model the satellites, from today's GRACE-FO to
missions with quantum (cold-atom) sensors, and simulate what gravity field they recover. Then
turn the monthly fields of 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 each month with geopotential::read_gfc and the low-degree corrections
with technotes::read_tn14 and read_tn13. The
full chain
replaces C̄20, C̄30 and degree 1 before subtracting the baseline.
Example: a quantum accelerometer against GRACE-FO
Instrument noise, reproducing Figure 1 of Zingerle et al. (2024) from its equations.
use AtomInterferometer;
use ;
// A cold-atom accelerometer like CARIOQA's: 1 s between pulses, 80% contrast,
// 100,000 atoms per shot, one shot every 3.5 s.
let atoms = AtomInterferometer ;
let white = atoms.acceleration_asd; // about 2.3e-10 m/s² per √Hz
// Noise of a satellite pair at 0.1 mHz, the longest wavelengths, in m/s² per √Hz.
let quantum = pair_noise;
let today = pair_noise;
println!; // 3.2e-10 against 1.0e-9
assert!;
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.
What is inside
| Item | What it does |
|---|---|
missions |
Noise spectra of electrostatic and cold-atom accelerometers and laser ranging, and of a whole satellite pair (Zingerle et al. 2024, eqs. 1–8) |
atom |
Phase, shot noise, and accelerometer and gradiometer noise of a cold-atom sensor in orbit (Lévèque et al. 2021; CARIOQA; Trimeche et al. 2019) |
gradiometry |
The error of each coefficient a gradiometer mission like GOCE achieves |
sim |
A closed-loop simulation of a GRACE-type pair: simulate, estimate the field back, and compare its errors with the predicted ones |
noise |
Noise with any spectrum, its whitening, and the FFT |
technotes |
NASA's TN-14 (C̄20 and C̄30 from laser ranging, Loomis et al. 2020) and TN-13 (degree 1, Sun et al. 2016), from PO.DAAC |
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 |
mass_coefficients |
Spherical-harmonic coefficients of point masses |
transport_weights |
The smallest mass flow that carries a change between months |
coseismic |
Uplift and gravity change of faults in an elastic half-space (Okada 1985; Okubo 1992); reads USGS coulomb.inp files and corrects for seawater pushed aside by seafloor uplift |
kalman |
A Kalman smoother for series with gaps and per-month errors, and a maximum-likelihood fit of its settings (Rauch et al. 1965) |
atmosphere |
Sound, buoyancy and Lamb waves in the air, the mass of a pressure change, and the ocean's forced response to a fast pressure pulse (Wright et al. 2022; Proudman 1929) |
The simulated error of four mission classes, from today's to a quantum pair, against the errors of a real month.
Applications
- Drought and groundwater. GRACE and GRACE-FO mass change feeds weekly drought indicators and statutory groundwater reporting; the processing chain here is the one those products use.
- Ice sheets and sea level.
examples/ice_and_sea_level.rsturns Greenland's published mass trend into its sea-level contribution. - Earthquakes.
coseismicmodels the gravity change of a fault and reads USGS finite-fault files;prompt_leadgives how far ahead of the P-wave a light-speed gravity signal arrives. - Site surveys and monitoring.
localgives the gravity and gradient of a buried void or dense body, and the averaging time a quantum gravimeter needs to resolve it. - Mission design.
missions,atomandsimsize the sensors and simulate what field a satellite pair recovers, including cold-atom instruments.
How it is checked
- Noise models: they reproduce Figure 1 of Zingerle et al. (2024).
- Cold-atom sensors: they reproduce the published CARIOQA, GRICE and Trimeche et al. (2019) sensitivities.
- Gradiometry errors: the closed form matches brute-force least squares.
- Simulator: it recovers a known field exactly without noise; with noise, a χ² test confirms that its actual errors match its predicted ones.
- Technical notes: real NASA files, excerpted in
tests/data. - 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, and 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; time-variable gravity in the simulator, so no temporal aliasing.
One of eight crates in physica:
physica (all of them, plus cross-domain analogies) ·
metrology (constants) ·
geopotential (the gravity field) ·
gravimetry (missions and GRACE) ·
gravitational (waves) ·
gravitics (frontier gravity) ·
magnetics (magnetism and MHD) ·
plasmoid (fusion plasma).