rainier3d: a reproducible digital model of the subsurface and surface of Mount Rainier, Washington
Abstract.
Mount Rainier is an active volcano of the Cascade Volcano Arc that presents diverse geohazards relies on one-dimensional velocity models, and the regional three-dimensional models of Cascadia do not resolve the edifice, its altered core, its glaciers or the near surface. rainier3d is an open digital model of Mount Rainier and the West Rainier Seismic Zone (WRSZ) that places subsurface, near-surface, surface, geodetic and hydrological layers on one set of grids, over a 70 × 75 km box from the ground to 20 km below sea level. Its inputs are fetched by script from public archives, cached with checksums and rebuilt by numbered scripts in one environment; four model inputs and four viewer files are read from local or delivered copies. Every parameter names its source or is marked as an author choice.
The subsurface model gives P- and S-wave speed, density, attenuation, porosity and permeability on three grids, from 250 m × 50 m to 1 km. Mapped geology is extended to depth by rules, near-surface alteration comes from a helicopter electromagnetic survey, and a critical-zone model resolves soil, Quaternary cover and weathered rock in the top 150 m with the same water table and pore pressure as the rock below. The result is merged with the USGS Cascadia velocity model v1.7 and CRESCENT Gen0 in the wavenumber domain and calibrated on 1823 P and 1280 S analyst picks from 88 Pacific Northwest Seismic Network (PNSN) earthquakes, with every event relocated in every trial model. On 44 events withheld from the fit, the root-mean-square (RMS) residual falls from 0.125 to 0.094 s for P and from 0.355 to 0.188 s for S; the PNSN one-dimensional model gives 0.131 and 0.263 s. A local-earthquake tomography of 3770 earthquakes below the critical zone, given in the supplement, lowers the held-out residuals further, to 0.072 s for P and 0.121 s for S. Relocated with NonLinLoc, the 371 PNSN earthquakes of magnitude 1 or larger from 2023 to 2025 fit better in rainier3d than in the one-dimensional model (median RMS 0.106 against 0.119 s for 340 well-located events).
The surface layers describe elevation, geology, glacier thickness, soil properties, depth to rock, water table, Vs30, land cover, vegetation structure, terrain geometry and satellite imagery. GNSS strain rates and the strain of the edifice load are given on a 500 m grid in the model volume, and a catalogue holds 1,649 landslide, avalanche and debris-flow events, 19 of them located seismically, with the outlines of 463 debris flows and three lahar deposits.
The derived products are distributed under CC-BY 4.0 [TODO: Zenodo version DOI of the products and of the software]. A command-line and Python client writes them in the formats of eikonal solvers, NonLinLoc, SPECFEM3D, PyLith and the EarthScope Earth Model Collaboration, and a web viewer shows them in three dimensions.
1 Introduction
Mount Rainier is the most hazardous volcano in the Cascade Range, for two reasons. Its hydrothermally weakened edifice is covered by glaciers, and its lahars reach populated valleys (Hoblitt et al., 1998; Scott et al., 1995). Seismic monitoring at Rainier relies on one-dimensional velocity models, with station corrections absorbing the effects of topography and near-surface structure. The regional three-dimensional models of Cascadia resolve the crust at wavelengths of several kilometres or more (He et al., 2026; Wirth et al., 2025). They do not resolve the volcanic edifice, its altered core, its glaciers or the shallow units exposed around it.
Integrated models of a region exist elsewhere, but rarely for a volcano. Southern California has community velocity, fault and rheology models maintained by the Statewide California Earthquake Center (SCEC) and served through one software framework (Hearn et al., 2026; Lee et al., 2014; Plesch et al., 2007; Shaw et al., 2015; Small et al., 2017), and Cascadia has the USGS velocity model and the CRESCENT community model (He et al., 2026; Stephenson et al., 2017; Wirth et al., 2025). Instrumented volcanoes have three-dimensional velocity models from local tomography, at Yellowstone, Kīlauea and Mauna Loa, Mount St. Helens, Etna and Campi Flegrei (Calò and Tramelli, 2018; Huang et al., 2015; Kiser et al., 2016; Lin et al., 2014; Totaro et al., 2024; Ulberg et al., 2020). Rainier itself has been imaged by local-earthquake tomography, receiver functions with surface waves, and magnetotellurics (Flinders and Shen, 2017; McGary et al., 2014; Moran et al., 1999; Obrebski et al., 2015). Earth System Science Data has published three-dimensional geological and crustal compilations (Ahlers and Henk, 2026; Livani et al., 2023; Michailos et al., 2023). Each of these describes one kind of property, or compiles models without a scripted path from the archives to the grid. rainier3d puts subsurface, near-surface, surface, geodetic and hydrological layers on one grid, and rebuilds and checks them from the archives by script, in the spirit of the FAIR principles (Wilkinson et al., 2016). Digital twins of the Earth system assimilate observations as they arrive (Bauer et al., 2021); rainier3d is the static, reproducible state on which such a scheme for a volcano can start.
rainier3d connects these scales in one model with three properties:
- it is tied to the mapped geology at the surface: the 149 map symbols
of the Washington 1:100,000 geologic map in the box (Washington Geological
Survey, 2026a) are assigned to 14 surface model units by the
rules of
configs/units.yaml(S1) and extended to depth by explicit geometry rules (S3, Sect. 5), and an invariant test requires the top rock cell of the finest level (L1) to carry the mapped unit in at least 95% of bedrock columns; - it is consistent with regional tomography at depth: S5 merges the
geology model in the wavenumber domain with the USGS Cascadia velocity
model v1.7 down to 9.9 km below the ground (Wirth et al., 2025) and CRESCENT Gen0
below it (He et al.,
2026), blended over 8–16 km, keeping the regional model at
wavelengths longer than a cutoff of 6 km at the surface, 10 km at 2 km
depth and 20 km at 10 km depth (placeholder values in
configs/domain.yaml), the geology model alone above 300 m depth, and a linear taper between 300 and 1000 m; the root-mean-square (RMS) difference of ln V between the low-passed fused and regional models is at most 0.012, against a tolerance of 0.03; - it reproduces the travel times of the Pacific Northwest Seismic Network (PNSN): calibrated in S13 on 1823 P and 1280 S analyst picks from 88 PNSN earthquakes (M 2.0–3.4, 1 January 2015 to 1 September 2026) (U.S. Geological Survey, 2026d), each relocated in 3D in every trial model, it lowers the RMS residual of held-out events after relocation from 0.125 to 0.094 s for P and from 0.355 to 0.188 s for S (Sect. 5).
The same grids carry the surface layers that describe soil, water, vegetation and ice, the geodetic strain field, and the stress of the edifice load. The model is a digital model rather than a digital twin: it assimilates no time-dependent data. Only the GNSS product is refreshed on a schedule.
This paper describes, in order:
| Section | Content |
|---|---|
| Sect. 2 | Domain and workflow |
| Sect. 3 | How the data are compiled deterministically, and how to rebuild them |
| Sect. 4 | Surface layers |
| Sect. 5 | Subsurface model: petrophysical models, the critical zone, and the crust with its calibration and validation |
| Sect. 6 | Strain and stress |
| Sect. 7 | Geohydrology |
| Sect. 8 | Catalogue of mass movements |
| Sect. 9 | Access to the products |
| Sect. 10 | Limitations |
2 Domain, grids and workflow
The model uses Universal Transverse Mercator zone 10N (EPSG:32610) coordinates, with elevation in metres above NAVD88 (EPSG:5703), positive up.
- Model box. Easting 553–623 km and northing
5149–5224 km, 70 × 75 km (
bounds_utminconfigs/domain.yaml): the geographic box 122.30–121.40° W, 46.50–47.15° N (the box of the companion mt-rainier-smart-sensing project), whose projected corners span 553.07–622.77 km E and 5149.84–5223.08 km N, rounded outward to whole kilometres. It covers Mount Rainier National Park and the West Rainier Seismic Zone (WRSZ). - Summit. Columbia Crest (4392 m; 121.7603° W,
46.8523° N,
summit_lonlatinconfigs/domain.yaml) lies at easting 594.5 km, northing 5189.5 km. The 4392 m is the maximum of the 3DEP mosaic (about 8.3 m) of the mt-rainier-smart-sensing project; the highest cell of the 100 m surface grid is 4380 m, centred at 594.45 km E, 5189.45 km N. - Single source of the geometry. All grids are
derived from one configuration file (
configs/domain.yaml, read byrainier3d.config.domain.load_domain()), which sets the horizontal coordinate system (EPSG:32610), the vertical datum (EPSG:5703), the bounds and two resolution profiles:m1, used for every product in this paper (100 m surface grid and the levels of Table 2), andfull(10 m surface grid; horizontal × vertical spacing 50 × 20 m on L1, 200 × 100 m on L2, 500 × 500 m on L3), which is defined but not built. The code never hard-codes bounds, spacing or coordinate system.
Properties are stored on three stacked regular grids whose spacing coarsens with depth (Table 2). Cells above the ground carry no properties. The depth of each cell below the local ground surface is stored with it.
| Level | Elevation range (m) | Horizontal spacing (m) | Vertical spacing (m) | Cells (z × y × x) |
|---|---|---|---|---|
| Surface grid | – | 100 | – | 750 × 700 |
| L1 | 4400 to 0 | 250 | 50 | 88 × 300 × 280 |
| L2 | 0 to −6000 | 500 | 250 | 24 × 150 × 140 |
| L3 | −6000 to −20000 | 1000 | 1000 | 14 × 75 × 70 |
The workflow is a sequence of numbered scripts, S0 to S37, each run as a task of one locked software environment (pixi). Fig. 1 shows how they connect:
- the model chain (S1–S5): S1 builds the 100 m surface stack of
elevation, surface unit and ice thickness (
surface.zarr), S2 the environmental surface layers (surface_layers.zarr), S3 the rule-based 3D geology on L1–L3 (geomodel.zarr), S4 converts the units to Vp, Vs, density, Qp and Qs (properties_geology.zarr), and S5 fuses them with the regional models into the master productmodel.zarr(pixi run allruns S1–S8); - the calibration loop, in which travel-time residuals update the
rock-physics parameters and the regional correction (S13, S14): S13
relocates the 88 PNSN calibration events in 3D in each trial model and
fits, by Gauss–Newton iterations on P, S and S−P residuals, three
multipliers on all rock units (zero-pressure Vp V0, crack-closure
pressure P* and Vs) and a static depth-dependent bias of the regional
models below 1 km depth, written to
configs/velocity_calibration.yaml; S14 relocates the same events in any model and scores it by the residuals left; - the checks and products that read the finished model: the travel-time check against the PNSN one-dimensional model (S6), VTK and HTML views (S7), the sensor atlas (S8), uniform grids for ray tracing and location (S9), the paper figures (S10), the 3D viewer layers (S11), the download packages (S20) the comparison with the iMUSH local-earthquake tomography (S21) and the terrain-geometry layers (S30, Sect. 4.5);
- the local-earthquake tomography of the crustal model (S37, Sect. 5.3.7 and Supplement S1), written to a
separate store (
model_let.zarr) beside the master product.
The domain and its sensors are mapped in Fig. 2.
3 A deterministic data compilation
3.1 Principles
The database is compiled by code, not by hand, following five rules.
- One registry.
configs/sources.yamllists every data set and publication the model uses (99 entries). Each entry gives its DOI or service address, licence, the date and method of verification, and its role in the model. Every number in the configuration files names a registry key. A value chosen by the authors carries the keym1_placeholder, so the unsourced values can be listed and replaced. The bibliography of this paper is generated from the same registry (pixi run bib), with BibTeX keys equal to the registry keys. - Original archives, cached. Each stage downloads
what it needs from the original archive, clipped to the model box where
the service allows it. Examples are a window of a cloud-optimised
GeoTIFF, an OPeNDAP subset, a feature-service query or a staged file.
Each download is cached under
data/raw/<source>/, and reruns read the cache. The GNSS stage also writes a manifest with the URL, retrieval time, size and SHA-256 of each file. - A checksum for every cached file.
scripts/00_data_manifest.pyrecords the size and SHA-256 of all cached files in the committed tabledocs/data_manifest.csv(6,287 files, 6.79 GB; Table 3).pixi run manifest -- --checkcompares a rebuilt cache with it. Some services can return different bytes on a later request: ComCat can revise picks, and the USGS can re-stage NHDPlus. The check lists those files, so any difference between a rebuilt model and the published one can be traced to its input. - One environment. The software is pinned in
pixi.lockfor Linux and macOS (arm64). Two slim environments serve automation:gnssfor the weekly strain refresh andpaperfor this report. - Invariants. The test suite checks the built model
against rules that must hold whatever the data:
- no properties above the ground: on L1, L2 and L3, Vp, Vs and density are NaN in every air cell (unit 0) and finite in every other cell;
- Vp/Vs and density within physical bounds: Vp/Vs between 1.5 and 3.0 in rock cells (air, ice and magma mush excluded), fused Vp/Vs between the geology and regional ratios of the same cell (relative tolerance 10⁻⁴), and density between 900 and 3100 kg m⁻³ in every non-air cell;
- the long wavelengths of the fused model equal those of the regional
model within a tolerance: per level and for Vp and Vs, the RMS of ln V
between the low-passed fused and low-passed regional models is at most
lowpass_rms_tol= 0.03 (configs/domain.yaml), checked on the report that S5 writes tooutputs/fusion_report.csv(current maximum 0.012, L1 Vs); - the surface unit matches the unit of the top model cell: where bedrock (plutonic, supracrustal or cap units) crops out, the top non-air L1 cell carries the mapped surface unit in at least 95% of columns.
| Source folder | Stage | Content | Files | Size (MB) |
|---|---|---|---|---|
dem |
S1 | USGS 3DEP 1 arc-second (about 30 m) DEM (U.S. Geological Survey, 2026c), fetched
with py3dep over the box plus 0.02°
(3dep_30m_rainier-v0.tif) |
1 | 59 |
geology |
S1, S24 | Washington 1:100,000 geology (GeMS) map units (feature-service layer 11) and faults (layer 7) (Washington Geological Survey, 2026a); Quaternary faults (Earthquakes and Faults map service, layer 12) (Washington Geological Survey, 2026b); one GeoPackage each; the Description of Map Units of the compiled quadrangle (layer 13, JSON), read for unit names and deposit thicknesses | 4 | 7 |
glaciers |
S1 | IceBoost v2 per-glacier thickness and error GeoTIFFs for 219 glaciers (Maffezzoli, 2025), RGI 6.0 glacier list and statistics (two CSV files) (RGI Consortium, 2017), GlaThiDa survey table (World Glacier Monitoring Service (WGMS), 2020) | 222 | 44 |
ecology |
S2 | ETH canopy height 2020, 10 m tile N45W123 clipped to the box plus 2 km (Lang et al., 2023); NLCD 2021 from the MRLC web coverage service on its native 30 m EPSG:5070 grid, box plus 1 km (U.S. Geological Survey, 2023) | 2 | 27 |
hydrology |
S2 | NHDPlus HR geodatabases (HU4 1703, 1708, 1711) and the flowlines extracted from them (U.S. Geological Survey, 2026b), NHDPlus v2.1 flowlines (USGS/EPA NHDPlus version 2.1 network flowlines (1:100k), via USGS WaterData GeoServer (pynhd), n.d.), clips of the two water-table grids (Fan et al., 2017; Ma et al., 2026b) | 7 | 924 |
imagery |
S2 | Sentinel-2 L2A median composite, 1 August – 30 September 2025, bands B02, B03, B04, B08 and B11 at 20 m (European Space Agency, 2025) | 1 | 96 |
soilgrids |
S2 | Window over the box plus 2 km of the SoilGrids250m 2017 absolute
depth to bedrock (BDTICM_M_250m_box.tif) (Shangguan et
al., 2017) |
1 | 0.3 |
vs30 |
S2 | Window over the box plus 0.05° of the USGS global hybrid Vs30 grid
(global_vs30_box.tif) (Heath et al.,
2020) |
1 | 0.01 |
wells |
S31 | Washington Department of Ecology well reports (hydrogeological fields only) (Washington State Department of Ecology, 2026); USGS groundwater sites and water levels (U.S. Geological Survey, 2026a); Washington Geological Survey subsurface database (Washington Geological Survey, 2026c); records up to 23 September 2026 | 4 | 71 |
regional |
S5, S6 | Cascadia velocity model v1.7, levels L01 and L2 (0–9.9 km below the
ground), clipped to the box plus 2 km (cvm17_domain.nc)
(Wirth Moriarty et al., 2025); staged
copies of the CRESCENT Gen0 model file (He, 2026) and of the PNSN
one-dimensional model table |
3 | 85 |
pnsn |
S6, S8, S13, S26, S37 | ComCat phase-data QuakeML of the 91 events of
configs/validation_events.csv (88 pass the pick criteria of
the calibration), of the 2023–2025 events relocated by S26 and of the
2015–2026 events of the tomography, the P and S picks extracted from
them and station tables (U.S. Geological Survey, 2026d); PNSN
events of magnitude 0.5 or more from 2015 to the data freeze (S8) |
3,874 | 296 |
sensors |
S8 | FDSN station and channel metadata of all networks in the box (EarthScope Consortium, 2026) and of the whole 2025 node array, network Z5 (Schmandt, 2025); GNSS site metadata (EarthScope/UNAVCO GNSS site metadata web service, n.d.); the box query is frozen at 23 September 2026 and named by domain and date, and two earlier unfrozen copies remain | 5 | 2 |
das |
S8, S10 | Paradise–Nisqually Entrance DAS channel table, staged from a project machine | 1 | 0.4 |
overlays |
S8 | KMZ overlays of the USGS I-432 geologic map and the park soil-map poster, staged from a project machine | 2 | 26 |
smart_sensing |
S8 | Synoptic weather, SNOTEL and streamflow station catalogues of the mt-rainier-smart-sensing project, staged | 66 | 12 |
viewer_cache |
viewer | 3DEP terrain and 1 m summit lidar, National Map imagery, EarthScope stations and ComCat events for the 3D viewer, frozen at 23 September 2026 | 53 | 455 |
mrms |
S29 | MRMS hourly precipitation, the 216 hours of the December 2025 storm (Zhang et al., 2016) | 216 | 120 |
usgs_nwis |
S29 | USGS instantaneous discharge at the gauges of the box during the storm (U.S. Geological Survey, 2026e) | 1 | 1 |
seis_hydro_2_sed |
S29 | Seismic discharge estimates and atmospheric-river windows (Gaia-hazlab/seis-hydro-2-sed, seismic virtual discharge (power-discharge ratings inverted at river-proximal stations) and atmospheric-river windows of the december 2025 floods, commit 6a5065a9, n.d.) | 5 | 3 |
gnss |
S17 | 76 UNR daily position series (.tenv3) (Blewitt et al., 2018), the PANGA raw
archive and its horizontal and vertical NAM20 velocity fields (Pacific Northwest Geodetic Array, 2026),
download manifest |
80 | 218 |
emc |
S21 | iMUSH local-earthquake tomography of Ulberg et al. (2020), in the netCDF format of the EarthScope Earth Model Collaboration (EMC) | 1 | 5 |
packwood_aeromag |
S36 | 2022 Packwood aeromagnetic survey (Blakely et al., 2024): grid, flight-line data, metadata and data dictionary | 4 | 765 |
rainier_aerogeophysics |
S22 | 1996 USGS helicopter survey (Rystrom et al., 2000): apparent-resistivity grids at 33 kHz, 4737 Hz, 4341 Hz and 837 Hz (50 m), reduced-to-pole magnetic grid (62 m), electromagnetic (EM) and magnetic flight lines | 8 | 19 |
wgs_landslides |
S24 | Washington landslide inventory (Washington Geological Survey, 2026d): lidar-protocol deposits, recent landslides, compilation (one GeoPackage each) | 3 | 3 |
allstadt2017 |
S24 | Seismically recorded mass movements, western United States
(Events.csv) (Allstadt et al., 2017) |
1 | 0.03 |
usgs_rainier_hazards |
S24 | Lahar hazard zones of 1998 (rainier_98shapefiles.zip)
(Hoblitt et al.,
1998) |
1 | 0.2 |
dem_3dep_1m |
S24 | 1,638 3DEP 1 m windows around landslide polygons (U.S. Geological Survey, 2026c); one GeoPackage of 3DEP source footprints | 1,639 | 1,818 |
canopy_storage |
S28 | GEDI L3 global 1 km grids of mean and standard deviation of relative height 100 and of shot counts, 18 April 2019 – 9 July 2025 (Dubayah et al., 2021b), and four crops to the box (adding the standard error), written by the vendored canopy-storage code | 7 | 1,135 |
solus100 |
S2 | Windows over the box of the SOLUS100 cloud-optimised GeoTIFFs: soil depth, texture, bulk density, rock fragments and organic carbon at seven depths (Nauman et al., 2024) | 44 | 24 |
polaris |
S2 | Windows over the box of the POLARIS v1.0 layer means of saturated conductivity, θs, θr, α and n in six layers (Chaney et al., 2019) | 30 | 575 |
Four inputs are not fetched by script:
- Cascadia velocity model v1.7 (Wirth
Moriarty et al., 2025). ScienceBase blocks scripted downloads
with a captcha, so the files are downloaded by hand once: levels L01
(0–1200 m below the ground, 200 m spacing) and L2 (1500–9900 m, 300 m
spacing) are read from a local path, clipped to the box plus 2 km and
cached as
data/raw/regional/cvm17_domain.nc(S5); level L3 (10.8–59.4 km) is not downloaded. - CRESCENT Gen0. The model file is read from a local copy of its figshare record (He, 2026). It supplies Vs and its uncertainty below the 9.9 km base of CVM v1.7 (blended with it over 8–16 km below the ground), with Vp from the Vs relation of Brocher (2005), and its depth axis (−4 to 100 km) is read as kilometres below sea level.
- PNSN one-dimensional model. The table is read from
a local file (
vel_pnsn_wa.csvof the cascadia_obs_ensemble repository, registry keypnsn_1d_wa): seven layers with linear gradients, from Vp 5.40 km s⁻¹ at the surface to 7.80 km s⁻¹ at 41 km depth, with Vp/Vs 1.73. It is the reference of the S6 check. Which PNSN model it is (P3 Puget Sound or C3 Cascades) is not documented [TODO: confirm the model name with PNSN]. - Canopy-storage products. The lidar canopy and
soil-map products are delivered files (Sect. 4.4), read from the paths listed in
configs/canopy_products.yaml(delivered 24 September 2026); in the current cache only the GEDI L3 canopy height is regenerated by the vendored pipeline (S28).
The code names each of these paths, and their registry entries say how to obtain them.
3.2 Rebuilding the database and the model
From a clean clone, the following commands download every input, rebuild the model and check the result. Stages that need credentials or delivered files skip those layers and say so.
git clone https://github.com/Denolle-Lab/mt-rainier-digital-model && cd mt-rainier-digital-model
pixi install # the locked environment
pixi run all # S1-S8: surface, layers, geology, rock physics, fusion, checks, figures
pixi run s2 -- --ma # optional: the Ma et al. (2026) water table (~1 GB download)
pixi run s22 && pixi run s3 && pixi run s4 && pixi run s5 # alteration from the EM survey, then rebuild
pixi run s17 && pixi run s18 # GNSS positions, velocities, strain, edifice load
pixi run s24 # mass movements and faults: catalogue, figure, viewer layers (~1.8 GB of 1 m windows)
pixi run -e canopy canopy # canopy-storage pipeline: GEDI (Earthdata login), Sentinel-2 LAI (CDSE client)
pixi run s9 # uniform grids for ray tracing and location
pixi run s31 # wells and boreholes: water levels, bedrock picks, comparison with the grids
pixi run platform # the 3D viewer bundle, deleted and rebuilt from data/raw and the model products
pixi run manifest -- --check # compare the rebuilt cache with docs/data_manifest.csv
pixi run test # unit tests and the invariants of the built modelThe calibration (S13, 40 min with 48 workers on a Linux server) and
the relocation comparisons (S14) are rerun as described in
docs/joint_calibration.md.
The platform is rebuilt, never patched.
pixi run platform (S32, configs/platform.yaml)
deletes the viewer bundle and the atlas data, copies the four inputs
that exist only on a project machine (the DAS channel table, two KMZ
overlays and the Synoptic station catalogue) into
data/raw/, and runs the viewer, sensor, layer, catalogue
and event steps in order. Every live query in these steps stops at one
data-freeze date (23 September 2026), so a rebuild from the same cache
gives the same files; S32 writes their SHA-256 to
SHA256SUMS in the bundle and packs it into a tarball with
fixed entry order, owner and time. The model products (the subsurface
model and the other stores of S2–S30) are read, not recomputed, and a
missing one stops the rebuild.
3.3 Redistribution
The pipeline is published in full. Derived products are published unless a source forbids it.
- Excluded products. A variable whose provenance (its
gaia:source_keysattribute) includes a source flaggedredistribute_derived: falseinconfigs/sources.yamlis left out of the downloadable archives by S20 (scripts/20_publish_products.py), and is listed in the catalogue’sexcludedfield and in the archive’sexcluded_variablesattribute. - Flagged sources. Four sources carry the flag
(registry keys
soilgrids_bdticm,ma2026_wtd,canopy_lidar_chmandsoil_map_image):- the SoilGrids 2017 depth to bedrock (Shangguan et al., 2017), whose record states no licence;
- the Ma et al. (2026) water table (Ma et al., 2026b), whose licence
(CC-BY-NC-ND 4.0) forbids derivatives; the 3D viewer shows it as a
visualisation only, and
pixi run s2 -- --marebuilds it from the open Zenodo record; - the lidar canopy height and vegetation cover (Canopy height model and vegetation cover fraction, 10 m, from airborne lidar DSM/DTM tiles of the WA DNR lidar portal (2022-2023 "wali" acquisitions, e.g. Rainier wali 2022; NAD83(HARN) washington south ftUS), gridded in QGIS for the canopy-storage project (m. koepfli), n.d.), made from the 2022–2023 “Wali” tiles of the Washington Department of Natural Resources Lidar Portal, whose terms of reuse are not yet confirmed;
- the soil-map image (an RGB rendering in EPSG:3857 at 7.8 m, masked to the park), whose source, legend and licence are not documented.
- Rebuilding the excluded layers. Users rebuild them with their own access. Two open archives need a free login to download, NASA Earthdata for the GEDI L2B, L3 and L4B products and the Copernicus Data Space for the Sentinel-2 leaf area index. Their derived layers are published, since neither NASA nor Copernicus data carry a redistribution restriction.
docs/data_policy.md gives the tier of every source.
3.4 Code written with an AI assistant
The code, the configuration and the first drafts of this paper were written with Claude (Anthropic, model Claude Opus 5.5), used as a coding agent in Claude Code under the direction of the first author. The work was divided as follows.
- The authors designed the model; the assistant implemented it. The project started from D. Yao’s three-dimensional mockup of the Rainier seismic network (terrain, summit lidar and earthquake layers; the first commits of the repository). From there the first author directed the whole design (the domain, the input data sets, the model units and their rules, the rock-physics law, the fusion and calibration strategy and the acceptance tests), collected verbal feedback from prospective users, and turned it into instructions for the assistant.
- The assistant wrote the Python package
rainier3d, the stage scripts and the tests from instructions given in conversation, ran them, and reported the results. It also drafted the text, tables and figure scripts of this paper, and resolved the DOIs of the registry. - Aggregation into stages. The assistant turned each
task into a numbered script (
scripts/00_data_manifest.pytoscripts/30_terrain_geometry.py, stages S0 to S30) with apixi runtask. Shared code lives in the package, and each stage reads and writes the store throughrainier3d.io.store. A new layer is therefore one script, one task and one test, not an edit of earlier stages.
The rules that the assistant followed are those of
AGENTS.md at the root of the repository, which apply to
human and agent contributors alike: one locked environment, one domain
loader, a registry key for every number, nearest-neighbour resampling
for categorical rasters, and pixi run all and
pixi run test before every pull request, with tolerances
never loosened to make a test pass. Two of the principles of Sect. 3 exist to catch errors of the kind a
language model makes. The registry turns an invented number into a
missing key or an m1_placeholder that can be listed. The
invariant tests reject a built model that violates physical bounds or
disagrees with the map or the regional model, whoever wrote the
code.
Record (git history of main at commit 70b2e72, 23–26
September 2026) |
Count |
|---|---|
| Commits, excluding merges | 125 |
Commits made in an assistant session (trailer
Co-Authored-By: Claude) |
90 |
| Merged pull requests | 29 |
| Merged pull requests reviewed automatically by GitHub Copilot | 28 |
| Commits that answer an automated GitHub Copilot review of a pull request | 29 |
Lines of Python in src/rainier3d, scripts
and tests |
8882, 5172 and 1501 |
Entries in the citation registry
docs/citations.csv |
129 |
| Registry DOIs recorded as taken from the assistant’s memory, not resolved | 3 |
| Registry sources with no identifier, recorded as not verified | 4 |
The trailer marks commits made in an assistant session. It does not
measure how much of a commit the assistant wrote, and commits without it
may also contain assisted code. The three-dimensional viewer was written
by D. Yao; one of his 25 commits carries the trailer. The three DOIs
from memory are those of brocher_2005,
glathida and rgi60; the four sources without
an identifier are pnsn_1d_wa,
canopy_lidar_chm, sentinel2_lai_2023 and
soil_map_image. Every other entry cited in this paper was
resolved at doi.org, Crossref or DataCite, or read from a local file,
except synoptic_catalog, whose verification field is
empty.
The repository was created on 23 September 2026, and its full history, including every pull request and its review comments, is public. [TODO: the Claude Code session transcripts (four sessions, 23–29 September 2026) are the AI logs proper; state here whether and where they are deposited.]
The authors checked the assistant’s work in three ways.
- Rendering. Each new layer was inspected in the three-dimensional viewer and in the figures, and layers derived from published maps and models were compared visually with the figures of their source publications.
- Seismology. The first author checked the event locations and the travel-time residuals of the calibration and relocation (Sects. 5.3.4, 9.2).
- Code review. After the first five commits (23–24
September 2026), every change reached
mainthrough a pull request. GitHub Copilot reviewed 28 of the 29 merged pull requests automatically; the first author read its comments, asked the assistant to address them, and merged after the assistant resubmitted.
4 Surface layers
4.1 Elevation, geology and glaciers
Three surface layers set the top of every model column.
- Elevation. USGS 3D Elevation Program (U.S. Geological Survey, 2026c) at 1 arc-second (about 30 m), fetched by S1 with py3dep over the box plus 0.02° and block-averaged onto the 100 m surface grid in EPSG:32610; S1 stops if any cell is left empty. It ranges from 24 to 4380 m in the box. The highest cell lies below the 4392 m of Columbia Crest because each cell is a 100 m average.
- Geology. The Washington Geological Survey 1:100,000
surface geology in the GeMS format (Washington Geological Survey, 2026a),
queried by S1 from the Washington Department of Natural Resources
feature service (layer 11, map-unit polygons intersecting the geographic
box; layer 13, Description of Map Units) and cached as
data/raw/geology/dnr_gems_100k_map_units.gpkg.- All 149 map symbols present in the box are assigned to 14 surface model units by 14 ordered regular-expression rules on the symbol (the first match wins), checked against each unit’s full name in the map’s Description of Map Units. Every cell receives a unit: S1 stops if a symbol matches no rule, and the polygons are rasterised at cell centres as uint8 without interpolation. The Ohanapecosh unit covers the largest share of the box (187,565 of 525,000 cells, 35.7%).
- The rules are in
configs/units.yaml(crosswalk_rules), and the generated crosswalk (configs/crosswalk_geology.json, one entry per map symbol with its model unit and the age and full name from the Description of Map Units) is committed for review. - The park map of Fiske
et al. (1963)
(USGS I-432, sheet 1, a single 10,000 × 10,000 pixel KMZ ground overlay
listed in
configs/overlays.yaml) is carried as a georeferenced image for display in the viewers. It is read from a local copy, not fetched by script, and its units are not digitised.
- Faults. The same map gives 134 fault traces in the box (220 km), 106 of them high-angle dip-slip faults and 46 concealed. The Washington Quaternary fault layer adds four features (Washington Geological Survey, 2026b): the Western Rainier and Goat Rocks seismic zones, drawn as geophysical lineaments, the Devils Dream reverse fault and an unnamed oblique reverse fault. Neither source gives a dip, and no fault section of the 2023 National Seismic Hazard Model lies in the box (Hatem et al., 2021); the nearest, the Olympia and Tacoma faults, are 17 and 28 km outside it. Faults are therefore mapped traces (Fig. 24a) and are not surfaces in the 3D model.
- Glacier ice thickness. IceBoost v2 per-glacier grids (Maffezzoli, 2025) for the 219 glaciers of the Randolph Glacier Inventory 6.0 (RGI Consortium, 2017) whose centroids fall in the box, 97.3 km² in all. The grids are area-averaged onto the 100 m grid, and each glacier is rescaled so that its volume matches the IceBoost total for it. This removes an 18% overestimate from counting partly glacier-covered cells as full. The total is 5.50 km³, of which 5.32 km³ is on the cone.
The glacier bed is the ground elevation minus the ice thickness. Against the 1981 radar surveys of Driedger and Kennard (1986) as archived in GlaThiDa (World Glacier Monitoring Service (WGMS), 2020), maximum thickness agrees for Carbon, Nisqually and Tahoma glaciers (Fig. 3). IceBoost is thicker on Emmons (273 vs 185 m) and Winthrop (237 vs 98 m) glaciers. Part of any difference reflects thinning since 1981 (Sisson et al., 2011).
4.2 Soil, water, land cover and imagery
Script S2 reads each source over the model box only, resamples it onto the 100 m grid and records its source (Table 5, Fig. 4). Continuous layers are averaged over each cell; categorical layers take the most common class.
| Layer | Source | Native resolution | Median (5th–95th percentile) |
|---|---|---|---|
| Soil thickness | SOLUS100 depth to a lithic contact (Nauman et al., 2024), read from its cloud-optimised GeoTIFF over the box and block-averaged; 98.8% of cells valid | 100 m | 1.41 m (0.54–1.97 m) |
| Water-table depth | Random-forest estimate for the conterminous US, mean (Ma et al., 2026b), block-averaged; not redistributed | about 24 m | 10.1 m (4.8–20.4 m) |
| Water-table depth | Global groundwater model, annual mean (Fan et al., 2017), read through OPeNDAP, stored positive down and block-averaged | 30″ (about 1 km) | 23 m (0–306 m) |
| Streams | NHDPlus High Resolution, 60,174 flowlines, Strahler orders 1–8, with mean annual flow (U.S. Geological Survey, 2026b); each 100 m cell takes the highest order of any flowline touching it (0 = none) | 1:24,000 | – |
| Canopy height | ETH global canopy height 2020 (Lang et al., 2023), block-averaged, values outside 0–120 m masked; 98.4% of cells valid | 10 m | 30 m (9–45 m) |
| Land cover | NLCD 2021 (U.S. Geological Survey, 2023), most common class in each cell | 30 m | evergreen forest in 72.5% of cells |
| NDVI | Sentinel-2 L2A median composite, 1 August – 30 September 2025 (European Space Agency, 2025); (B08 − B04)/(B08 + B04) from band reflectances averaged onto the grid; 99.8% of cells valid | 20 m | 0.85 (0.26–0.92) |
| NDSI | same composite; (B03 − B11)/(B03 + B11) | 20 m | −0.48 (−0.60 to −0.24) |
Notes on individual layers:
- SOLUS100. It predicts soil depth only to 2.01 m (201 cm is the largest value of its centimetre grid over the box), so that value is read as “at least 2 m”; 3.5% of the valid cells reach 2.0 m. SOLUS100 does not document this cap.
- Sentinel-2 composite. Scenes are searched in the Microsoft Planetary Computer catalogue, with Element84 Earth Search as fallback. It uses the least-cloudy scenes (at most 25% cloud), up to six per Sentinel-2 tile, so that every part of the box is covered; the cached composite holds 10 acquisition dates. The scene classification keeps vegetation, bare soil, water, snow and unclassified pixels (classes 4, 5, 6, 11 and 7), and the median is taken per pixel on a 20 m grid in EPSG:32610 (S2).
- Reflectance offset. Since processing baseline 04.00 (all scenes since January 2022), Level-2A reflectance is stored as reflectance × 10,000 + 1000, and neither distribution service removes the offset. S2 removes it before computing indices and stops if a window mixes baselines. Without the correction, median NDVI over this forest is 0.46 instead of 0.85 [TODO: record the command or log that gives 0.46].
- Snow and ice. NDSI above 0.4 covers about 65 km² at the end of the 2025 melt season, against 97.3 km² of glacier in the Randolph inventory outlines (about 2000) of the 219 glaciers in the box. The difference is consistent with debris-covered glacier tongues (Carbon, Emmons, Winthrop), which read as rock in NDSI, and with glacier retreat.
4.3 Soil properties, regolith and Vs30
S2 also reads the properties that a hydromechanical description of
the critical zone needs: texture, density and coarse fragments from
SOLUS100, hydraulic properties from POLARIS, the depth to bedrock from
SoilGrids, and the Vs30 map of the USGS (Table 6). The depth profiles keep their depth axis
in a /soil node of model.zarr: SOLUS at its
seven prediction depths (0, 5, 15, 30, 60, 100 and 150 cm) and POLARIS
in its six layers (0–5, 5–15, 15–30, 30–60, 60–100 and 100–200 cm). The
/surface node holds their means over 0–1 m
(configs/soil.yaml, rainier3d.surface.soil).
S2 writes the numbers quoted below to
outputs/soil_layers_summary.json.
| Layer | Source | Native resolution | Median (5th–95th percentile) |
|---|---|---|---|
| Clay, sand and silt, 0–1 m | SOLUS100 (Nauman et al., 2024), depth-weighted mean over the soil column within 0–1 m; 97.1% of cells valid | 100 m | clay 7.4% (3.0–18.7%), sand 62% (37–69%), silt 31% (27–47%) |
| Texture class | USDA class of the 0–1 m clay, sand and silt, rescaled to sum to 100% | – | sandy loam in 71.0% and loam in 27.0% of the cells with soil |
| Bulk density, 0–1 m | SOLUS100, oven dry | 100 m | 0.98 g cm⁻³ (0.88–1.33) |
| Rock fragments, 0–1 m | SOLUS100, fragments larger than 2 mm, by volume | 100 m | 22% (5–36%) |
| Organic carbon, 0–1 m | SOLUS100 | 100 m | 2.2% (1.6–3.6%) |
| Depth to a restrictive layer | SOLUS100, any restriction | 100 m | 1.32 m (0.67–1.73 m) |
| Saturated hydraulic conductivity, 0–1 m | POLARIS v1.0 layer means (Chaney et al., 2019), block-averaged in log space (a geometric mean over the cell), then the thickness-weighted harmonic mean of the layers within 0–1 m; 97.4% of cells valid | 30 m | 1.6 × 10⁻⁵ m s⁻¹ (4.8 × 10⁻⁶ to 5.6 × 10⁻⁵) |
| Porosity, 0–1 m | POLARIS saturated water content θs, thickness-weighted mean | 30 m | 0.65 (0.49–0.70) |
| Depth to bedrock | SoilGrids250m 2017 absolute depth to bedrock (Shangguan et al., 2017), interpolated bilinearly; not redistributed until the licence of the 2017 release is confirmed | 250 m | 19.6 m (11.4–26.8 m) |
| Vs30 | USGS global hybrid map (Heath et al., 2020), interpolated bilinearly | 30″ (about 900 m) | 685 m s⁻¹ (392–686 m s⁻¹) |
The two estimates of depth to rock disagree by an order of magnitude (Fig. 5). SOLUS100 places the lithic contact at a median of 1.41 m (5–95%: 0.54–1.97 m) and cannot go deeper than 2.01 m (Sect. 4.2). SoilGrids places bedrock at a median of 19.6 m (11.4–26.8 m), deeper than 5 m in every cell, and 13.9 times the SOLUS depth at the median. The two products measure different things: SOLUS the soil profile described by the soil surveys, SoilGrids an absolute depth to the R horizon from a global model trained mainly on well logs, which are sparse on volcanic edifices. Neither is checked against local data on the volcano; in the lowland, the 23 bedrock picks of the borehole database lie deeper than both (median 40.5 m, Sect. 7). The disagreement matters because the water table falls between them: the Ma et al. (2026) water table (median 10.1 m) lies below the SOLUS soil and above the SoilGrids bedrock in 92.8% of the cells. The unsaturated zone and the top of the saturated zone are thus in the layer that no data set in the box constrains, between 2 m and the 50 m cells of L1. The model keeps both estimates and chooses neither.
Notes on these layers:
- Restrictive layers. In 42.6% of the cells the restrictive layer lies more than 10 cm above the lithic contact.
- Porosity from two sources. Porosity from the SOLUS
bulk density and a grain density of 2.65 g cm⁻³ (1 − ρb/ρs, an
m1_placeholdervalue) has a median of 0.63, against 0.65 for POLARIS θs; the two correlate at r = 0.68 over the cells with soil. - Vs30. Two values cover 56.9% of the box: 686 m s⁻¹ (50.0%) and 464 m s⁻¹ (6.9%). These are class values of the hybrid map, not local estimates, so the layer is a reference for comparison with the near-surface velocities of the model and not a constraint.
- Glaciers. On the glacier cells of S1 (2.6% of the
box), SOLUS returns surface values on 68%, POLARIS on all of them, and
SoilGrids a median depth to bedrock of 11 m. S2 leaves the soil and
regolith layers empty there (
mask_glaciersinconfigs/soil.yaml, an author choice).
4.4 Vegetation structure
Script S19 adds the vegetation products of the canopy-storage project (M. Köpfli, University of Washington) on the same grid (Table 7, Fig. 6). They describe the canopy that intercepts precipitation and loads the ground: height, cover, leaf and plant area, and aboveground biomass.
| Layer | Source | Native resolution | Median (5th–95th percentile) |
|---|---|---|---|
| Canopy height | airborne lidar, digital surface minus terrain model (Canopy height model and vegetation cover fraction, 10 m, from airborne lidar DSM/DTM tiles of the WA DNR lidar portal (2022-2023 "wali" acquisitions, e.g. Rainier wali 2022; NAD83(HARN) washington south ftUS), gridded in QGIS for the canopy-storage project (m. koepfli), n.d.); 10 m grid block-averaged per cell, values outside 0–110 m masked | 10 m | 14.6 m (0.3–32.4 m), on 49% of the box |
| Vegetation cover | same lidar, vegetation cover fraction block-averaged per cell | 10 m | 0.88 (0.01–1.00), on 49% of the box |
| Leaf area index | Sentinel-2 L2A, SNAP biophysical processor, 1 July – 15 August 2023 (European Space Agency, 2023); 10 m mosaic block-averaged; 99.8% of cells valid | 10 m | 2.36 (0.40–3.68) |
| Plant area index | GEDI L2B version 2, quality-filtered footprints gridded to 1 km (mean per cell) (Dubayah et al., 2021a); bilinear resampling; 95.9% of cells valid | 1 km | 2.72 (0.86–3.79) |
| Canopy height | GEDI L3 version 2, mean relative height 100, 18 April 2019 – 9 July 2025 (Dubayah et al., 2021b); bilinear resampling | 1 km | 25.5 m (13.3–39.9 m) |
| Aboveground biomass | GEDI L4B version 2.1, with standard error (median 21.4 Mg ha⁻¹) (Dubayah et al., 2025); bilinear resampling | 1 km | 198 Mg ha⁻¹ (58–436) |
The two canopy heights differ by design. The lidar value is the mean of 10 m cells in each 100 m cell, including gaps, while the GEDI value is a 1 km mean of the tallest return per footprint. That is why the lidar median (14.6 m) is lower than the GEDI median (25.5 m) and the ETH median (30 m).
The project’s download and gridding code is part of this repository,
unmodified and under its MIT licence
(third_party/canopy-storage_seismic). Script S28 runs it
inside the raw-data cache: it fetches the GEDI L3 grids and L2B
footprints through NASA Earthdata and the Sentinel-2 leaf area index
through the Copernicus Data Space, and S19 reads its products in place
of the delivered files. The GEDI L3 canopy height it produces is
identical to the delivered grid (33,701 cells). The L2B plant area
index, the L4B biomass, the lidar layers and the soil map are still read
from the delivered files: the vendored gridder writes the maximum plant
area index rather than the mean, and the others were made outside that
code. The project’s lidar scripts compute canopy height only at its
stations; the 10 m lidar grids were made from the same tiles in QGIS.
docs/canopy_pipeline.md lists each service call.
4.5 Terrain geometry
Script S30 derives four layers of terrain geometry that control
surface instability, as specified by co-author S. Han
(configs/terrain.yaml, Fig. 7).
They have their own 30 m grid in UTM zone 10N, 2,333 × 2,500 cells from
the southwest corner of the box. The box is 70 km wide, so a 10 m strip
at its east edge is not a whole cell and is left out.
- Inputs. Surface elevation z is USGS 3DEP fetched at 30 m (U.S. Geological Survey, 2026c) and block-averaged onto the grid. Over glaciers it is the elevation of the ice surface. Ice thickness H is the IceBoost v2 layer of the model surface (Maffezzoli, 2025), interpolated bilinearly from 100 m to 30 m; the ice volume is unchanged (5.50 km³). Bedrock elevation is b = z − H.
- Surface slope. arctan |∇z|, with the gradient from central differences between the two neighbours of each cell, a 60 m baseline. Over glaciers it is the slope of the ice surface.
- Bedrock slope. The same operator applied to b. Where neither the cell nor its eight neighbours carry ice, it equals the surface slope exactly.
- Local relief. The maximum minus the minimum of z within a disk of radius 510 m (17 cells) centred on each cell.
- Valley depth. The black top-hat of z: the grey-scale closing of z (a dilation, then an erosion, with a flat disk of radius 990 m, 33 cells) minus z. It measures incisions narrower than the disk, about 2 km; wider valleys are not filled and read as shallow.
- Edges. Every filter mirror-reflects the grid at its edges.
The layers, the ice thickness and the bedrock elevation are written
to data/processed/terrain_geometry.zarr, and the four
layers appear in the 3D viewer under “Terrain geometry”. Three
limitations follow from the inputs. The effective resolution of the 3DEP
product at 30 m is 35–49 m, which smooths cliffs and headwalls and
lowers their slope; its reprojection also leaves a faint diagonal
striping in the slope maps. The bedrock slope inherits the errors of the
IceBoost thickness and the blur of its 100 m grid, and the ice surface
of 3DEP and the IceBoost thickness do not refer to the same year. The
radii are parameters and can be changed in
configs/terrain.yaml.
Table 8 samples the layers at the 1,649 event points of the mass-movement catalogue (Sect. 8), which are the crowns of mapped landslides and the locations of the other events, and in the cells covered by its flow polygons. The reference is every cell of the grid. Events sit on steeper ground than the box as a whole: their median slope is 27.9° against 18.5°, and 42% of them lie on slopes above 30° against 22% of the cells. Rock falls and rock and ice avalanches are the steepest class, with a median of 38.8° and 75% above 30°, and the highest local relief, 380 m. Local relief separates the events from the box less clearly than slope does (median 334 m against 297 m), and valley depth does not separate them at all (50 m against 54 m): crowns lie on ridges and valley walls as often as in incised channels. The flow polygons record runout rather than source. The mapped debris flows have a median slope of 12.6°, the lahar deposits 0.7–5.3°, and the deposits other than the Osceola and Electron mudflows fill valleys, with a median valley depth of 182 m. Only 0.8% of the events lie on ice thicker than 10 m, so the bedrock and surface slopes agree at almost every event. They differ at the two snow and ice avalanches (median 37.8° on the ice surface, 34.8° on the bed). The 19 seismically located events fall on 7 distinct points, 9 of them on one, so their percentiles repeat.
| Sites | Count | Surface slope (°) | > 30° | Local relief (m) | Valley depth (m) |
|---|---|---|---|---|---|
| All cells of the grid | 5,832,500 cells | 18.5 (2.2–36.0) | 22% | 297 (78–505) | 54 (1–237) |
| All events | 1,649 | 27.9 (14.9–39.9) | 42% | 334 (176–467) | 50 (0–203) |
| Rock fall, rock and ice avalanche | 56 | 38.8 (22.3–51.0) | 75% | 380 (98–787) | 89 (4–276) |
| Slide, debris slide | 323 | 29.3 (16.1–40.2) | 48% | 340 (143–462) | 40 (0–161) |
| Complex or unknown type | 1,267 | 27.2 (14.5–38.9) | 40% | 331 (185–459) | 52 (1–208) |
| Seismically recorded | 19 | 48.2 (36.5–48.2) | 100% | 787 (646–787) | 64 (0–98) |
| Debris flows (mapped) | 463 polygons, 12,292 cells | 12.6 (3.6–26.2) | 6% | 190 (124–329) | 52 (7–140) |
| Osceola Mudflow | 88,559 cells | 2.1 (0.3–21.7) | 4% | 98 (8–288) | 44 (1–216) |
| Electron Mudflow | 20,833 cells | 0.7 (0.3–4.6) | 0% | 45 (7–114) | 9 (0–78) |
| Other lahar deposits | 17,777 cells | 5.3 (2.0–16.0) | 1% | 196 (88–307) | 182 (54–337) |
5 Subsurface model
The subsurface model has three parts that share one water table, one pore pressure and one set of rock laws. The petrophysical models (Sect. 5.1) map a unit, its depth, the effective stress and the saturation to Vp, Vs and density. The critical-zone model (Sect. 5.2) resolves the top 150 m below the ground or the glacier bed in fine columns. The crustal model (Sect. 5.3) gives the three-dimensional geology and alteration of the volcano and its basement, fused with the regional velocity models and calibrated on PNSN travel times.
The model is built in four stages, each recorded in the repository
with its parameters and sources
(docs/model_construction.md). First, mapped geology is
extended to depth by stated column rules (Sect. 5.3.1), which produce flat-lying contacts
and vertical unit boundaries by construction. Second, every cell
receives Vp, Vs and density from one crack-closure rock law at its
effective pressure, and the top 150 m below the ground or glacier bed
are built as a critical zone from the same law blended with a granular
frame at the same effective stress (Sects. 5.1,
5.2), so that the near surface is petrophysically
consistent with the rock beneath it. Third, the geology-based model is
fused in ln V with the USGS Cascadia velocity model and CRESCENT Gen0,
which supply wavelengths longer than 6–20 km; before fusion the rule
contacts below the critical zone are low-passed with cutoffs that grow
with depth, and three global rock-physics factors and a regional
correction are calibrated against PNSN travel times (Sects. 5.3.3, 5.3.4).
Fourth, a local-earthquake tomography perturbs the calibrated model at
wavelengths of about 12 km and larger below the critical zone, which it
leaves unchanged (Sect. 5.3.7, Supplement S1);
its result is distributed beside the model described here, not in place
of it.
5.1 Petrophysical models
Two laws map a unit, its depth, the effective stress and the water content to Vp, Vs and density: crack closure for rock under confining pressure (Sect. 5.1.1) and a granular frame for soil, Quaternary cover and weathered rock (Sect. 5.1.2). Both use one water table and one pore pressure, so they meet without a jump where weathering ends; their overburden is not yet the same (Sect. 5.1.3).
5.1.1 Rock under confining pressure
Each rock unit receives a P-wave speed that increases with effective pressure as cracks close: with bulk density = 2500 kg m⁻³, water density = 1000 kg m⁻³, the depth below the local ground and the depth of the water table of Sect. 5.1.2 (hydrostatic pore pressure below it, none above).
- Vp/Vs and density. Ice, open water and the three
unconsolidated deposits carry their own Vp/Vs and density in
configs/petrophysics.csv, partly because the Brocher relations are not valid below Vp = 1.5 km s⁻¹. Where a unit has no ratio or density of its own, both follow Brocher (2005): Vs from his regression fit (his Eq. 6), , and density from the Nafe–Drake fit (his Eq. 1), , with V in km s⁻¹ and ρ in g cm⁻³ (valid for 1.5 < Vp < 8.5 km s⁻¹; S4,rainier3d.petro.relations,rainier3d.properties.assign). - Attenuation.
(Vs in m s⁻¹) and
(
qblock ofconfigs/perturbations.yaml,m1_placeholder); S5 recomputes both from the fused Vs. Because implies a negative bulk quality factor where Vp/Vs < √(8/3) ≈ 1.63, the 19,476 of 2.24 million non-ice fused cells below that ratio carry an inconsistent Q. The rule has the form proposed by Olsen (2003) for the Los Angeles basin. - Parameters. Table 9 lists
the unit parameters, chosen within published ranges. Every row of
configs/petrophysics.csvhas the source keym1_placeholderand a one-line basis (for example, granodiorite and quartz diorite for the plutons). The calibration of Sect. 5.3.4 scales them with three global multipliers that act on the eleven rock units, the magma body included, and leave ice and the unconsolidated deposits unchanged (blockgeologyofconfigs/velocity_calibration.yaml). The contrasts between units therefore come from the table, and their overall level comes from the travel times. [TODO: the published range each table value was taken from, per unit] - Magma body. Inside it, the middle-crust parameters
apply (V₀ = 6.0 km s⁻¹, V∞ = 6.5 km s⁻¹, P* = 50 MPa; row
magma_mushofconfigs/petrophysics.csv). Its anomaly is not a property of the rock law: Vp, Vs and density of the fused model (Sect. 5.3.3) are reduced by up to 10%, 15% and 3% (magma_mushblock ofconfigs/perturbations.yaml,m1_placeholder), which raises Vp/Vs by about 6%, with a weight of 1 in the core of the body and a cosine taper to 0 at its edge (Sect. 5.3.1). It is applied after the fusion: applied before it, as in earlier versions of the model, the anomaly was largely removed by the regional low-pass and kept only at the edges of the body. - Alteration. The alteration intensity
(0 to 1, from S22 in Sect. 5.3.2; zero in
air and ice) scales Vp by
,
Vs by
and density by
,
within the ranges reported for altered volcanic rock (Heap and Violay, 2021). Fully altered
rock is thus 30% slower in Vp, 35% slower in Vs and 12% less dense, with
Vp/Vs about 8% higher. S4 applies the factors after the crack-closure
law (
alterationblock ofconfigs/perturbations.yaml,m1_placeholder; the file notes the values are still to be sourced).
| Unit | V₀ (km s⁻¹) | V∞ (km s⁻¹) | P* (MPa) | Vp/Vs | Density (g cm⁻³) |
|---|---|---|---|---|---|
| Ice | 3.80 | 3.80 | – | 1.98 | 0.917 |
| Glacial drift | 1.60 | 2.40 | 5 | 2.50 | 1.95 |
| Alluvium, colluvium | 1.50 | 2.20 | 5 | 2.80 | 1.90 |
| Lahar deposits | 1.80 | 2.80 | 8 | 2.30 | 2.00 |
| Rainier volcanics | 2.80 | 5.60 | 30 | Brocher | Nafe–Drake |
| Young volcanic rocks | 3.00 | 5.60 | 30 | Brocher | Nafe–Drake |
| Miocene intrusive rocks | 4.50 | 6.20 | 40 | Brocher | Nafe–Drake |
| Miocene volcanic rocks | 3.20 | 5.80 | 40 | Brocher | Nafe–Drake |
| Ohanapecosh Formation | 3.40 | 5.90 | 40 | Brocher | Nafe–Drake |
| Eocene volcanic rocks | 3.50 | 6.00 | 40 | Brocher | Nafe–Drake |
| Puget Group, Eocene sedimentary rocks | 2.60 | 5.20 | 40 | Brocher | Nafe–Drake |
| Mashel Formation | 2.20 | 4.50 | 30 | Brocher | Nafe–Drake |
| Russell Ranch Formation | 4.00 | 6.00 | 40 | Brocher | Nafe–Drake |
| Middle crust | 6.00 | 6.50 | 50 | Brocher | Nafe–Drake |
5.1.2 Granular and partly saturated media
Soil, Quaternary cover and weathered rock are described by a granular frame whose stiffness depends on effective stress and water content. It is weighted against the rock law by the weathering index of the critical-zone columns (Sect. 5.2).
Water and effective stress. Pressure head is hydrostatic below the water table of Fan et al. (2017), which is placed at the glacier bed under ice. (The estimate of Ma et al. fits the wells better, Sect. 7, but its licence forbids derivatives.) Above the water table the suction head sets the effective saturation by the retention curve of Genuchten (1980), with and from POLARIS in soil and placeholder classes below. The effective stress is where is the overburden of the column, including the weight of glacier ice, and the second line is the suction stress of Lu et al. (2010) with (Lu and Likos, 2006), which stiffens the unsaturated granular frame. The crack-closure pressure of Eq. 1 in every L1 to L3 cell uses the same water table.
Granular frame. The dry frame of soil, cover and
weathered rock follows the soft-sand model of Dvorkin and Nur (1996): at
the critical porosity
= 0.40 a random pack of spheres has the Hertz–Mindlin moduli (Mindlin, 1949; Walton, 1987)
with coordination number
= 9 and slip fraction
= 0.5, which reduces the shear stiffness that the pure Hertz–Mindlin
model overpredicts (Makse et al.,
1999). Below
the frame joins the mineral along the modified Hashin–Shtrikman lower
bound (Dvorkin and Nur,
1996; Mavko et al.,
2020). The grain moduli
,
and Poisson’s ratio
are the Hill average (Hill, 1952) of
clay (21 and 7 GPa) and quartz–feldspar (40 and 25 GPa) for the SOLUS100
clay fraction. The pore fluid has the patchy-mixing modulus of Brie et al. (1995),
,
with water saturation
and
= 3, and the saturated bulk modulus follows Gassmann’s equation (Mavko et al., 2020),
valid at seismic frequencies, which lie in the low-frequency limit of
Biot’s theory (Biot, 1956). All
rock-physics parameters are m1_placeholder values within
the ranges of Mavko et
al. (2020).
One medium from soil to rock. At each depth the rock end member is the crack-closure law of the unit beneath, evaluated at the same effective stress . The bulk and shear moduli of the medium are the Hill average of the granular and rock moduli, weighted by , for , so that velocity varies continuously with effective stress and saturation from soil to fresh rock, and where = 0 the medium is exactly the rock law of Sect. 5.1.1. Permeability blends in the same way, from the conductivity of POLARIS and the cover and weathered classes to the crustal permeability–depth curve of Ingebritsen and Manning (1999) in rock, capped at 10⁻¹² m².
5.1.3 Shared inputs of the two laws
The two laws are built to agree where they meet, and the parts of the model share their inputs:
- One pore pressure. Both laws use the same water table, placed at the glacier bed under ice, so the crack-closure pressure of Eq. 1 in every L1–L3 cell and the effective stress of Eq. 3 in the columns share one pore pressure. The overburden is not yet shared: the columns integrate their own densities, ice at 917 kg m⁻³ included, while Eq. 1 uses a constant = 2500 kg m⁻³ from the ground or ice surface, so ice is loaded as rock in the crustal cells.
- One rock law. Where = 0 the medium is the rock law of Sect. 5.1.1, unchanged. The calibration multipliers of Sect. 5.3.4 act on that law, so they change the crustal cells and the rock end member of every column together.
- Continuity. At the base of the columns (150 m), Vs
differs by a median 0.5% (90th percentile 1.5%) from the L1 cell centred
25 m below (
cz.base_continuityinoutputs/paper/numbers.json). The lateral low-pass of the geology starts from zero at the column base (Sect. 5.3.3), so the fusion does not open a step there. - What is not yet consistent. The overburden of the crustal cells (above). The quality factors follow a rule of their own (Sect. 5.1.1). Cell averages over a saturated weathered layer reach Vp/Vs above 3 in the top L1 cell (Sect. 5.2). The water table is that of Fan et al. (2017), not a solution of a groundwater model on these columns.
5.2 The critical-zone model
The crack-closure law of Sect. 5.1.1
describes rock under confining pressure. In the top tens of metres the
medium is soil, glacial and volcanic deposits and weathered rock, partly
saturated, whose stiffness depends on the water content as much as on
depth. The model resolves this critical zone with fine columns and joins
them to the rock below with one rock-physics law, so that the near
surface and the volcano share one effective stress and one water table
(S4, rainier3d.cz.medium, rainier3d.cz.level,
configs/cz.yaml). The construction follows the geophysical
studies of the critical zone in granitic and volcanic terrain (Flinchum et al.,
2018; Holbrook et
al., 2014; Karlstrom et al., 2025; Riebe et al., 2016; St. Clair et al.,
2015) and the rock-physics chain used for surface waves in
partly saturated soil (Shi et al., 2026; Solazzi et al., 2021).
Columns and layers. Every L1 cell (250 m) carries a column from the ground, or from the glacier bed, down to 150 m, in 52 layers growing geometrically from 5 cm to 16 m. Each column has four layers whose bases are :
| Layer | Base | Source |
|---|---|---|
| Soil | : SOLUS100 soil thickness, at most 2.01 m | Sect. 4.3 |
| Quaternary cover (drift, alluvium, lahar deposits) | : the deposit thickness of the map unit | Sect. 5.3.1 |
| Weathered rock | SoilGrids 2017 depth to bedrock | |
| Fractured rock | m | m1_placeholder |
Weathering index. A weathering index
is 1 in soil, cover and weathered rock and falls linearly to 0 across
the fractured zone:
It sets the porosity,
,
with granular porosity
from the SOLUS100 bulk density in soil, 0.35 in cover and 0.30 to 0.15
down the weathered layer, and a fracture porosity
= 0.03 in rock (m1_placeholder).
Weathering drivers. The factor
on the SoilGrids depth encodes three controls, all
m1_placeholder values to be replaced by calibration:
- glaciation: = 0 under present ice, where the column starts with fractured rock at the bed; young glacial drift and alluvium have = 0.5 and lahar deposits 0.3, since deposition restarts the weathering clock (Wang et al., 2020);
- lithology: consolidated rock at the surface (the Rainier volcanics, the other volcanic rocks, the plutons and the supracrustal units) has = 0.5, because the SoilGrids prior is trained largely on deeply weathered profiles;
- forest: is multiplied by 1.2 under canopy taller than 20 m, for root-driven weathering.
On the 23 borehole bedrock picks of the Puget lowland (S35), none of three alternative estimators (a terrain regression, the curvature regression of Flinchum et al. (2025), and SoilGrids itself) beats a constant median, so SoilGrids remains the prior.
Upscaling into the levels (Fig. 8). An L1, L2 or L3 cell that reaches
into the columns takes the travel-time average of their Vp and Vs and
their mean density; the top rock cell of a column averages from the
ground (or the glacier bed) to its base, including the part of the
column that lies in the air cell above it, and an invariant test
requires the vertical S travel time of the top two rock cells to equal
that of the columns to 10⁻³; the columns are stored as the
/cz node of model.zarr with the van Genuchten
parameters, saturation, effective stress, porosity and permeability, the
state on which a groundwater model and a data-assimilation scheme can
later run. In the top 50 m of L1 the median Vs is 0.48 of the rock value
without the critical zone, and at the base of the columns Vs differs by
a median 0.5% (90th percentile 1.5%) from the L1 cell below (Sect. 5.1.3). Because the travel-time
average is dominated by the slowest layers, the top L1 cell of a column
whose weathered layer is saturated reaches Vp/Vs above 3: 2,541 cells in
unconsolidated units (at most 4.70, slightly above the 4 to 4.5 measured
in saturated loess by Pasquet et al. (2015)) and 9,239 cells (0.56% of the
consolidated-rock cells, at most 3.97) in consolidated units.
Calibration with the critical zone. The rock calibration of Sect. 5.3.4 was refitted with the critical zone in every trial model. It fits the PNSN picks as well as without it (held-out RMS 0.0926 s for P and 0.1880 s for S, against 0.0924 and 0.1877 s for the calibration without the critical zone, which also predates the smoothing of the geology in the fusion), with a zero-pressure Vp multiplier of 1.45 against 1.31 without it (Sect. 5.3.4). The critical-zone parameters themselves are not calibrated: the travel times barely constrain the top 50 m, and their calibration waits for near-surface observations (surface-wave dispersion, H/V and dv/v).
Synthetic observables. As a demonstration of what
the columns predict, and not as data, the model gives Rayleigh-wave
dispersion, depth kernels and dv/v at the 46 permanent stations, the 191
nodes of the 2025 array in the domain and every 25th channel of the
Paradise fibre (S33), and dv/v through the December 2025 storm from a
mass-conservative Richards solver (Celia et al., 1990) driven by MRMS rain
(S34). These are simulations from the model; the nodes and the fibre
were not recording during the storm. At 40 Hz half of the Vs sensitivity
lies within the top 4 to 5 m, and the simulated storm lowers dv/v at 40
Hz by a median of 3.2% at the 40 permanent stations where the solver ran
(outputs/cz/storm_summary.json), the order of the seasonal
and rain-driven changes measured by noise interferometry on permanent
stations and fibre (Clements and
Denolle, 2023; Shen et
al., 2024; Shi et al.,
2026). The columns have no lateral drainage or snow yet, so
these numbers illustrate the coupling, not a prediction.
5.3 The crustal model
Below the critical zone the units of the geologic map are extended to depth, their properties come from the rock law of Sect. 5.1.1, and the result is fused with the regional velocity models and calibrated on travel times.
5.3.1 Three-dimensional geology
Units are extended to depth by explicit column rules, in the manner of the San Francisco Bay region model (Aagaard and Hirakawa, 2021): the geology comes first and the velocity rules second. For a cell at elevation and depth below the ground, the rules of Table 11 are applied from the top down.
| Condition | Assigned unit |
|---|---|
| air | |
| ice thickness (IceBoost v2 (Maffezzoli, 2025)) | ice |
| ice + deposit thickness (from the map unit description where it states one; else water 5 m, glacial drift 15 m, alluvium and colluvium 10 m, lahar deposits 15 m) | mapped surface deposit, beneath any ice |
| inside the edifice footprint, above the edifice base | Rainier volcanics |
| young volcanic rocks, or Rainier volcanics outside the footprint, within 300 m below the base of the ice and deposits | that cap unit |
| above the base of the bedrock unit (−4 km NAVD88 for supracrustal units, −10 km NAVD88 for the Miocene plutons) | bedrock unit (mapped, or nearest mapped basement unit) |
| otherwise (below −4 or −10 km NAVD88) | middle crust |
- Edifice. The edifice footprint covers the Rainier
volcanics and ice mapped within 12 km of the summit (Columbia Crest,
configs/domain.yaml) on the 100 m surface grid, closed morphologically over 500 m (a 5 × 5 cell element) with holes filled, keeping the connected region that contains the summit (S3,rainier3d.geomodel.rules.edifice_footprint;geometry.edificeinconfigs/units.yaml,m1_placeholdervalues). Its base is the pre-volcanic surface: the DEM elevations of the plutonic and supracrustal outcrops in a two-cell (200 m) ring around the footprint, interpolated linearly across it (nearest value where the linear interpolant is undefined) and kept at or below the glacier bed. The base lies at 804–2234 m NAVD88 over a 252 km² footprint (/surfacenode ofdata/processed/geomodel.zarr). - Basement. Beneath the deposits and the edifice, the
basement unit is taken from the nearest outcrop: every map cell takes
the plutonic or supracrustal unit mapped there, or else that of the
nearest such outcrop on the 100 m surface grid (nearest-neighbour fill,
rainier3d.geomodel.rules.bedrock_units, S3). Map symbols of the 1:100,000 state geologic map (Washington Geological Survey, 2026a) reach the model units only through the ordered regular-expression rules ofconfigs/units.yaml(crosswalk_rules).- The supracrustal units (the Ohanapecosh, Fifes Peak and Stevens
Ridge formations, the Eocene volcanic rocks and the Puget Group, and
also the pre-Tertiary Russell Ranch Formation) extend to 4 km below sea
level (
supracrustal_base_z= −4000 m NAVD88 inconfigs/units.yaml, anm1_placeholder); the middle crust fills the column below. - The Miocene plutons (Tatoosh, White River, Carbon River and
Nisqually; map symbols starting
Mi,MOi,PLOi,PLMi) extend to 10 km below sea level (pluton_base_z= −10000 m NAVD88 inconfigs/units.yaml, anm1_placeholder). They therefore continue through L2 into the top four 1 km layers of L3, where they cover about 700 km² in plan view (2,706 L3 cells). - The Mashel Formation (Miocene sedimentary rocks, map symbols
starting
Mc) is capped at 300 m thickness below the ice and deposits (max_thickness_m: 300inconfigs/units.yaml, anm1_placeholder); below that, the column takes the nearest mapped basement unit other than the Mashel (rainier3d.geomodel.rules.build_level).
- The supracrustal units (the Ohanapecosh, Fifes Peak and Stevens
Ridge formations, the Eocene volcanic rocks and the Puget Group, and
also the pre-Tertiary Russell Ranch Formation) extend to 4 km below sea
level (
- Unconsolidated deposits. Their thickness beneath
any ice is set per map symbol where the Description of Map Units of the
1:100,000 map states one (
geometry.symbol_thickness_minconfigs/units.yaml), taking the midpoint of the stated range, from zero when only a maximum is given (anm1_placeholderrule). Eight symbols state a thickness (Table 12); they cover 7.0% of the box and 26.3% of its unconsolidated cells. Elsewhere the thickness is the default of the model unit (geometry.unconsolidated_thickness_m, allm1_placeholder): glacial drift 15 m, alluvium and colluvium 10 m, lahar deposits 15 m, and 5 m for mapped open water, which is given the properties of saturated alluvium. S1 writes the result asunconsolidated_thicknesson the surface grid. Most deposits are thinner than half a 50 m L1 cell, so they appear only where a cell centre falls inside them: 6618 of the 7.39 million L1 cells (6189 with the unit defaults alone).
| Map symbol | Unit | Stated in the map unit description | Thickness used |
|---|---|---|---|
| Qap(h) | Hayden Creek Drift | 15 to 30 m thick | 22.5 m |
| Qvl(o) | Osceola Mudflow | as much as 75 ft | 11.4 m |
| Qvl(lc) | Lily Creek Formation, mudflows | maximum known thickness 273 ft | 41.6 m |
| Qgos | Vashon Drift, outwash sand | commonly 2 to 50 m | 26.0 m |
| Qao(e) | Evans Creek Drift, outwash | generally 3 to 8 m | 5.5 m |
| Qapo(h) | Hayden Creek Drift, outwash | generally 3 to 5 m | 4.0 m |
| Qvl(e) | Electron Mudflow | a few millimetres to at least 26 ft | 4.0 m |
| Qp | peat | less than 1 ft to as much as 23 ft | 3.5 m |
- Magma body. A slow body below the summit is a
sphere centred beneath Columbia Crest at 11.5 km below sea level
(
center_z= −11500 m NAVD88) with a radius of 6.5 km, so it spans 5–18 km below sea level (geometry.magma_bodyinconfigs/units.yaml, source keymoran_1999). As unitmagma_mushit replaces every non-air unit it contains: 305 L2 cells and 1168 L3 cells. The weight of its anomaly (magma_weight) is 1 within 4.5 km of the centre (389 L3 cells) and falls to 0 at the radius as a squared cosine over 2 km (radius_m,taper_m,m1_placeholder). It follows the low-Vp body imaged 5–18 km beneath the summit by Moran et al. (1999). [TODO: confirm whether the 5–18 km of Moran et al. (1999) is below sea level or below the summit;configs/units.yamlline 59 marks the depth reference as still to verify]
5.3.2 Hydrothermal alteration from the helicopter electromagnetic survey
Clay-bearing altered rock is electrically conductive, while fresh lava and ice are resistive. The 1996 helicopter electromagnetic (EM) and magnetic survey of Rainier (Rystrom et al., 2000) measured apparent resistivity at four frequencies (33 kHz, 4737 Hz, 4341 Hz and 837 Hz) on a 50 m grid. Finn et al. (2001) used it to map collapse-prone altered zones. Script S22 turns these grids into an alteration field in three steps.
- Registration. The grids are converted from NAD27 to the model datum. Their orientation is checked against the data, not assumed: the magnetic anomaly correlates with high-passed topography at 0.60 as read, and at 0.08 if flipped north–south.
- Intensity. The survey saturates at a different resistivity at each frequency, so each frequency is referred to its own fresh level . is the median log resistivity over the surveyed edifice lavas: 4.35, 3.89, 3.74 and 3.00 (log₁₀ Ω m). The intensity is which starts at half the fresh resistivity and reaches 1 at a tenth of it.
- Depth. Each frequency senses to a depth of investigation of half its skin depth, m, capped at 150 m. The three-dimensional field is the maximum over frequencies of tapered below that depth. Depth is measured below the glacier bed, and the field is restricted to the edifice lavas and young volcanic rocks.
Over the 126 km² of surveyed edifice lava, 10.6 km² reaches an intensity of 0.5 or more (Fig. 9). That corresponds to 1.9 km³ of equivalent fully altered rock in the model grid. Table 13 gives the distribution around the summit.
| Area (edifice lavas within 6 km of the summit) | Mean intensity at the surface | Share with intensity ≥ 0.5 |
|---|---|---|
| West flank | 0.08 | 8% |
| Summit (within 1.5 km) | 0.21 | 19% |
| East flank | 0.27 | 25% |
The concentration east of and around the summit agrees with the exposed east–west belt of altered rock described by Finn et al. (2001) and John et al. (2008). The EM field sees only the top ~150 m. It cannot see the altered rock buried beneath fresh cover on the upper west flank, which Finn et al. (2001) inferred from magnetic modelling. The survey’s terrain-correlated apparent magnetisation is published as a separate map.
5.3.3 Fusion with the regional models
Regional models. The regional model has two parts:
- Down to 9.9 km below the ground: the USGS Cascadia
velocity model v1.7 (Wirth et al., 2025), for Vp and Vs, from
its levels L01 (0–100 m every 10 m, then every 100 m to 1.2 km) and L2
(1.5–9.9 km every 300 m) on a 200 m horizontal grid, with L2
interpolated onto the L01 grid; its level L3 (10.8–59.4 km) is not used
(
rainier3d.fusion.regional.load_cvm). Its depth axis is below the ground surface. For the shallow level this is confirmed by a median top-sample Vs of 194 m s⁻¹ over the model domain (data/raw/regional/cvm17_domain.nc; 206 m s⁻¹ over the larger area ofconfigs/sources.yaml), and for the deeper level it is inferred from continuity: at the summit, Vs is 2841 m s⁻¹ at 1.2 km in L01 and 2870 m s⁻¹ at 1.5 km in L2 (configs/sources.yaml, keycvm17). - Below 9.9 km: CRESCENT Gen0 Vs (He et al.,
2026), with Vp from Brocher (2005) through his regression
(km s⁻¹). The CRESCENT depth axis (−4 to 100 km) is taken as kilometres
below sea level; the model is resampled onto a 2 km UTM grid padded by 5
km around the box and interpolated linearly to the cells, and its Vs
uncertainty is carried as
vs_unc_regional.
From one regional model to the other. At 9.9 km
below the ground, the base of the Cascadia data, CRESCENT is faster than
the Cascadia model: the jump Δ = ln(V_CRESCENT / V_CVM) of Vs has a
median of 0.062 over the columns of the domain (5th–95th percentiles
0.017–0.085; regional.cvm_crescent_jump in
outputs/paper/numbers.json). Δ of each column is spread
over 8–16 km below the ground with a raised-cosine weight W(d), 0 at 8
km and 1 at 16 km: ln V = ln V_CVM + WΔ above 9.9 km and ln V = ln
V_CRESCENT − (1 − W)Δ below (fusion.regional_blend_m in
configs/domain.yaml, m1_placeholder;
rainier3d.fusion.regional). The regional model is
continuous at 9.9 km, each model is used only where it has data, and the
window follows the topography. A switch at 9.9 km, as in earlier
versions of the model, left this step in the model: the static
correction of the calibration is continuous in depth, and the update of
the local-earthquake tomography (Sect. 5.3.7) is
too smooth to remove it.
Below 1 km, both are multiplied by a static, depth-dependent correction fitted to the PNSN arrivals (Sect. 5.3.4). The corrected regional Vs is capped at Vp/1.6, so that its Vp/Vs is at least 1.6 (Christensen, 1996); the geology side is not bounded this way.
Strategy. Neither model is right at every wavelength. The regional models resolve the crust at wavelengths of several kilometres and are constrained by teleseismic, ambient-noise and local-earthquake data; they carry no information on the mapped units. The geology model carries the mapped units and their contrasts, but its absolute level rests on laboratory-style rules. The fusion keeps each where it is informative: the regional model supplies the long wavelengths and the geology model the short ones. The combination is done in the logarithm of velocity, so contrasts are relative: where LP is a horizontal Gaussian low-pass filter with half amplitude (a quarter of the power) at the cutoff wavelength , that is .
Implementation details.
- Fused quantities. Vs and Vp/Vs are fused rather than Vp and Vs separately, so the fused Vp/Vs always lies between the two input ratios.
- Cutoff wavelength. grows with depth below the ground: 6 km at the surface, 10 km at 2 km, and 20 km from 10 km down. The values approximate the lateral resolution of the regional models.
- Air cells. Cells above the ground are excluded from the filters by normalised convolution.
- Overshoot. A Gaussian high-pass overshoots at sharp contrasts and puts fast rims around slow bodies. Six alternating projections remove them: each cell is clamped between its geology and regional values, then the regional low-pass is restored.
- Top kilometre. The top 300 m keep the geology model unchanged, and a linear taper reaches the fused model at 1 km. The regional models do not resolve this depth range; their shallowest layer is a generic near-surface model.
- Rule contacts. The column rules of Sect. 5.3.1 make flat-lying contacts (the
edifice base, the base of the cap and of the Mashel Formation) and
vertical unit boundaries that would reach the model as steps of up to a
factor of two between neighbouring cells; the horizontal low-pass of Eq. 9 does not act on flat contacts, and the
geology is kept as it is in the top 300 m. Below the 150 m critical-zone
columns, the geology is therefore low-passed before the fusion, in the
vertical with a cutoff that grows to 1 km 250 m below the column base
and horizontally with a cutoff that grows from zero at the column base
to 750 m 150 m below it and then with the depth below it, to 2 km
(
lambda_z_m,lambda_h_ramp,lambda_h_start_m,lambda_h_minconfigs/domain.yaml,m1_placeholder;rainier3d.fusion.blend.smooth_geology). The critical zone is neither smoothed nor smoothed into the cells below, and mapped contacts stay sharp in it and are softened more with depth below it, where the extrusion rule is least constrained. The horizontal cutoff starts from zero because the critical zone above is not smoothed: a cutoff of 750 m in the first cell below it would put a vertical step at the column base next to every unit boundary (in L1 of the geology, the 95th percentile of the step of ln Vs at the base rises from 0.045 to 0.081); the ramp keeps it at 0.047. The rate of the ramp trades this step against the lateral steps just below the base (99th percentile 150–1000 m below the ground 0.148 with the ramp, 0.124 without it, 0.256 with no lateral smoothing, in the same geology). - Magma body. Its anomaly (Sect. 5.1.1) is applied to the fused model, so neither the low-pass nor the clamping of item 4 removes it.
- Density. Density follows Vp through the ratio of Nafe–Drake densities, which preserves the density contrasts between units.
Interfaces that are not geology. Three construction
steps can leave steps in the model that no rock contact explains: the
boundary between the levels L2 and L3 at −6 km, the change from the
Cascadia model to CRESCENT, and the vertical walls of map units extended
to depth. Table 14 measures them as the
absolute step of ln Vs between neighbouring cells of a uniform 250 m
grid (rainier3d.report.roughness), before and after the
changes described above. “Before” is the model built from the code and
calibration of 14 October 2026 (a switch from the Cascadia model to
CRESCENT at 9.9 km, a horizontal cutoff growing slowly from zero below
the critical zone, and each level clamped to its own cell centres when
resampled); “after” is the published model, recalibrated. Both are
measured with the same definitions. The step at the L2/L3 boundary is
not a disagreement of the levels: in the published model, the median
change of ln Vs from the bottom cell centre of L2 to the top cell centre
of L3, 625 m lower, is +0.0077, and the vertical gradient of L2 predicts
+0.0073 over that gap (model.l2_l3_continuity). Clamping
each level to its own cell centres put the whole change over the gap
into one 250 m cell of the uniform grid; interpolating across the gap
spreads it over the cells it spans. The uniform grids of S9 and S26 and
of the client now interpolate linearly across the gap between levels
(rainier3d.export.grids.uniform). The step from the
Cascadia model to CRESCENT is measured on the steps inside the blend
window, 8–16 km below the ground, without the pair of cells across a
level boundary, which has its own row; a switch at 9.9 km and the
steepest part of a blend fall in the same window. Its reference is the
steps 16.5–20.5 km below the ground, where only CRESCENT is used.
Percentiles over all steps are compared with the reference; the largest
step per column is given too but has no reference of the same length,
because the largest of 32 steps exceeds the largest of the 16 that the
reference window holds. The blend lowers the 99th percentile from 0.017
to 0.0054, 2.5 times the reference: the largest step per column, 0.0032
at the median, is the steepest slope of a raised cosine that spreads a
6% jump over 8 km (0.003 per 250 m), so a smaller step needs a wider
window, which would shift CRESCENT further. The all-step reference at
7–9 km below the ground now overlaps the top of the blend window and the
steeper depth profile of the recalibrated regional correction (Table 18), so it is no longer a quiet reference.
The lateral filter lowers the largest steps (95th and 99th percentiles)
and raises the median, because a wall is spread over several cells.
| Δ ln Vs between neighbouring 250 m cells | Before: median | p95 | p99 | After: median | p95 | p99 |
|---|---|---|---|---|---|---|
| Vertical, L2/L3 boundary at −6 km | 0.0048 | 0.013 | 0.0030 | 0.0043 | ||
| Vertical, Cascadia model to CRESCENT, all steps 8–16 km below the ground | 0.0014 | 0.010 | 0.017 | 0.0013 | 0.0034 | 0.0054 |
| Same, largest step per column | 0.011 | 0.018 | 0.0032 | 0.0057 | ||
| Reference: all vertical steps 16.5–20.5 km below the ground | 0.0005 | 0.0013 | 0.0022 | 0.0007 | 0.0017 | 0.0021 |
| Reference: all vertical steps 7–9 km below the ground | 0.0005 | 0.0026 | 0.0028 | 0.0038 | ||
| Lateral, 150–1000 m below the ground | 0.0029 | 0.054 | 0.199 | 0.0032 | 0.043 | 0.115 |
| Lateral, 1000–2000 m below the ground | 0.0028 | 0.015 | 0.036 | 0.0032 | 0.014 | 0.024 |
Fig. 10 shows the three models along a section through the summit. The fusion is checked by an invariant (Table 15): below 1 km depth, the low-passed fused model must equal the low-passed regional model within an RMS of 0.03 in ln V.
| Level | RMS of LP(ln V) − LP(ln V_reg), Vp | Same, Vs | Mean ln(V / V_reg), Vp | Same, Vs |
|---|---|---|---|---|
| L1 | 0.011 | 0.012 | +0.057 | +0.079 |
| L2 | 0.001 | 0.001 | +0.001 | +0.002 |
| L3 | 0.006 | 0.009 | −0.001 | −0.002 |
5.3.4 Calibration on P and S−P travel times
Data. The data are the analyst picks of the 88 PNSN
earthquakes with M ≥ 2 in the box between 2015 and 2026 that have at
least six picks, four of them P. They comprise 1823 P and 1280 S picks
at 50 stations, with origins and picks from the USGS ComCat catalogue
(U.S. Geological Survey, 2026d). The
event list is committed (configs/validation_events.csv), so
every run uses the same set. Picks are weighted by the RMS of PNSN’s own
location residuals: 0.14 s for P and 0.23 s for S.
Travel times. They are computed on a 500 m grid with pykonal’s point-source solver (White et al., 2020), one solve per station and phase by reciprocity.
- Solver accuracy. Against analytic travel times on a
grid of the same size (70 × 75 × 24 km) and spacing (0.5 km), for an
off-grid source and 360 receivers, its RMS error is 8 ms in a uniform 6
km s⁻¹ model and 11 ms with the gradient 4 + 0.1z km s⁻¹; fteikpy
(second-order fast sweeping) gives 22 and 46 ms. At 0.25 km spacing the
pykonal errors fall to 4.7 and 5.7 ms at about nine times the cost
(
scripts/bench_eikonal.py,docs/eikonal_benchmark.md, pykonal 0.4.1, run on 24 September 2026). - Topography. The travel-time grid is the S6 grid
(
validationblock ofconfigs/domain.yaml): 141 × 151 × 70 nodes at 500 m, from 4.5 km above to 30 km below sea level. Cells more than one cell (500 m) above the ground carry the speed of sound in air, 343 m s⁻¹, so rays follow the rock and cannot cut across valleys (rainier3d.validate.locate.with_topography). The one-cell skin keeps every station in rock; station elevations match the DEM within ±70 m (median +5 m). Against rock-filled air, the air handling changes the station-mean residuals by a median of 0.2 ms. - Cross-check. For station OBSR, NonLinLoc’s
Grid2Time P times on the exported NonLinLoc grids (S9,
rainier3d_nll_500m.tar.gz) agree with the pykonal times to 12 ms on average (RMS 31 ms, 85 events). This number comes from a separate session’s record and has not been rerun.
What is estimated. Fifteen parameters scale the two models that are fused, and the hypocentres and origin times of the 88 events are re-estimated in every model tried. The travel-time data therefore constrain the velocity parameters only through the part of the misfit that relocation cannot absorb. This avoids the circularity of scoring a model with catalogue hypocentres that were located in a 1D model with station corrections.
Parameters.
- Rock physics (3). Log-multipliers on three quantities shared by all rock units: the zero-pressure velocity V₀ and the crack-closure pressure P* of Eq. 1, and Vs. The Vs multiplier acts at fixed Vp, so it is a change of Vp/Vs. Ice and unconsolidated deposits are not scaled.
- Regional correction (12). A static depth profile of the log-factor that multiplies the regional velocity, , one profile for Vp and one for Vs. Here is depth below the ground. Each profile is piecewise linear between knots at 0, 1, 2, 4, 7, 11, 16 and 25 km and constant below 25 km. The values at 0 and 1 km are fixed at zero, because the fused model takes the top kilometre from the geology model (Sect. 5.3.3); the six deeper values are free.
Forward problem. For a trial , the model is rebuilt from its inputs by the same code that builds the published model. At it returns the uncalibrated model cell for cell, which checks that the calibration fits the model that is delivered and not an approximation of it. The steps are:
- Vp of every rock-unit cell from Eq. 1 with the scaled V₀ and P*, and Vs from that Vp through the unit’s Vp/Vs ratio, or the regression of Brocher (2005) where the unit has none, times the Vs multiplier;
- the regional Vp and Vs multiplied by ;
- the fusion of Eq. 9, including the geology-only top 300 m and the taper to 1 km;
- P and S travel times from every station on the 500 m grid, with air above the ground, as described under Travel times;
- every event relocated in that model (see Relocation below).
Objective. With the pick of phase at station for event , the travel-time field, and the hypocentre and origin time, the normalised residual is where is the pick uncertainty of the pick’s phase: s for P picks and s for S picks. The calibration minimises where the hypocentres minimise the first term for each . The weights are the Huber weights of the relocation (threshold 1.5σ), so outlying picks count less. holds the three rock-physics log-multipliers, with prior standard deviations of 0.3, 0.7 and 0.1 on the diagonal of (factors of 1.35, 2 and 1.1). holds the regional log-factors at all eight knots, with the two fixed at zero, and takes second differences along depth. The smoothing weight and the damping weight are relative: both are multiplied by the mean diagonal of the data term for the regional parameters.
Update. Each iteration linearises the residuals about the current model and hypocentres, , with scaled like the residuals.
- Separating hypocentres from velocity. For each event, the columns of partials with respect to are formed at its current location. The event’s rows of and are projected onto the orthogonal complement of , through a QR factorisation of (Pavlis and Booker, 1980). What remains is the part of the misfit that no shift of that hypocentre can remove. Events with five or fewer usable picks keep at most one degree of freedom after the projection and are left out of the update.
- Step. With the projected , and the regularisation matrix of Eq. 11,
- Relocation. Every event is then relocated in the updated model before the next linearisation, so velocity and hypocentres are updated in alternation, as in the minimum one-dimensional model of Kissling et al. (1994). Relocation is a grid search over nodes at or below the ground, within 15 km of the catalogue epicentre, on the sum of |r| with the median origin time, followed by Huber Gauss–Newton (Huber, 1964) on interpolated travel times with a penalty on hypocentres more than 50 m above the ground. It follows the grid-search-then-refine design of NonLinLoc (Lomax et al., 2000).
Derivatives.
- Rock physics. A rock-physics multiplier changes every rock-unit cell, and its effect passes through the fusion filters, so its column of is a one-sided finite difference ( in log) through the whole forward problem, with the hypocentres held fixed. That costs one full rebuild and eikonal solution per parameter, and it is recomputed at every iteration on the fitting half.
- Regional correction. For knot the derivative is the ray integral where is slowness, the linear interpolation weight of knot at depth , and the share of the regional model in the fused model: 0 above 300 m, rising linearly to 1 at 1 km. Rays are traced down the gradient of each station’s travel-time field (Thurber, 1983). The integral assumes that a depth-only factor on the regional model passes through the fusion unchanged. The low-pass filter of Eq. 9 passes a factor that varies slowly across the box, but the clamping of fused values between the two input models is not linear, and is the likely cause of the difference below. Against a finite difference through the full forward problem, for the Vs knot at 4 km over all 1280 S picks, the ray derivatives correlate at 0.97 with a slope of 0.81: they underestimate the sensitivity by about 20%. The residuals are always evaluated with the full forward problem, so this error does not bias the data fit. At convergence it acts, to first order, like regularising the regional correction about 20% more weakly than and state.
Validation and choice of smoothing. Events alternate between a fitting half and a held-out half in origin-time order, and held-out events are relocated in every iterate, so their misfit is an independent score. At the first iteration, is chosen from 0.01, 0.1, 1 and 10 by the normalised RMS of the held-out separated residuals predicted by the linearised step: 0.713, 0.714, 0.723 and 0.760. The adopted value is 0.01, the smallest tried and so at the edge of the scan; it differs from 0.1 by 0.0009 in the score, so the score does not resolve the weight below 0.1.
Iterations and uncertainties. Three iterations on
the fitting half are followed by two on all events, which reuse the last
rock-physics derivatives (Table 16); the
run takes 40 min with 48 workers on a Linux server. Posterior standard
deviations are the square roots of the diagonal of
at the last iteration, with the covariance multiplied by the mean
reduced χ² of the two phases, 0.562, the mean of 0.438 for P and 0.687
for S (scripts/13_joint_calibration.py). They are
linearised. They do not include the error of the ray derivatives, or the
trade-off with hypocentres beyond what the projection removes.
| Iteration | P, fitting (s) | P, held out (s) | S, fitting (s) | S, held out (s) | ln V₀ | ln P* | ln Vs |
|---|---|---|---|---|---|---|---|
| 0 (uncalibrated) | 0.129 | 0.125 | 0.351 | 0.355 | 0 | 0 | 0 |
| 1 | 0.104 | 0.097 | 0.196 | 0.192 | 0.158 | 0.244 | −0.016 |
| 2 | 0.095 | 0.094 | 0.191 | 0.186 | 0.121 | −0.291 | +0.006 |
| 3 | 0.096 | 0.094 | 0.191 | 0.188 | 0.240 | 0.008 | −0.009 |
| final (all events) | 0.093 | 0.093 | 0.191 | 0.188 | 0.373 | 0.305 | −0.043 |
The fit is resolved as follows (Table 17, Table 18, Fig. 11, Fig. 12).
- V₀. It is the parameter the data require: ×1.45 ± 0.03 (×1.31 without the critical zone, in a calibration that also predates the smoothing of the geology in the fusion). The table rock is too slow near the surface. With the multiplier, the zero-pressure Vp of the rock law is 4.1 km s⁻¹ for the Rainier volcanics and 4.9 km s⁻¹ for the Ohanapecosh Formation. Because the multiplier is global, the Miocene plutons reach the cap of 0.98 V∞ = 6.08 km s⁻¹ at zero pressure (4.5 × 1.45 = 6.5), so their rock law starts at the cap; the velocity drop toward the surface comes from the critical zone alone.
- P*. It is not resolved: its log-multiplier ranged from −0.29 to +0.31 across the iterations after the first and was still rising at the last one (final ×1.36, posterior s.d. 0.15 in ln; the linearised s.d. does not capture this drift), while the held-out RMS changed by less than 2 ms after the second iteration. It trades off against V₀: over the last three iterations both rose (ln V₀ from 0.240 to 0.373, ln P* from 0.008 to 0.305), and the calibration of 21 October 2026, with a lateral smoothing that started at 750 m directly below the critical zone, ended at V₀ ×1.32 and P* ×0.56.
- Rock Vs. It falls by 4.2 ± 1.7% (ln multiplier −0.043 with posterior s.d. 0.017, against a prior s.d. of 0.1). Because it acts at fixed Vp, it raises the Vp/Vs of every rock unit by about 4%.
- Regional correction. It changes Vp by at most 7% (+6.9% at 2 km, −4.8% at 7 km). It makes Vs 5–9% faster at 2–7 km and 3–7% slower at 16–25 km; with the rock multipliers, the median Vp/Vs at 2–4 km below the ground falls from 1.83 in the regional model to 1.76 in the fused model.
- Agreement between the two models. After
calibration, the geology model and the corrected regional model agree to
within 5.1% between 0.3 and 4 km depth (largest difference +0.050 in ln
Vs at 0.3–1 km). Uncalibrated, the geology is up to 20% slower (−0.227
in ln Vp at 0.3–1 km), and the fusion invariant exceeds its tolerance in
L1 (0.031 for Vp, 0.032 for Vs). These are mean ln(V_geology /
V_regional) by depth below ground over L1–L3 without air and ice, from
model.zarrand from the uncalibrated model that the validation builds with the same code and the critical zone (model_nocal.zarr,pixi run nocal;outputs/paper/numbers.json). In the top 300 m, which the fused model takes from the geology alone, the calibrated geology, critical zone included, remains 19% faster in Vp and 25% faster in Vs than the regional model (mean ln ratios 0.17 and 0.22).
| Parameter | Multiplier | Posterior s.d. (ln) | Resolved |
|---|---|---|---|
| V₀, zero-pressure Vp | 1.45 | 0.023 | yes |
| P*, crack-closure pressure | 1.36 | 0.15 | no |
| Vs of rock units | 0.958 | 0.017 | yes |
| Depth below ground (km) | 2 | 4 | 7 | 11 | 16 | 25 |
|---|---|---|---|---|---|---|
| Factor on regional Vp | 1.069 | 1.001 | 0.952 | 0.984 | 1.003 | 0.980 |
| Factor on regional Vs | 1.074 | 1.088 | 1.053 | 1.024 | 0.970 | 0.925 |
Why this parameterisation. Two simpler parameterisations were tested against the same data (Table 19).
- Vs-only depth factor, catalogue hypocentres fixed.
It fits S as well as the adopted model, but pushes Vp/Vs to 1.60–1.67 at
2–4 km. That is low for crustal rock and lower still than expected
beneath a volcano with a hydrothermal system: the S−P misfit of fixed
hypocentres is partly a location error. This is the earlier S12
calibration (
scripts/12_calibrate_vs.py, retired and kept in the git history;configs/vs_calibration.yaml), which raised Vs by up to 10% at 2–7 km; it left 30,086 fused cells below Vp/Vs = √(8/3) in the model of that time, against 19,476 for the adopted model. - Depth factors on the regional Vp and Vs at all depths, with
relocation. It fits as well as the adopted model, but places
the correction in the regional model where the fusion does not use it.
It requires Vp 7–19% faster in the top 2 km, where the fused model
follows the geology, and it breaks the fusion invariant (0.050). This is
the first S13 run (
configs/velocity_calibration_v1.yaml): Vp factors of 1.19, 1.14 and 1.07 at 0, 1 and 2 km, and an L1 invariant of 0.050 for Vp and 0.044 for Vs (outputs/relocation/s5_joint.log). - Adopted parameterisation. Fitting the geology’s
rock physics and correcting the regional model only below 1 km fits
equally well, satisfies the invariant (0.011 for Vp and 0.012 for Vs, L1
in
outputs/fusion_report.csv) and keeps the unit contrasts in physical parameters.
Alteration and the calibration. The first calibration without the critical zone was run with a conduit-centred alteration field; replacing it with the EM-based field of Sect. 5.3.2 changed the relocated RMS from 0.095 to 0.093 s for P and left S at 0.190 s. The calibration with the critical zone was run directly on the EM-based field.
5.3.5 Validation
Held-out events. The 44 events of the held-out half
are relocated in every iterate but enter no fit until the last two
iterations (Table 16). After the three
iterations on the fitting half, their RMS has fallen from 0.125 to 0.094
s for P and from 0.355 to 0.188 s for S, while the fitting half ends at
0.096 and 0.191 s; the held-out misfit is not larger than the fitted
one. These are the independent scores of the calibration. The smoothing
weight
is chosen on the same half (see Validation and choice of smoothing), so
they are not fully blind to it. The two final iterations use all 88
events, and the published model (critical zone and EM-based alteration,
data/processed/model.zarr) relocated with S14 gives 0.093 s
for P (949 picks) and 0.188 s for S (655 picks) on the same 44 events,
against 0.131 and 0.263 s in the PNSN 1D model; these events are no
longer independent of that model. The split is in time, not in space:
held-out and fitting events share source regions and ray paths
(outputs/paper/numbers.json, scored from
outputs/relocation/<model>/picks.csv with the split
of S13: event identifiers in origin-time order, every second one held
out).
All models scored the same way. Table 19 relocates all 88 events in each model
with the same locator and topography. Relocation alone does not rescue
the uncalibrated three-dimensional model: its S residuals stay larger
than those of the 1D model. The S−P misfit therefore lies in the
velocity model, not in the catalogue hypocentres. With the ground bound,
no event is placed at the top of the grid, and one of the 88 events ends
more than 50 m above the ground in the published model, at the limit of
the ground penalty
(outputs/relocation/fused_joint/stats.json,
above_ground_gt_50m = 1; three in the conduit-alteration
run).
| Model | P RMS (s) | S RMS (s) | Epicentre shift from ComCat, median (m) | Depth shift, median (m) |
|---|---|---|---|---|
| PNSN 1D | 0.132 | 0.268 | 1157 | +511 |
| 3D, uncalibrated | 0.127 | 0.353 | 1399 | +152 |
| 3D, Vs-only depth factor¹ | 0.102 | 0.189 | 847 | +306 |
| 3D, depth factors on regional Vp and Vs¹ | 0.094 | 0.190 | 835 | +727 |
| 3D, geology multipliers and regional correction, conduit-centred alteration¹ | 0.095 | 0.190 | 856 | +852 |
| 3D, published model: recalibrated with the critical zone, EM-based alteration¹ | 0.093 | 0.191 | 830 | +1018 |
Independent tomography. The iMUSH project imaged Vp and Vs around Mount St. Helens from local earthquakes and explosions recorded by a 70-station array (Incorporated Research Institutions for Seismology, 2020; Ulberg et al., 2020).
- Coverage. Its grid spans the whole model box. Its
Vp is resolved over 82–90% of the box. Its Vs is resolved over 83–93% of
the southern strip (south of 46.65° N) but only 11–19% of the northern
half. Script S21 samples our models at its 51,300 resolved nodes below
ground. The model is the EarthScope EMC file
iMUSH-localEQ-Ulberg-2020.r0.0-n4c.nc, with 1.2 km nodes masked where checkerboard tests do not recover 20 km features; its depth axis is read as kilometres below sea level, as the EMC page states, although the netCDF long_name says below the surface. Coverage is counted over 0–14 km below sea level, and north of 46.75° N between 188 and 1354 Vs nodes fall in each depth bin. - Beneath Rainier, north of 46.75° N (Table 20). The iMUSH model finds the regional model’s Vs 5–8% too slow at 1–8 km and up to 3% too fast at 11–20 km, the shape of Table 18. With the correction, the difference in Vs is 2% or less below 2 km. Vp/Vs moves from 1.83–1.85 towards the iMUSH value of 1.75–1.77; at 4–8 km our Vp/Vs (1.69) is 0.06–0.07 below it.
- South of 46.65° N, inside the iMUSH array. The iMUSH Vs is within 1% of the Cascadia model at 1–6 km, and the correction makes our Vs about 7% too fast at 2–6 km. This suggests that the correction is local to Rainier, which a laterally varying correction would test.
- Independence. Both studies use PNSN arrivals from 2015–2016. The iMUSH-only stations and explosions make the comparison largely independent in the south, less so in the north.
| Depth below ground (km) | 1–2 | 2–3 | 3–4 | 4–6 | 6–8 | 11–15 | 15–20 |
|---|---|---|---|---|---|---|---|
| Vs, regional as distributed | +0.084 | +0.073 | +0.064 | +0.055 | +0.046 | −0.006 | −0.034 |
| Vs, regional with the correction | +0.050 | −0.002 | −0.017 | −0.018 | −0.006 | −0.008 | +0.001 |
| Vp/Vs, iMUSH | 1.770 | 1.759 | 1.754 | 1.757 | 1.755 | 1.744 | 1.765 |
| Vp/Vs, regional | 1.810 | 1.828 | 1.850 | 1.851 | 1.851 | 1.762 | 1.724 |
| Vp/Vs, rainier3d | 1.805 | 1.798 | 1.739 | 1.693 | 1.686 | 1.742 | 1.782 |
Catalogue hypocentres. At the ComCat hypocentres,
which were located in a 1D model, the three-dimensional model predicts
later arrivals than the 1D model at every station: by 0.27 s for P (mean
over 50 stations of the station-mean difference) and 0.45 s for S (45
stations with at least five picks); per pick, the means are 0.23 and
0.41 s (outputs/pnsn_residuals.csv). With each event’s mean
residual removed, the RMS is 0.130 s (P) and 0.227 s (S) for the 3D
model, against 0.159 and 0.287 s for the 1D model. The per-station 3D −
1D delay correlates with the mean 1D residual at 0.72 for P and 0.68 for
S (Fig. 15). The 3D structure therefore explains
part of what station corrections absorb.
5.3.6 The fused model
Figs. 16, 17 show the fused model along two sections through the summit, and Fig. 18 compares vertical profiles.
- Level L1 (the ground to sea level). L1 is on
average 6% faster in Vp and 8% faster in Vs than the regional model. The
calibrated rock is stiffer than the shallowest layer of the Cascadia
model, a generic near-surface model with a median top-sample Vs of 194 m
s⁻¹ over the model domain. The travel times constrain this difference
only beneath the stations. The averages are the mean ln(V_fused /
V_regional) over all non-air L1 cells, from 0 to 4.4 km NAVD88: +0.057
for Vp and +0.079 for Vs (
outputs/fusion_report.csv). The difference is largest in the top 300 m, where the calibrated geology, critical zone included, is 19% faster in Vp and 25% faster in Vs than the regional model. - Plutons. The Miocene plutons stand out as fast
columns to 10 km below sea level, the base set by
pluton_base_z. With the calibrated V₀ their rock law starts at the cap of 6.08 km s⁻¹, and their geology Vp is 6.09 km s⁻¹ just below the critical zone (200–300 m) and 6.13 km s⁻¹ at 2 km depth (L1 medians indata/processed/properties_geology.zarr). - Puget Group. The Puget Group block west of the
summit is slow down to 4 km below sea level. It is unit
eocene_sedimentary(V₀ = 2.6 km s⁻¹, V∞ = 5.2 km s⁻¹ in Table 9), whose base is the supracrustal base at −4 km NAVD88, and on the summit row it extends from 571.6 to 581.9 km easting (UTM 10N, cell centres). - Seismicity. Summit earthquakes form a column from
the edifice to about 3 km below sea level. WRSZ earthquakes concentrate
4–12 km below sea level, 12–18 km west of the summit. The sections show
4369 PNSN events of M 0.5–3.4 from 2015 to 2026
(
web/atlas/data/events.geojson, depths taken as below sea level). Of the 1559 events within 2 km of A–A′ and 3 km of the summit, 90% lie between 2.3 km above and 1.9 km below sea level and 99% above 2.6 km below. Of the 329 West Rainier Seismic Zone (WRSZ) events within 2 km of A–A′ and 8–25 km west of the summit, 90% lie at 4.5–11.8 km below sea level and 10.8–18.2 km west. - Magma body. The slow body (5–18 km below sea level,
Sect. 5.3.1) is applied to the fused model
after the fusion, so it is the one structure of the model that the
regional models do not constrain at its own wavelength. In L3, where it
lies, its core (weight 1) is 15.1% slower in Vs than the middle crust at
the same elevations, and the whole body, taper included, 9.4% slower
(mean ln ratios −0.163 and −0.099;
outputs/paper/numbers.json); L2 holds only cells of its taper. Whether a body of the size imaged by Moran et al. (1999) and Pang et al. (2025) belongs in the model is a question for data that resolve it: the tomography of Sect. 5.3.7 has almost no rays below 12 km.
5.3.7 Local-earthquake tomography
The calibration adjusts global factors and a depth profile, so it
cannot correct lateral errors of the geological rules between the
wavelengths that the geology encodes and those that the regional models
resolve. A local-earthquake tomography (S37,
rainier3d.validate.tomo; Supplement S1) perturbs ln Vp and
ln Vs of the calibrated model on nodes 3 km apart, using 99,716 analyst
picks of 3770 PNSN earthquakes from 2015 to the data freeze, with travel
times on a 250 m eikonal grid, every event relocated in every trial
model, and earthquakes in 10 km squares withheld from the fit to choose
the smoothing and stop the iterations. The perturbation is zero in the
top 150 m below the ground or glacier bed, so the critical zone keeps
its rock physics, and all invariant tests of the model hold in the
result. Three steps reduce the RMS residual of the held-out earthquakes
from 0.0904 to 0.0722 s for P and from 0.1802 to 0.1206 s for S, and the
RMS of the held-out residuals averaged per station from 0.052 to 0.023 s
for P and from 0.152 to 0.066 s for S, without station terms.
Checkerboard tests recover 12 km structure between sea level and 6 km
depth with correlations of 0.66–0.74 and about half of its amplitude;
below 12 km, and beneath the summit below 5 km, ray coverage is nearly
absent and the perturbation is set by the regularisation. Within the
sampled volume the update has a mean close to zero and an RMS of about
5%. The result is distributed as model_let.zarr beside the
model product; it does not replace model.zarr until the
resolution tests and the station coverage of Supplement S1 have been
extended.
6 Geodetic strain and stress at depth
6.1 GNSS data and velocities
Daily GNSS positions come from two archives:
- PANGA. The Pacific Northwest Geodetic Array (PANGA,
Central Washington University) is the regional analysis centre (Pacific Northwest Geodetic Array, 2026):
S17 (
scripts/17_gnss_fetch.py) reads its daily GIPSY positions (panga_raw.zip, outlier-screened, not detrended) and its NA20 horizontal and vertical velocity fields for all 188 sites in the network box of 124.0–119.8° W, 45.6–48.2° N (configs/gnss.yaml,network_bbox), in its North-America-fixed frame; the PANGA series run from 1 January 2008 (start) to 18 July 2026, and 281 step epochs come from the headers of its DQRFIT trajectory fits. - UNR. The Nevada Geodetic Laboratory (NGL,
University of Nevada, Reno) supplies IGS20 North-America-fixed daily
series (
.NA.tenv3) for the 54 sites in the box that PANGA lacks (Blewitt et al., 2018), plus 20 sites that both archives process (the 20 longest PANGA series that UNR also holds), used only for frame alignment; the UNR series run to 1 September 2026 and the PANGA series to 18 July 2026, which is also the end of the regional daily strain series, and the NGL steps database adds 162 equipment and processing steps (code 1) for these sites. Every downloaded file is cached underdata/raw/gnss/and listed with its URL, retrieval time and SHA-256 indata/raw/gnss/manifest.csv.
Together they give 1,050,643 site-days in 256 series.
- Frame alignment. The 20 sites that both archives
process align UNR to PANGA (S18,
align_framesinscripts/18_gnss_strain.py): the UNR minus PANGA differences of horizontal MIDAS velocity are fitted by least squares with a translation and a rotation about the centroid of the shared sites in the local UTM plane, with a residual RMS of 0.10 mm yr⁻¹, and the fitted correction is removed from the velocities and trends of the UNR-only sites; where both archives have a site, only the PANGA series is used. - Velocities. Station velocities come from MIDAS
(Blewitt et al.,
2016), implemented in
rainier3d.geodesy.velocity: the median of slopes between positions one year apart (±0.001 yr), skipping pairs that span a known step, trimmed at two scaled median absolute deviations (MAD) and taken again, with an uncertainty of 1.2533 × 1.4826 MAD / √(N/4) floored at 0.2 mm yr⁻¹. Series shorter than 365 days or 2.5 years (min_years) are not used, which leaves 203 sites (169 PANGA, 34 UNR). Equipment steps are taken from the PANGA fit headers and the UNR steps database. Each component is also fitted with a trajectory model (trend about 2015.0, annual and semiannual terms and steps; Huber-weighted least squares, k = 1.345, five iterations), whose annual terms and residuals feed the seasonal and daily strain. - Quality control. Sites are flagged (S18) when their
MIDAS horizontal velocity differs by more than 1 mm yr⁻¹ from PANGA’s
published NA20 velocity (PANGA sites only), or by more than 2.5 mm yr⁻¹
from the median velocity of at least three neighbours within 40 km
(
configs/gnss.yaml,qc; thresholds are author choices,m1_placeholder). This flags 22 of 203 sites (outputs/gnss/summary.json,qc_flagged): 11 on the PANGA test alone, 9 on the neighbour test alone and 2 (MUIR, V096) on both. They include the high edifice sites MUIR, CSHR, SNRS, PNHG and PNHR; PNHG moves 44 mm yr⁻¹ east, which is not tectonic, and PNHR departs from its neighbours by 266 mm yr⁻¹. Flagged sites are kept inoutputs/gnss/velocities.csvwith their flag and left out of the strain fits.
The data are fetched again every week, and the products are
recomputed (Sect. 9). The numbers below are
for the series ending on 1 September 2026, which are frozen in
configs/gnss.yaml.
6.2 Strain rate
The horizontal strain-rate tensor is estimated from the velocities.
- Grid. On a 5 km grid over the network box (64 × 59
nodes in EPSG:32610, 3502 with a solution), a uniform velocity-gradient
field is fitted at each node by weighted least squares to the
quality-controlled MIDAS velocities, with Gaussian distance weights
exp(−(d/s)²) times inverse-variance weights (Shen et al., 2015). The smoothing scale
s is tried in the order 5, 7.5, 10, 15, 20, 30, 40 and 60 km until the
summed weight reaches 6 and at least four stations have a weight above
0.05 (
configs/gnss.yaml,strain; author choices); inside the model box the scale is 30 km at 134 of the 210 nodes and 40–60 km elsewhere. The result isdata/processed/gnss/strain_grid.nc(S18). - Regions. For the two regions of interest it is a
uniform-strain fit (the same gradient fit with equal distance weights)
to the MIDAS velocities of the quality-controlled stations around them:
for the West Rainier Seismic Zone (WRSZ), the stations within 25 km of
the polygon 122.10–121.88° W, 46.60–47.00° N, drawn around the band of
Pacific Northwest Seismic Network seismicity 12–18 km west of the summit
(U.S. Geological Survey, 2026d); for the
edifice, the stations within 25 km of the summit (121.7603° W, 46.8523°
N). The regions are defined in
configs/gnss.yaml(regions); the radii are author choices (m1_placeholder).
The reported components are the dilatation , the maximum shear , the principal rates and their azimuth, the rotation and the second invariant. The grid also carries the amplitude and peak day of the annual areal strain, the seasonal signal of hydrological loading.
| Region | Sites | Dilatation (nanostrain yr⁻¹) | Maximum shear (nanostrain yr⁻¹) | Azimuth of |
|---|---|---|---|---|
| WRSZ (polygon + 25 km) | 17 | −16.6 ± 3.5 | 11.1 | 136° |
| Edifice (within 25 km of the summit, quality-controlled) | 6 | −27.9 ± 12.4 | 4.3 | 171° |
| Edifice, all sites | 11 | +120.5 ± 11.8 | 61.2 | 103° |
Both regions contract at a few tens of nanostrain per year (Table 21, Fig. 20a), as the rest of the model box does (median −19 nanostrain yr⁻¹). The edifice result depends on quality control: with the flagged summit sites included, it changes sign. On the grid, the summit cell has a dilatation rate of −14.6 nanostrain yr⁻¹ at a smoothing scale of 30 km, because the flagged summit sites are excluded. The annual areal-strain amplitude has a median of 15 nanostrain over the box (5–95%: 4–39), peaking in late August.
6.3 Daily strain and the summit swarms
The daily uniform strain of each region’s stations is fitted to trajectory residuals, with trend, annual and semiannual terms and steps removed per site. Stations joining or leaving the network therefore do not shift the series (Fig. 19). Across the two summit swarms, the 60-day changes are small (Table 22).
| Region | Daily scatter (MAD) | 13 February 2009 swarm | 8 July 2025 swarm |
|---|---|---|---|
| WRSZ | 20 [TODO: not reproduced; 23 from
outputs/gnss/strain_wrsz.csv, no script computes it] |
+6 | +7 |
| Edifice | 106 [TODO: not reproduced; 133 from
outputs/gnss/strain_edifice.csv, no script computes
it] |
no quality-controlled coverage (fewer than four quality-controlled sites before 9 September 2012) | −166, inside the 411-nanostrain scatter of the 30-day medians |
Neither swarm shows a transient above about 10 nanostrain in the
WRSZ. On the edifice, winter excursions of up to 1500 nanostrain [TODO:
the 30-day median of outputs/gnss/strain_edifice.csv
reaches 2335 nanostrain; state the period and statistic] come from the
close-spaced high sites. With stations a few kilometres apart, a few
millimetres of snow-related antenna error become about 1000 nanostrain
of apparent strain. Resolving strain of the edifice or of a magma body
needs other instruments: tiltmeters, borehole strainmeters or
interferometric synthetic-aperture radar.
6.4 Stress from the edifice load
The weight of the edifice is a static load on the crust beneath it.
- Load. The edifice is taken as everything above the
pre-volcanic surface of the geology model (surface node
edifice_base, inside the edifice footprint; Sect. 5.3.1). Its 100 m columns of height are summed onto 500 m cells as vertical Boussinesq point loads on an elastic half-space (Johnson, 1985): 1131 cells with a total weight of 2.34 × 10¹⁵ N (95 km³ of rock at 2500 kg m⁻³, g = 9.81 m s⁻²), on a flat reference plane at 1789 m, the mean elevation of the edifice base under the load (S18,rainier3d.geodesy.load;configs/gnss.yaml,load; ρ and Poisson’s ratio ν = 0.25 arem1_placeholdervalues). - Output. The six stress components (Pa, tension
positive), the mean stress, the maximum shear (half the difference of
the extreme principal stresses) and the most and least compressive
principal stresses are computed at every node of the model levels L1
(250 m horizontal, 50 m vertical, 25 to 4375 m elevation), L2 (500 m,
250 m, −125 to −5875 m) and L3 (1000 m, 1000 m, −6500 to −19,500 m) and
written to
data/processed/edifice_load.zarr; nodes less than 250 m below the reference plane (above 1539 m) are left empty, where the point-load field is singular. - Checks. Two unit tests on a single 10¹² N point
load check the implementation (
tests/test_geodesy.py): the vertical stress integrated over a plane 2 km below the load (200 m sampling over ±60 km) balances the load within 1%, and the divergence of the stress, by 1 m central differences at a point off the axis, is below 10⁻⁷ of the local vertical stress per metre; the on-axis branch matches the r → 0 limit to 10⁻⁴.
| Elevation (m) | Vertical stress (MPa) | Mean stress (MPa) | Maximum shear (MPa) |
|---|---|---|---|
| 0 | −38.5 | −18.7 | 15.2 |
| −2000 | −24.0 | −9.4 | 11.2 |
| −5000 | −13.0 | −4.4 | 6.6 |
| −11,500 (magma-body centre) | −4.9 | −1.5 | 2.6 |
The load stress decays from tens of megapascals beneath the summit to a few megapascals at the depth of the magma body (Table 23, Fig. 20b). At the tectonic stress rate implied by the geodetic strain rates (about 1 kPa yr⁻¹ for a shear modulus of 30 GPa and 3 × 10⁻⁸ yr⁻¹), the load stress beneath the summit (1.5–38.5 MPa, Table 23) corresponds to 10³–10⁴ years of tectonic loading. If the tectonic background stress is no larger than this accumulated loading, the load stress dominates the orientation of stresses in the upper crust beneath the edifice; the background stress is not known (Sect. 6.5.1). The model is a homogeneous half-space with a flat reference plane, and its Poisson’s ratio (0.25) and density (2500 kg m⁻³) are author choices.
6.5 Strain in the model volume
The volume step of S18 (formerly script S25) puts two strain fields on the 500 m × 250 m grid of the three-dimensional viewer, from the surface to 20 km below sea level. Both are written with the axes of maximum shortening, so that they can be compared with the fast directions of shear-wave splitting.
Tectonic strain rate at depth. GNSS constrains the horizontal strain rate at the surface only. The horizontal tensor of Table 21 is carried down unchanged through the elastic upper crust. The vertical component follows from plane stress, , with . Both steps are assumptions, not observations. The tensor is then resolved on vertical planes parallel to the WRSZ. The zone’s strike, N174°E, is the long axis of its 1292 epicentres (elongation 3.1).
At 5 km below sea level inside the WRSZ polygon:
| Quantity | Value |
|---|---|
| Axis of maximum shortening | N48°E |
| Maximum shear strain rate | 10.4 nanostrain yr⁻¹ |
| Right-lateral shear strain rate on WRSZ-parallel planes | 10.0 nanostrain yr⁻¹ |
| Normal strain rate across the zone | −12.9 nanostrain yr⁻¹ (contraction) |
The planes of maximum shear strike N3.5°E and N93.5°E. The WRSZ lies 9° from the first, so the geodetic strain rate shears it in the right-lateral sense at close to the maximum shear rate (Table 24, Fig. 21). This is a statement on the strain rate at the surface, extended to depth by assumption; it says nothing on the stress state or the friction on the zone.
Static strain of the edifice load.
- Method. The Boussinesq stress of Sect. 6 is converted to strain with the local
stiffness of the velocity model,
and
,
with
,
and
of the fused model resampled to the 500 m × 250 m viewer grid (rock
cells only, down to −20 km); the full strain tensor, the volumetric and
areal strain, the horizontal maximum shear strain, the SHmax azimuth and
the mean stress are written to
data/processed/strain_3d.zarr(S25). - Cone interior. Inside the cone above the
half-space, that is higher than 1539 m, the stress is taken as the
laterally confined overburden,
and
,
with
= 2500 kg m⁻³,
= 9.81 m s⁻²,
= 0.25 and
the depth below the local ground. This approximation defines the
volumetric strain but no horizontal stress direction. The level 1539 m
is the reference plane (1789 m) minus the 250 m exclusion depth, and
these cells are marked
load_method= 2 in the product (1 for half-space cells, 0 for air).
Beneath the summit (Table 25), the volumetric strain is compressive throughout. It is largest at the base of the cone and decays below. Neither the load nor the geodetic field produces dilatation in the edifice above sea level, where the shallow swarms of the summit occur (Fig. 22). The GNSS areal strain rate there is −15 nanostrain yr⁻¹. Dilatation in that volume would need a source these models do not contain, such as the pressurisation of the hydrothermal system.
| Elevation (m) | 2500 | 1500 | 1000 | 500 | 0 | −2000 | −5000 | −11,500 |
|---|---|---|---|---|---|---|---|---|
| Volumetric strain (microstrain) | −516 | −759 | −606 | −488 | −418 | −205 | −77 | −27 |
SHmax of the load is tangential around the summit at and above sea
level and radial from 5 km below sea level down (Fig. 23). The horizontal shear strain of
the load is 1–14 microstrain within 20 km of the summit (5th to 95th
percentile, median 3.7), which is 10²–10³ years of accumulation at the
geodetic rates (per-cell ratio of the load shear to the geodetic shear
rate within 20 km of the summit: 100, 369 and 1425 years at the 5th,
50th and 95th percentiles; data/processed/strain_3d.zarr,
variables load_max_shear_h and
tect_max_shear_rate).
The two fields are published on regular grids at fixed elevations
(strain_orientation.csv):
- the geodetic shortening axes (azimuth of maximum horizontal shortening, with the maximum horizontal shear strain rate and the right-lateral shear strain rate on WRSZ-parallel planes), every 5 km over the model box, at the grid levels nearest to 1500, 1000, 0, −2000, −5000, −10,000 and −15,000 m (1625, 1125, 125, −1875, −4875, −9875 and −14,875 m);
- the SHmax azimuth of the load, with its horizontal maximum shear
strain and volumetric strain, every 2 km within 20 km of the summit at
the same levels except inside the cone, where SHmax is undefined (2942
rows for both fields,
configs/gnss.yaml,volume.bars).
These grids are for comparison with the fast directions of shear-wave splitting, which aligned cracks orient parallel to the most compressive horizontal stress.
6.5.1 How the strain fields are computed
Both fields are first-order estimates. Neither is computed with
Green’s functions of the heterogeneous model or with a rheology other
than linear elasticity. This subsection gives the calculation as
implemented (rainier3d.geodesy.load,
rainier3d.geodesy.volume, script S18) and then lists what
it leaves out.
Tectonic strain rate. The horizontal strain-rate tensor , with , is the velocity-gradient fit of Sect. 6 at the surface. At depth it is not calculated but assigned: The vertical component follows from a vanishing vertical stress rate (plane stress). This is the thin-plate view of the upper crust: it holds when the sources of deformation are far or deep compared with the depth of interest and the crust is laterally uniform. No source (megathrust locking, fault slip, block rotation) is inverted from the GNSS velocities.
The shear on the WRSZ is resolved as with the horizontal unit vector along the strike and the horizontal normal. The sign is positive for right-lateral motion. The strike is the long axis of the covariance of the WRSZ epicentres.
Edifice-load stress. The load is the rock above the pre-volcanic surface of the geology model. Its columns of height are summed on 500 m cells into vertical point forces ( = 2500 kg m⁻³). The forces act on a flat reference plane at the mean elevation of the edifice base (1789 m). The stress at a point is the sum over of the Boussinesq solution for a point force on the surface of a homogeneous, isotropic, linear-elastic half-space (Johnson, 1985). At horizontal distance and depth below the plane, with and tension positive: These stresses depend on Poisson’s ratio () but not on the elastic moduli. Points within 250 m below the plane are left out, where the point-force field is singular.
Edifice-load strain. The stress is converted to strain with the isotropic compliance of each cell: with , and taken from the fused model.
- Cone interior. Above the half-space (higher than 1539 m), the stress is the laterally confined overburden, and , with the depth below the local ground.
- SHmax. It is the eigenvector of the horizontal stress tensor with the most compressive eigenvalue. It is undefined in the cone interior, where the horizontal stress is isotropic. Azimuths are in degrees east of north, from 0 to 180°.
What the calculation does not include.
- Green’s functions of the 3D model. The stress is that of a uniform half-space, so the stiffness contrasts of the model neither concentrate nor divert it. Applying the local compliance (Eq. 17) makes soft rock strain more under the same stress. The stress field, however, is not in equilibrium in the heterogeneous medium, and its axes do not rotate around stiff plutons or the soft edifice.
- Topography as part of the elastic body. The load sits on a flat plane. The cone above it is not part of the elastic domain, and its interior is approximated in one dimension.
- Rheology beyond linear elasticity. There is no viscoelastic relaxation of the warm lower crust or of the magma body, no plasticity, no pore-pressure coupling and no thermal stress.
- A tectonic source model. The GNSS rates are not explained by locking, fault slip or block motion, so their variation with depth (Eq. 14) is assumed rather than computed.
- Absolute stress. The load gives a static stress and GNSS a strain rate. Without the magnitude of the tectonic background stress the two cannot be summed, so their orientations are reported separately.
A consistent model would compute the same quantities in three steps:
- a static finite-element solution on the model mesh, with gravity acting on the real topography and heterogeneous and from the fused velocities;
- Green’s functions computed in the same 3D elastic model, used to invert the GNSS velocities for their sources before computing strain rates at depth;
- a viscoelastic lower crust for time-dependent loading.
The load pattern of Fig. 23, tangential beneath the summit and radial at depth, is the qualitative signature of any load on a cone. Heterogeneity would change its magnitudes and rotate its axes near stiffness contrasts. The depth extension of the GNSS axes is the least certain part of the product.
7 Geohydrology
Water controls much of what rainier3d describes:
- the seismic velocities of the shallow crust;
- the conductivity that maps alteration;
- the seasonal loading seen by GNSS (annual areal-strain amplitude of median 15 nanostrain over the model box, Sect. 6);
- the lahars and debris flows of Sect. 8.
The model compiles the hydrological information needed for a hydrological description of the mountain. It holds no hydrological state: it neither models groundwater flow nor assimilates hydrological observations. Table 26 lists what it holds.
| Component | Layer in rainier3d | Source | Section |
|---|---|---|---|
| Ice | glacier thickness and bed on the 100 m grid: 5.50 km³ of ice in 219 glaciers covering 97.3 km², at most 363 m thick | IceBoost v2 (Maffezzoli, 2025), RGI 6.0 (RGI Consortium, 2017) | Sect. 4.1 |
| Snow | NDSI of the Sentinel-2 L2A median composite of 1 August – 30 September 2025, the end of the melt season: median −0.48 (5–95%: −0.60 to −0.24) | Sentinel-2 (European Space Agency, 2025) | Sect. 4.2 |
| Surface water | 60,174 flowlines (1:24,000) with Strahler order 1–8 and mean annual flow (EROM QAMA), rasterised to stream order on the 100 m grid | NHDPlus HR (U.S. Geological Survey, 2026b) | Sect. 4.2 |
| Soil storage | soil thickness (depth to a lithic contact): median 1.41 m (5–95%: 0.54–1.97 m), with the 2.01 m maximum read as ≥ 2 m; texture, bulk density and rock fragments at 0–1.5 m | SOLUS100 (Nauman et al., 2024) | Sect. 4.2, Sect. 4.3 |
| Soil hydraulics | saturated hydraulic conductivity and van Genuchten θs, θr, α and n in six layers to 2 m; 0–1 m harmonic-mean conductivity median 1.6 × 10⁻⁵ m s⁻¹, porosity 0.65 | POLARIS (Chaney et al., 2019) | Sect. 4.3 |
| Regolith | depth to bedrock: median 19.6 m (5–95%: 11.4–26.8 m) | SoilGrids250m 2017 (Shangguan et al., 2017) | Sect. 4.3 |
| Groundwater | water-table depth, two estimates block-averaged to 100 m: random forest, median 10.1 m (5–95%: 4.8–20.4 m); global model, median 23 m (0–306 m) | Ma et al. (2026) (Ma et al., 2026b); Fan et al. (2017) (Fan et al., 2017) | Sect. 4.2 |
| Interception and transpiration | canopy height (airborne lidar and ETH 2020 at 10 m, GEDI L3 at 1 km), lidar vegetation cover, Sentinel-2 leaf area index, GEDI L2B plant area index and GEDI L4B aboveground biomass | lidar, Sentinel-2, GEDI | Sect. 4.4 |
| Hydrothermal fluids | alteration intensity (0–1) from apparent resistivity at four frequencies, sensed to at most 150 m below the ground or glacier bed; 10.6 km² of the 126 km² of surveyed edifice lava reach 0.5 or more | 1996 helicopter EM survey (Rystrom et al., 2000) | Sect. 5.3.2 |
| Hydrological loading | annual areal-strain amplitude and peak day on the 5 km GNSS strain grid: median 15 nanostrain over the model box (5–95%: 4–39), peaking in late August | GNSS (S18) | Sect. 6 |
The water table. The two estimates differ in level and in pattern.
- Ma et al. (2026). The random-forest estimate of Ma et al. (2026b) (ensemble mean on the ~24 m CONUS2 grid, block-averaged to 100 m by S2) keeps the water table within 20 m of the ground in 95% of the cells of the box (median 10.1 m, 95th percentile 20.4 m, maximum 117 m).
- Fan et al. (2017). The global groundwater model of Fan et al. (2017) (annual mean at 30″, about 1 km, block-averaged to 100 m) places it hundreds of metres down under ridges: median 23 m, 95th percentile 306 m, maximum 847 m, and deeper than 100 m in 27% of the box.
Water table and depth to rock. The water table also sits between the two estimates of depth to rock (Sect. 4.3, Fig. 5): below the 1.41 m median SOLUS soil and above the 19.6 m median SoilGrids bedrock in 92.8% of the cells. Whether it lies in unconsolidated regolith or in fractured rock is therefore not known from the data.
For the shallow seismic model the choice matters more than either value. A water table separates dry from saturated rock, and saturation raises Vp and Vp/Vs below it. The Ma et al. grid is used under its CC-BY-NC-ND licence for non-commercial research and is not redistributed. Its ensemble uncertainty is served through the HydroGEN platform and needs an account.
Groundwater observations. No aquifer maps exist for the park. The groundwater study of the upper White River (Fuhrig et al., 2024) is the only park-scale assessment we found. The surficial hydrothermal system described by Frank (1995) is represented only through the alteration it left.
Wells. Script S31 (scripts/31_wells.py,
configs/wells.yaml) fetches the water levels and borehole
logs of the box once, up to 23 September 2026, and caches them under
data/raw/wells/: the well reports of the Washington
Department of Ecology (Washington State Department of Ecology,
2026), requested without owner names or addresses; the
groundwater levels of the USGS (U.S. Geological Survey, 2026a), one
median per well; and the subsurface database of the Washington
Geological Survey (Washington Geological Survey, 2026c),
whose water wells are Ecology reports and are counted once. A static
level deeper than the completed well or than 300 m is rejected. Table 27 compares the 5,591 accepted water levels
with the two gridded water tables at the nearest 100 m cell; S31 writes
the numbers to outputs/wells/summary.json.
| Water table | Wells | Observed median | Gridded median | Median of gridded − observed | Median absolute difference | Spearman r |
|---|---|---|---|---|---|---|
| Ma et al. (2026), all | 5,591 | 5.8 m | 16.1 m | 2.7 m | 7.1 m | 0.27 |
| Ma et al. (2026), at or above 600 m | 142 | 4.6 m | 9.1 m | 2.7 m | 3.5 m | 0.27 |
| Fan et al. (2017), all | 5,591 | 5.8 m | 16.8 m | 3.3 m | 12.3 m | 0.27 |
| Fan et al. (2017), at or above 600 m | 142 | 4.6 m | 6.4 m | 3.6 m | 8.5 m | −0.13 |
Both grids place the water table deeper than the wells do, and both rank the wells poorly. The wells are a lowland sample: 97% lie below 600 m, so they test the grids where people drill, not on the volcano. The 23 bedrock picks of the borehole database, all in the lowland, have a median depth of 40.5 m, against 22.4 m for SoilGrids and the 2 m reach of SOLUS at the same cells.
How the layers can enter the seismic model.
- Fluid substitution. The critical-zone columns separate unsaturated from saturated material at the water table of Fan et al. (2017) and apply Gassmann substitution with a patchy fluid (Sect. 5.1.2); the crack-closure law of the crustal cells takes hydrostatic pore pressure below the same water table (Sect. 5.1.1).
- Valley fill. Valley fill along the mapped streams would appear as slow, high-Vp/Vs bodies; at present the unconsolidated deposits take the thickness stated in the map unit description for eight map symbols and fixed defaults elsewhere (glacial drift and lahar deposits 15 m, alluvium and colluvium 10 m, Sect. 5.3.1).
- Hydrothermal core. A fluid-saturated core would join the alteration field, which at present reaches only the top ~150 m sensed by the EM survey (Sect. 5.3.2).
- Loading. The annual strain signal (peak in late August) and the snow and water storage could be compared as a loading model; the model holds only end-of-season NDSI, not snow water equivalent.
Only the first coupling is applied, through the critical-zone columns (Sect. 5.2).
8 Mass movements: landslides, lahars, debris flows and avalanches
Mass movements are Rainier’s most frequent hazard. Debris flows and outburst floods from its glaciers recur on a scale of years (Legg et al., 2014; Walder and Driedger, 1995), rock and ice avalanches fall from its steep upper slopes (Crandell and Fahnestock, 1965), and its lahars have reached the Puget Lowland (Crandell, 1971; Vallance and Scott, 1997). This section defines a catalogue of these events on the model grid: its scope, its record structure and its sources (Table 29). The catalogue adds a time-dependent layer to the model and provides labelled sources for the seismic detection of surface events.
Scope. Four classes of event:
- landslides, including rock avalanches and edifice collapses
(catalogue classes
rock_avalanchefor rock falls, topples and rock or ice avalanches,slidefor slides and debris slides, andcomplexfor complex or unrecorded movement types); - lahars, kept as the mapped outlines of the Qvl units of the 1:100,000 geologic map (Osceola Mudflow, Electron Mudflow, other lahar deposits) (Washington Geological Survey, 2026a);
- debris flows, including glacial outburst floods that bulk into
debris flows (inventory polygons of type Flow, Debris flow or
Hyperconcentrated flows, and seismic events whose type names a flow or
an outburst; class
debris_flow); - snow and ice avalanches (class
snow_ice_avalanche: types naming snow, or an ice avalanche without rock; the two such events in the box are seismic events of Allstadt et al. (2017)).
For each event, the catalogue records the following:
- class (field
cls, one of the five classes above) and date (date, ISO day, 377 of the 1,649 events), or the relative age of undated deposits (age, for example “Pre-historic (>150 years)”, 272 events); - source area and runout on the model grid: flows as polygons clipped
to the model box (466 in
flows.gpkg), events as points in EPSG:32610 (located: crown 1,623, seismic location 19, mapped point 7), withcrown_demgiving the 3DEP resolution under each crown; - volume where published (
volume_m3, converted from ft³ for the inventory: 260 events, 247 inventory deposits and 13 seismic events) and failure depth (depth_m, converted from ft, 247 events); - the triggering conditions where known [TODO:
events.csvhas no trigger field; the 351 landslides of the January 2009 storm are identifiable only by date; add a field or drop this item]; - the source (
source, a key ofconfigs/sources.yaml, whose entry carries the licence; the Washington inventory states none) and a confidence (confidence: the inventory’s confidence class, or the location uncertainty in km for seismic events).
The catalogue. Script S24 fetches four
machine-readable sources, clips them to the box and writes the catalogue
to outputs/mass_movements/ (Table 28, Fig. 24).
docs/mass_movements.md lists each service call with its
endpoint, parameters, paging and cache path. The catalogue has two
parts.
- Flows. Lahar deposits and debris flows keep their mapped outlines, because their runout is the information. The lahar deposits are the Qvl units of the 1:100,000 map (Washington Geological Survey, 2026a): the Osceola Mudflow (Vallance and Scott, 1997) covers 79.7 km² of the box, the Electron Mudflow 18.8 km² and other lahar deposits 16.0 km². The debris flows are the flow-type polygons of the Washington State Landslide Inventory Database (Washington Geological Survey, 2026d): 198 from its lidar-protocol mapping and 265 from its compilation of older mapping.
- Events. Every other mass movement is a point. The Allstadt et al. compilation of seismogenic mass movements (Allstadt et al., 2017) gives 19 events in the box with a time and a seismic location: the ten 2011 rock and ice avalanches of the Nisqually headwall, five rock falls from Russell Cliff in 1989 and 1992, a 2010 snow avalanche, a 2014 ice avalanche, and the August 2015 rock fall and debris flow. The inventory gives 1,624 landslide polygons of other types and seven recent-landslide points. A polygon becomes a point at its crown, the highest point of its outline, where failure began. The crown is sampled every 2 m on a 1 m window of the USGS 3DEP elevation service around each polygon (U.S. Geological Survey, 2026c), which returns the best 3DEP source at each point: 994 crowns lie on 1 m lidar, 441 on 3 m and 186 on 10 m data. Three windows were refused by the service on every attempt; those crowns are placed on the 30 m DEM and flagged. The compilation repeats three protocol deposits; those copies are dropped.
The inventory records a failure depth for every lidar-protocol deposit (453 deposits in the box, median 14.6 m), so these deposits could later be given a volume in the model. The 1998 lahar inundation zones (Hoblitt et al., 1998; Schilling et al., 2008) are kept as a separate hazard layer, not as events: the case 1 zone covers 964 km² of the box. The Exotic Seismic Events Catalog version 3 (Collins et al., 2025) extends the seismic compilation to 2025 but has no scripted download yet. The slope, local relief and valley depth at each event and in each flow deposit are compared with the whole box in Sect. 4.5 (Table 8).
| Part | Class | Source | Count | Area (km²) |
|---|---|---|---|---|
| Flows | Osceola Mudflow | Washington Geological Survey (2026a) | 1 | 79.7 |
| Electron Mudflow | Washington Geological Survey (2026a) | 1 | 18.8 | |
| Other lahar deposits | Washington Geological Survey (2026a) | 1 | 16.0 | |
| Debris flows | Washington Geological Survey (2026d) | 463 | 11.2 | |
| Events | Rock fall, rock and ice avalanche | seismic 16; mapped 40 | 56 | |
| Snow or ice avalanche | seismic | 2 | ||
| Debris flow, outburst flood | seismic | 1 | ||
| Slide, debris slide | mapped 316; recent 7 | 323 | ||
| Complex or unknown type | mapped | 1,267 |
Other machine-readable sources. The U.S. Landslide Inventory (Belair et al., 2025; Mirus et al., 2020) compiles the same state data nationally, and the compilation layer includes the park-wide mapping of 448 mass movements over 37 km² by Riedel and Dorsch (2016). PNSN classifies surface events in its own catalogue, but these classes are not in ComCat: within 25 km of the summit, ComCat lists 14,288 events and none of them is a surface event. The curated PNSN dataset of Ni et al. (2023) and the classifiers of Kharita et al. (2026) give labelled waveforms for training detectors.
Sources in the literature. Other sources are reports and papers, from which events are digitised.
- Lahars. Holocene lahars and their deposits: Crandell (1971), Scott et al. (1995), and the Osceola Mudflow (Vallance and Scott, 1997).
- Rock avalanches. The 1963 rock avalanches from Little Tahoma Peak (Crandell and Fahnestock, 1965).
- Debris flows and outburst floods. Along Tahoma Creek (Walder and Driedger, 1994; Walder and Driedger, 1995), and debris-flow initiation in proglacial gullies (Legg et al., 2014).
- River response. River aggradation measured by repeat lidar (Anderson and Pitlick, 2014).
- Seismic signatures. Seismic and acoustic signatures of mass movements at volcanoes (Allstadt et al., 2018), and the lahar-detection network of the Cascades Volcano Observatory (Kramer et al., 2024).
- Snow avalanches. Observations are held by the Northwest Avalanche Center (Northwest Avalanche Center, 2026), with programmatic access on request.
| Class | Main sources | Machine-readable |
|---|---|---|
| Landslides, rock avalanches | WGS inventory (with NPS mapping); U.S. Landslide Inventory; ESEC | yes (polygons; seismic events) |
| Lahars | Crandell (1971); Scott et al. (1995); Vallance and Scott (1997); USGS hazard zones | zones only; events from the literature |
| Debris flows, outburst floods | Walder and Driedger (1994, 1995); Legg et al. (2014); ESEC; PNSN surface events | partly |
| Snow and ice avalanches | Northwest Avalanche Center; PNSN surface events | on request |
Each record carries its source, like every other layer. Records from the literature are to be entered from their tables with a citation to the page.
9 Accessing the model
9.1 Products and the client
The derived products are published as assets of the release
products-v1.0.0 of the code repository, under CC-BY 4.0 (Table 30). The archive names and their SHA-256
checksums are listed in the release file SHA256SUMS and in
the package catalogue src/rainier3d/products.json.
| Product | Size | Content |
|---|---|---|
model |
111 MB | the subsurface model, model.zarr (xarray DataTree, zarr
v3, UTM 10N and NAVD88): levels L1–L3 (Table 2)
with Vp, Vs, density, Qp, Qs, unit, alteration, and the geology and
calibrated regional inputs, plus the surface layers that rainier3d
computes (units, deposit thickness, ice, alteration, vegetation indices
and the 0–1 m soil summaries); third-party fields that are only
resampled onto the grid (water tables, soil and bedrock depths, Vs30,
land cover, canopy height, streams, the /soil profiles) are
left out and rebuilt by S2 |
grids |
55 MB | the subsurface model on one uniform 500 m grid (S9): CF netCDF (vp, vs, rho, qp, qs, alteration, air, surface_elevation; UTM 10N, elevation up), EMC-style netCDF (longitude, latitude, depth), NonLinLoc P and S slowness grids |
strain_3d |
72 MB | strain in the volume (S18, Sect. 6.5) on a 500 m horizontal by 250 m vertical grid: GNSS strain rate carried down (areal, volumetric, maximum shear, shortening azimuth, right-lateral shear on planes parallel to the WRSZ) and the static strain of the edifice load (full tensor, volumetric, SHmax azimuth) |
edifice_load |
115 MB | stress from the weight of the edifice, Boussinesq half-space solution, on L1–L3 (S18) |
alteration |
1 MB | alteration from the 1996 helicopter electromagnetic survey (S22, Sect. 5.3.2; Rystrom et al. (2000); Finn et al. (2001)): 3D intensity in the top 200 m, bedrock elevation, resistivity and depth of investigation per frequency, apparent magnetisation; CF netCDF, UTM 10N |
mass_movements |
1 MB | the mass-movement catalogue (S24, Sect. 8): events, flow deposits and a summary (the fault traces and the 1998 lahar zones are copies of their sources and are left out), GeoPackage and CSV; the Washington landslide inventory states no licence |
gnss |
4 MB | station velocities (MIDAS (Blewitt et al., 2016)) with quality
flags, strain-rate grid, daily regional strain series and the download
manifest (S17, S18); refreshed every Monday at 09:00 UTC in the rolling
release gnss-latest, with dated copies;
products-v1.0.0 holds the copy of 2026-09-01 |
Table 31 states, product by product,
what uncertainty a user receives and what is not quantified. Most
gridded fields carry none per cell: their parameters are author choices
within published ranges (m1_placeholder) or come from
rule-based geometry, and the travel-time calibration constrains only
three global multipliers and a depth profile. Two resampled third-party
uncertainties are not in the release because the release holds only
computed fields (Sect. 9); S5 and S2 rebuild
them in model.zarr.
| Product | Uncertainty provided | Size | Not quantified |
|---|---|---|---|
model: Vp, Vs, density |
travel-time fit on held-out events; posterior s.d. of the
calibration multipliers; Vs uncertainty of CRESCENT Gen0
(vs_unc_regional, rebuilt by S5, not in the release) |
RMS 0.093 s (P), 0.188 s (S); ln V₀ 0.023, ln P* 0.15, ln Vs 0.017; CRESCENT Vs 5.3% (L1), 1.8% (L2), 1.5% (L3), medians | per-cell uncertainty; the unit parameters, geometry rules and alteration factors; the geology and corrected regional models differ by up to 5.1% between 0.3 and 4 km |
model: critical zone (/cz) |
none | depth-to-rock priors differ by a factor of 13.9 at the median (Sect. 4.3) | all granular rock-physics and hydraulic parameters (not calibrated) |
model: surface layers |
ice thickness error of IceBoost v2
(ice_thickness_error, rebuilt by S2, not in the release);
water tables against wells (Table 27) |
ice 32 m median (86% of the thickness); water table median misfit 7.1 m (Ma et al.), 12.3 m (Fan et al.) | soil and vegetation layers carry their source products’ uncertainty, which is not propagated |
alteration |
none | intensity thresholds (m1_placeholder); depth beyond
~150 m |
|
gnss |
standard deviation of the dilatation rate
(dilatation_sigma in the strain grid) |
3.9 nanostrain yr⁻¹, median | shear rate and azimuth |
strain_3d |
none | the extension of the surface strain rate to depth is an assumption (Sect. 6.5.1) | |
edifice_load |
none | half-space approximation, density and Poisson’s ratio (author choices) | |
mass_movements |
none | completeness by class and date; three crowns on the 30 m DEM | |
| relocated catalogue | NonLinLoc formal uncertainty per event | 0.68 km in depth and 0.56 km horizontally, medians over grade A and B events | velocity-model error in the locations |
A products release holds only what rainier3d computes;
configs/products.yaml classifies every variable of the
model as computed, geometry or resampled, and a test fails on an
unclassified one. Each release also carries REBUILD.md,
which gives, for every product, the commit that made it, the data
freeze, the stages to run from a clean clone and the inputs that must be
obtained by hand, and inputs.csv, which lists every cached
file each product reads with its SHA-256. S20 refuses to publish from a
working tree with uncommitted changes, so the commit named in
REBUILD.md is the code that made the products.
The archives need no software from this project. The subsurface model is downloaded, checked and opened with standard tools:
B=https://github.com/Denolle-Lab/mt-rainier-digital-model/releases/download/products-v1.0.0
curl -LO $B/SHA256SUMS -LO $B/rainier3d_model.zarr.zip -LO $B/rainier3d_grids.zip
sha256sum -c SHA256SUMS --ignore-missing # or: shasum -a 256 -c (macOS)
unzip rainier3d_model.zarr.zip && unzip rainier3d_grids.zipimport xarray as xr
tree = xr.open_datatree("model.zarr", engine="zarr", consolidated=False)
vs = tree["L2"].to_dataset().vs.interp(x=594500, y=5189500, z=-2000) # m/s, 2 km below sea level
g = xr.open_dataset("grids/rainier3d_fused_500m.nc") # whole model, 500 m spacingIn model.zarr, cells above the ground are empty (NaN),
and the unit codes are those of configs/units.yaml.
A client is installed with the package. It is available as the
rainier3d command and as the Python module
rainier3d.api. It downloads a product once, checks its
checksum, caches it, and writes grids for other codes:
pip install "git+https://github.com/Denolle-Lab/mt-rainier-digital-model"
rainier3d list # products, versions and licences
rainier3d fetch model # prints the folder that holds model.zarr
rainier3d export model --format specfem --bbox -122.0 46.7 -121.6 47.0 \
--dx 250 --dz 250 --zmin -10000 --out out/tomography_model.xyz
rainier3d export model --format nll --dx 500 --dz 500 --out out/nll/rainier3d
rainier3d export surface --layers elevation soil_thickness --out out/surface/ # GeoTIFFs
rainier3d sample --lon -121.76 --lat 46.85 --depth 5000 # values at one point
rainier3d fetch gnss # latest weekly strain productimport rainier3d.api as r3
tree = r3.open_model() # downloads once, then reads the cache
g = r3.grid(tree, bbox=(-122.0, 46.7, -121.6, 47.0), dx=250, dz=250, zmin=-10000)
r3.export(g, "netcdf", "out/rainier3d_250m.nc") # also nll, emc, specfem, pylith, csvThe repository file docs/products.md gives examples for
every product.
Resampled grids are interpolated linearly within each level. Cells
above the ground take the value of the first rock cell beneath them, so
receivers at the surface sit in rock, and a variable air
flags them. Table 32 lists the formats.
| Format | Coordinates | Use |
|---|---|---|
| CF netCDF4 | UTM 10N x, y (m); z = elevation (m, up) | eikonal solvers (pykonal, fteikpy), custom codes |
| NonLinLoc 3D grids (P, S), slowness × cell size | UTM 10N km, depth down below sea level,
TRANSFORM NONE |
Grid2Time, NLLoc |
| EMC netCDF3 | longitude, latitude, depth below sea level (km) | EarthScope Earth Model Collaboration tools |
SPECFEM3D tomography_model.xyz |
UTM 10N m, elevation up, x fastest | SPECFEM3D Cartesian |
| PyLith spatial database (SimpleGridDB): density, Vs, Vp, with a parameter snippet | UTM 10N m, elevation up | PyLith static and quasi-static elasticity |
| CSV | x, y, z and variables, one row per node | spreadsheets, GIS |
| GeoTIFF (surface layers) | UTM 10N, 100 m | GIS |
9.2 Locating earthquakes in the three-dimensional model
Of the 15,660 PNSN earthquakes since 1980 in the box, 500 have ComCat hypocentres at or above the ground surface, mostly shallow edifice events. Those events were located in one-dimensional models that know neither the topography nor the slow edifice. Script S26 relocates the catalogue with NonLinLoc (Lomax et al., 2000) twice: once in the PNSN 1D model and once in rainier3d. Both runs use the same picks, stations, grid geometry and settings, so the difference between the two catalogues isolates the velocity model. ComCat is kept as a third reference. The settings are:
- Grids. Equal spacing in all directions (500 m here; 250 m is practical near the edifice). The time grids run from the summit rounded up to a whole cell (4.5 km above sea level) to 20 km below sea level. The 1D model is written on the same grid as the 3D model. The search volume is inset 1 km from each side of the box and starts one cell below the top of the time grids.
- Keep hypocentres in rock. The search volume is
masked below the ground with
LOCTOPO_SURFACE, reading an ASCII GMT grid of the DEM in kilometres on the UTM frame. WithTRANS NONE, NonLinLoc compares −z with that grid. The exported velocities are left unchanged, and air cells carry the rock velocity below them, so travel times are unbiased. Slow air above a rock skin is an alternative, but the skin must be at least two cells thick: with a one-cell 500 m skin, Grid2Time’s finite-difference start box reaches the slow air around summit stations and delays P times at station OBSR by 0.41 s on average. - Stations. The 45 stations inside the box that carry
picks, in the UTM kilometre frame, with depth = −elevation/1000
(
GTSRCE <sta> XYZ <x_km> <y_km> <−elev_km> 0.0). - Travel times and location. Grid2Time with the
Podvin–Lecomte finite-difference eikonal solver
(
GT_PLFD 1.0e-3,GTMODE GRID3D ANGLES_NO) (Podvin and Lecomte, 1991); NLLoc with the equal-differential-time likelihood (LOCMETH EDT_OT_WT) and oct-tree search (LOCSEARCH OCT 10 10 6 0.01 30000 10000). Events need at least six picks, four of them P. Gaussian pick errors are 0.14 s for P and 0.23 s for S, as in the calibration; model errors are 0.1 s (LOCGAU 0.1 0.0) and grow with travel time as 2% of it, between 0.05 and 0.5 s (LOCGAU2 0.02 0.05 0.5). - Quality. Graded from the rainier3d location. Grade A: gap < 180°, at least eight phases and depth standard deviation < 2 km. Grade B: gap < 250° and at least six phases. Grade C: the rest.
The 2023–2025 catalogue. We applied S26 to the 371 PNSN earthquakes of magnitude 1 or larger in the box from 2023 to 2025. They carry 20,425 analyst picks (12,546 P and 7,879 S) at 45 stations inside the box, and 370 have at least six picks. NonLinLoc locates 347 events in the 1D model and 354 in rainier3d. The others are rejected because their most likely location lies on the edge of the search volume (Table 33):
- in rainier3d, 9 rejected events lie at its base, at 18.2 km below
sea level, the deepest node of the search grid (z₀ = 3.8 km below sea
level plus 44 steps of 0.5 km in
scripts/26_relocate_catalog.py); - the remaining rejections, in either model, are epicentres at the edge of the box, beyond which there are few stations.
| ComCat | NonLinLoc, PNSN 1D | NonLinLoc, rainier3d | |
|---|---|---|---|
| Located (of 370) | – | 347 | 354 |
| Rejected: base of the volume / side | – | 2 / 21 | 9 / 7 |
| Median RMS, grade A and B (s) | – | 0.119 | 0.106 |
| Median depth sd; largest horizontal uncertainty (km) | – | 0.61; 0.61 | 0.68; 0.56 |
| Above the ground | 0 | 4, pinned at the mask | 2, by 7 and 27 m |
| Summit (165 events): median elevation; 5–95% range (km) | −0.31; −1.29 to 2.18 | −0.28; −0.90 to 0.77 | −0.63; −1.43 to 0.91 |
| WRSZ (129 events): median elevation; 5–95% range (km) | −8.8; −14.7 to −3.7 | −9.6; −16.0 to −3.4 | −9.6; −15.2 to −4.6 |
What changes. The residuals fall by 11% in rainier3d (median RMS 0.106 against 0.119 s). The events move a median 0.5 km horizontally and 0.33 km deeper than in the 1D model (10th–90th percentile −0.52 to +1.43 km).
- Summit. The largest change is under the summit. The 1D model gathers the events near sea level, over 1.7 km (5–95%). rainier3d places them 0.35 km deeper (median) and spreads them over 2.3 km. In the 1D model, four events rise until they meet the topography mask: ComCat places them 2.8–7.1 km below sea level, and rainier3d between 0.5 km above and 9.9 km below it.
- Above the ground. Two events end above the ground in rainier3d, by 7 and 27 m, on the flanks at 2.5–2.6 km elevation. The topography mask of NonLinLoc and this measure read the same 100 m surface grid, but interpolate it differently between its nodes, and the ground varies by 65 and 94 m within 100 m of these two epicentres; the excess is below that relief.
- WRSZ. The median depth changes by less than 0.1 km, and the depth range narrows from 12.6 to 10.6 km.
- Edges. Epicentres near the northwestern and southeastern edges of the box shift outward in both models, where the station coverage ends.
In this period ComCat places no event above the ground. The problem of the 500 above-ground events therefore lies in the older part of the catalogue, which S26 can relocate once its picks are cached (Sect. 10).
9.3 The three-dimensional viewer
The viewer runs in a web browser, including on phones. It is a React and three.js application (MIT licence) published at https://denolle-lab.github.io/mt-rainier-digital-model/, and it draws the following on the terrain:
- the 38 draped layers of
model/layers.jsonin the data release (Sect. 4), from Sentinel-2 imagery, geology, ice and soil thickness to canopy, vegetation indices, land cover, water-table depth, soil texture and hydraulic properties, depth to bedrock, Vs30 and terrain geometry; - the alteration field at the surface and the apparent magnetisation from the 1996 helicopter survey (Sect. 5.3.2);
- the 970 sensor sites of the S8 inventory (EarthScope FDSN, including the 2025 node array Z5 (Schmandt, 2025); EarthScope GNSS; Synoptic), 123 permanent and 847 temporary: seismometers, accelerometers, geophone nodes (813), infrasound, GNSS, strain and tilt meters, weather, snow and streamflow stations, and the Paradise–Nisqually Entrance distributed acoustic sensing (DAS) fibre with 3,191 channels, drawn as permanent or temporary and filtered as current or past, with the 2025 node array and the DAS fibre as surveys on their own toggles;
- the PNSN seismicity from ComCat (U.S. Geological Survey, 2026d): 15,631 events from 1980 to 23 September 2026, magnitude −1.6 to 4.9, in the overview box (46.58–47.12° N, 122.16–121.40° W), drawn at their hypocentres; the 435 that ComCat places above the viewer terrain are counted but not drawn;
- the mass movements of Sect. 8: the 466 flow deposits as a draped layer and the 1,649 events as points on the ground (crown or seismic location), filtered by class and date from the legend;
- the December 2025 atmospheric-river storm, replayed over its 216 hourly frames: precipitation as falling drops and discharge as bars at the 7 USGS gauges and 3 virtual sensors inside the overview box.
Below the ground it shows Vs, Vp, Vp/Vs, density, units, alteration
and the strain fields of Sect. 6.5, on a
vertical section along the terrain cut and on a horizontal depth slice.
For the strain fields, the depth slice also carries their orientation
bars. A panel under the subsurface controls shows the relocated
catalogue of Sect. 9.2, as located by
ComCat, in the 1D model and in rainier3d, with optional lines from each
1D location to its 3D location. Its map data are built by scripts S8,
S11, S18, S24 and S26 and published as a release asset named in
web/viewer/DATA_RELEASE.
10 Limitations
- Rock-physics parameters. The unit parameters of Table 9 are chosen within published ranges and scaled by three global multipliers, of which V₀ and the rock Vs are resolved by the travel times and P* is not (Table 17). The alteration factors and the Q rule are likewise author choices. The planned replacement is a table of laboratory and field measurements on Cascade and analogue volcanic rocks (Heap and Violay, 2021; Watters et al., 2000), against which the calibrated V₀ can be tested. Per-lithology multipliers need more stations on plutonic and sedimentary units.
- Unsourced parameters. Values chosen by the authors
carry the registry key
m1_placeholder: all 16 unit rows ofconfigs/petrophysics.csv, the alteration, magma-body and Q factors ofconfigs/perturbations.yaml, three alteration thresholds inconfigs/units.yaml, and the quality-control, strain, region, load and volume choices ofconfigs/gnss.yaml. Replacing them from the literature is tracked work. - Geometry by rules. Contacts are vertical and unit bases are flat; the fusion smooths them below the critical zone with author-chosen cutoffs (Sect. 5.3.3), but does not place them. Structural modelling from the map contacts and orientation measurements would replace the column rules.
- Hidden alteration and deep bodies.
- The alteration field covers only the top ~150 m. The buried alteration of the upper west flank (Finn et al., 2001) is not represented.
- The magma body is a prescribed sphere whose size and anomaly are author choices; the tomography of Sect. 5.3.7 has almost no resolution at its depths.
- The Southern Washington Cascades Conductor (Stanley et al., 1996) is not represented.
- Regional correction. It is one depth profile for the whole box. The iMUSH comparison shows that it holds beneath Rainier but makes Vs about 7% too fast at 2–6 km in the south, so it should vary laterally.
- Top 300 m. The calibrated geology, critical zone included, is 19% faster in Vp and 25% faster in Vs than the shallowest layer of the Cascadia model, and the travel times constrain it only beneath the stations. Near-surface Vs from dense nodal and fibre arrays, or station terms estimated with a prior on their size, can settle which is right. Station terms are not estimated in the calibration.
- Depth coverage of the calibration. Only 30 of the 88 events are deeper than 11 km. Larger pick sets, such as the curated PNSN dataset (Ni et al., 2023), and Rainier-specific models (Flinders and Shen, 2017; Obrebski et al., 2015) would constrain the deep correction.
- Reference 1D model. The PNSN one-dimensional model used for comparison is read from a local table whose identity (P3 Puget Sound or C3 Cascades) is not documented [TODO: confirm with PNSN and cite].
- Regional model below 9.9 km. The regional model there is CRESCENT Vs with Brocher’s Vp, shifted toward the Cascadia model down to 16 km by the blend of Sect. 5.3.3; the deep level of the Cascadia model (10.8–59.4 km) is not used.
- Depth to rock. The two estimates differ by a factor of 13.9 at the median (SOLUS100 1.41 m, capped at 2.01 m; SoilGrids 2017 19.6 m), and the water table lies between them in 92.8% of the cells (Sect. 4.3). No local data constrain the thickness of soil, regolith and weathered rock between 2 m and the top cells of L1, and the unconsolidated deposits of the geology model take map-unit thicknesses for eight symbols and fixed defaults (10–15 m) for the rest.
- Resolution. L1 is 250 m × 50 m, so thin deposits fall below the cell size.
- Glaciers. IceBoost exceeds the 1981 radar thicknesses on Emmons and Winthrop glaciers; its total should be compared with the lidar-based ice volume of Sisson et al. (2011).
- Relocated catalogue. Only the 2023–2025 events of magnitude 1 or larger are relocated. The 500 older ComCat events at or above the ground are not relocated until their picks are cached, and 9 events stop at the base of the search volume in rainier3d.
- Geodesy and strain. The GNSS network does not
resolve strain on the edifice. The strain in the volume uses no Green’s
functions of the heterogeneous model and no rheology beyond linear
elasticity (Sect. 6.5.1):
- the geodetic strain rate at depth is assigned (depth-invariant horizontal rate, plane stress), not inverted from sources;
- the edifice-load stress is that of a uniform half-space with a flat surface, converted to strain with the local stiffness, with a confined-overburden approximation inside the cone.
- Hydrology. The model has no hydrological state beyond the critical-zone columns (Sect. 7, Sect. 5.2), and no process of the model responds to precipitation.
- Mass-movement catalogue. Events from reports and papers are not yet digitised, the Exotic Seismic Events Catalog v3 has no scripted download, three landslide crowns sit on the 30 m DEM, and the Washington landslide inventory states no licence.
- Vegetation layers. Only the GEDI L3 canopy height is rebuilt by script (S28). The 10 m lidar grids were made in QGIS, and the GEDI L2B plant area index, L4B biomass and the soil map are read from delivered files.
- Licences. The lidar canopy layers (Washington DNR Lidar Portal terms not confirmed) and the soil-map image (source undocumented) are shown in the viewer but not published. The licences of CRESCENT Gen0, IceBoost v2, RGI 6.0, GlaThiDa, the Synoptic station catalogue and the Fan et al. (2017) water table are not yet recorded in the registry.
11 Conclusions
rainier3d assembles, in one reproducible structure, what is openly known about the subsurface and surface of Mount Rainier. Seismic monitoring at the volcano relies on one-dimensional models, and the regional three-dimensional models do not resolve the edifice or the near surface; rainier3d fills the space between the two.
- Subsurface. A geology-driven velocity model, fused with the regional tomography and calibrated on PNSN P and S−P travel times with every event relocated in 3D. On the held-out events the calibration lowers the RMS residual from 0.125 to 0.094 s for P and from 0.355 to 0.188 s for S. It raises the zero-pressure Vp of the rock units by a factor of 1.45 and makes the regional Vs beneath Rainier 5–9% faster at 2–7 km, a correction that the iMUSH tomography supports where it resolves Vs.
- Critical zone. Soil, Quaternary cover, weathered and fractured rock in fine columns down to 150 m, with porosity, permeability, saturation and effective stress, joined to the rock below with one water table and one pore pressure.
- Tomography. A local-earthquake tomography of 3770 PNSN earthquakes on a 250 m grid, which leaves the critical zone as built, lowers the held-out residuals further, to 0.0722 s for P and 0.1206 s for S, and resolves lateral structure of about 12 km between sea level and 6 km depth (Supplement S1).
- Surface. Layers for geology, ice, soil, water, vegetation, terrain and imagery on a common grid, and a catalogue of mass movements.
- Geodesy and load. GNSS strain rates, refreshed weekly, and the stress of the edifice load at depth, both carried into the model volume as strain.
- Earthquake locations. The 2023–2025 PNSN catalogue relocated with NonLinLoc in the 1D and 3D models with the same picks: the median RMS falls from 0.119 to 0.106 s, and two events lie above the ground in rainier3d, by 7 and 27 m, within the resolution of the 500 m grid, against four pinned at the topography in the 1D model.
Every cached input is checksummed and fetched by script from its
archive, except four model inputs and four viewer files read from local
or delivered copies (Sect. 3). Each parameter
names its source or is marked as an author choice
(m1_placeholder), and the products can be downloaded with
one command in the formats that seismological codes read. The
mass-movement catalogue carries time, and the critical-zone columns
carry the state variables on which a groundwater model can run. The next
steps are a laterally varying regional correction, an uncertainty for
every gridded product, the events digitised from the literature, and a
water budget on the critical-zone columns that would let precipitation
change the seismic properties.
Code and data availability
The code, configuration, source registry and this paper are at https://github.com/Denolle-Lab/mt-rainier-digital-model
(BSD-3-Clause). The 3D viewer in web/viewer/ and the
vendored canopy-storage code in
third_party/canopy-storage_seismic are under the MIT
licence. The derived products are published as assets of a versioned
release of the same repository (CC-BY 4.0). The current release,
products-v1.0.0, predates the critical-zone model; the
release described in Sect. 9 will be built
from the commit that accompanies this paper [TODO: products release and
commit]. Its seven products are the model, the uniform grids, the strain
in the volume, the edifice-load stress, the alteration field, the
mass-movement catalogue and a GNSS snapshot of 1 September 2026. They
are listed with SHA-256 checksums in SHA256SUMS and
src/rainier3d/products.json, downloaded with
rainier3d fetch, and described product by product, with
command-line and Python examples, in docs/products.md. The
GNSS product is refreshed weekly in the release
gnss-latest, with dated copies. The relocated 2023–2025
catalogue and the summaries of the December 2025 event are the assets of
the releases relocated-catalog-2023-2025-v1 and
storms-dec2025-v1, also under CC-BY 4.0. The viewer reads
its map data from the release named in
web/viewer/DATA_RELEASE. The software and the derived
products will be deposited on Zenodo as two versioned records
(docs/doi.md) once the subsurface stress model is in the
release [TODO: concept and version DOIs, and the software tag].
The supplement (Supplement S1,
docs/paper/rainier3d_supplement.md) describes the
local-earthquake tomography; its figures and an interactive view of the
rays are published at https://denolle-lab.github.io/mt-rainier-digital-model/tomography/,
and the construction of the model, stage by stage, is recorded in
docs/model_construction.md.
Appendix A lists the input data sets with their DOIs or service
addresses. docs/data_policy.md gives the licence tier of
each. docs/data_manifest.csv gives the checksum of each
cached input.
Three inputs require attribution notices:
- GPS time series are provided by the Pacific Northwest Geodetic Array, Central Washington University.
- The imagery layers contain modified Copernicus Sentinel data (2023, 2025).
- MRMS precipitation is NOAA open data, whose terms request attribution.
The code and this paper were written with an AI coding assistant
(Claude, Anthropic) under the direction of the authors (Sect. 3.4). All numbers are produced by the scripts
named in the text. DOIs were resolved at doi.org or against the Crossref
and DataCite registries (docs/citations.csv).
Data sets
| Data set | Role in the model | Reference |
|---|---|---|
| Cascadia velocity model v1.7 | regional Vp and Vs to 9.9 km (blended to 16 km) | Wirth et al. (2025); Wirth Moriarty et al. (2025) |
| CRESCENT Gen0 community velocity model | regional Vs below 9.9 km (blended from 8 km) | He et al. (2026); He (2026) |
| Washington 1:100,000 surface geology (GeMS) | surface units | Washington Geological Survey (2026a) |
| Geology of Mount Rainier National Park | stratigraphy; map overlay | Fiske et al. (1963) |
| USGS 3D Elevation Program | elevation | U.S. Geological Survey (2026c) |
| IceBoost v2 per-glacier thickness; RGI 6.0 | ice thickness; glacier identifiers | Maffezzoli (2025); RGI Consortium (2017) |
| GlaThiDa; 1981 radar surveys | glacier thickness check | World Glacier Monitoring Service (WGMS) (2020); Driedger and Kennard (1986) |
| 1996 helicopter EM and magnetic survey | alteration | Rystrom et al. (2000) |
| iMUSH local-earthquake tomography | independent check | Incorporated Research Institutions for Seismology (2020); Ulberg et al. (2020) |
| PNSN origins and phase picks (ComCat) | calibration and validation | U.S. Geological Survey (2026d) |
| PNSN one-dimensional velocity model, western Washington | reference model for validation and relocation | [TODO: citable reference; registry key pnsn_1d_wa has no BibTeX entry] |
| FDSN station metadata | station coordinates, sensor inventory | EarthScope Consortium (2026) |
| EarthScope GNSS site metadata | GNSS site positions | EarthScope/UNAVCO GNSS site metadata web service (n.d.) |
| 2025 Rainier NP node array (FDSN network Z5) | geophone node positions and dates | Schmandt (2025) |
| Paradise–Nisqually Entrance DAS channel table | fibre route | [TODO: citable reference; registry key das_paradise_nisqually is a local file with no BibTeX entry] |
| Synoptic weather, SNOTEL and streamflow stations (gaia-hazlab catalogue) | sensor inventory in the viewer | Synoptic weather, SNOTEL and streamflow stations via gaia-hazlab/catalog GeoJSON (n.d., TODO: licence) |
| PANGA and UNR GNSS daily positions | velocities, strain | Pacific Northwest Geodetic Array (2026); Blewitt et al. (2018) |
| SOLUS100 | soil thickness; texture, bulk density, rock fragments and organic carbon at 0–1.5 m; depth to a restrictive layer | Nauman (2024) |
| POLARIS v1.0 | soil hydraulic conductivity and van Genuchten parameters to 2 m | Chaney et al. (2019) |
| SoilGrids250m 2017 depth to bedrock | regolith thickness | Shangguan et al. (2017, TODO: licence) |
| USGS global hybrid Vs30 | Vs30 | Heath et al. (2020) |
| US water-table depth | water table | Ma et al. (2026a) |
| Global water-table depth | water table, comparison | Fan et al. (2017) |
| NHDPlus High Resolution | streams | U.S. Geological Survey (2026b) |
| MRMS multi-sensor QPE, 1 h, Pass 2 | event precipitation | Zhang et al. (2016) |
| USGS instantaneous discharge | event river gauges | U.S. Geological Survey (2026e) |
| seis-hydro-2-sed virtual discharge and storm windows | event virtual sensors | Gaia-hazlab/seis-hydro-2-sed, seismic virtual discharge (power-discharge ratings inverted at river-proximal stations) and atmospheric-river windows of the december 2025 floods, commit 6a5065a9 (n.d.) |
| ETH global canopy height 2020 | canopy height | Lang, Nico et al. (2022) |
| NLCD 2021 | land cover | U.S. Geological Survey (2023) |
| Copernicus Sentinel-2 L2A | imagery, NDVI, NDSI, leaf area index | European Space Agency (2025); European Space Agency (2023) |
| GEDI L2B, L3, L4B | plant area index, canopy height, biomass | Dubayah et al. (2021a); Dubayah et al. (2021b); Dubayah et al. (2025) |
| Washington DNR Lidar Portal, 2022–2023 “Wali” acquisition | canopy height and vegetation cover (viewer only) | Canopy height model and vegetation cover fraction, 10 m, from airborne lidar DSM/DTM tiles of the WA DNR lidar portal (2022-2023 "wali" acquisitions, e.g. Rainier wali 2022; NAD83(HARN) washington south ftUS), gridded in QGIS for the canopy-storage project (m. koepfli) (n.d.) |
| Soil-map image of the park | display only | [TODO: source and legend; registry key soil_map_image] |
| Washington State Landslide Inventory Database | landslide and debris-flow catalogue | Washington Geological Survey (2026d) |
| Seismogenic mass movements, western United States | dated, seismically located events | Allstadt et al. (2017) |
| Mount Rainier volcano hazards, digital data | lahar inundation zones | Hoblitt et al. (1998); Schilling et al. (2008) |
| Quaternary active faults of Washington | faults | Washington Geological Survey (2026b) |
| NSHM 2023 fault sections database | fault check (no section in the box) | Hatem et al. (2021) |
| USGS The National Map imagery (USGSImageryOnly) | viewer aerial imagery | [TODO: add a registry key] |
Competing interests
The authors declare that they have no conflict of interest.
Acknowledgements
This work was supported by the Jerome and Linda Paros Geohazard Center at the University of Washington.