Skip to content

SysAdminDoc/TsunamiSimulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

155 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TsunamiSimulator

Version License Platform Stack Physics

A scientifically grounded 3D-globe desktop application for simulating tsunami generation, propagation, and first-order coastal effects from asteroid impacts, nuclear detonations (atmospheric and underwater), seafloor earthquakes, and subaerial landslides — with peer-reviewed historical presets like Chicxulub (66 Ma), Tōhoku 2011, Indian Ocean 2004, and Lituya Bay 1958.

This is the NukeMap for tsunamis — but with a 3D globe, peer-reviewed source models, a coarse bathymetry-aware shallow-water solver, and presets you can scrub through frame-by-frame.


Visual tour

Animated Chicxulub playback demo

Historical preset + source readout Live SWE playback
Tohoku preset selected on the globe Live shallow-water-equation playback with a wave overlay
Side-by-side comparison Scenario builder + globe pick Citations
Poseidon realistic versus exaggerated comparison mode Custom scenario builder with globe pick mode enabled Citations modal with peer-reviewed references

Why this exists

Existing tools each do one piece:

TsunamiSimulator combines them: peer-reviewed source physics + consumer-grade interactive globe. Pick a source (asteroid, nuke, fault, slide), drop it anywhere on Earth, and watch a shallow-water solution propagate over the app's low-confidence coarse basin/shelf bathymetry, estimate runup at named coastal points, and produce first-order inundation discs. Optional Cesium World Bathymetry improves visual terrain only; it is not the backend solver grid.


Features (current build + roadmap)

Source models (energy → initial water-surface displacement)

Source Status Reference
Asteroid / comet impact ✅ formulas wired Ward & Asphaug 2000 Icarus 145:64; Schmidt & Holsapple 1982
Underwater nuclear ✅ formulas wired Glasstone & Dolan 1977; Le Méhauté 1996; DNA 1996 (5% energy → wave)
Atmospheric / surface nuclear (ocean) ✅ formulas wired Van Dorn et al. 1968; Adams 1972
"Russia Poseidon" tsunami torpedo ✅ realistic mode Skeptical physics — 360° dispersion, ~5% efficiency
Earthquake (Okada fault dislocation) ✅ full Okada I-term wired Okada 1985; Mansinha & Smylie 1971
Subaerial landslide ✅ Heller–Hager 2D channel Fritz & Hager 2001 (Lituya); Slingerland & Voight
Submarine landslide ✅ Watts 2003 best-fit Watts et al. 2005
Volcanic caldera collapse 🔲 planned Krakatoa 1883, Hunga Tonga 2022

Propagation

  • Linear long-wave (deep-ocean, fast preview).
  • Shallow-water equations — depth-averaged 2D leapfrog with rayon row-parallel updates, Manning bottom friction, CFL-safe Δt, snapshots rendered as PNG overlays on the Cesium globe.
  • 🔲 Boussinesq for dispersive waves (impact-tsunami wavelengths shorter than ocean depth — important for Ward–Asphaug regime).
  • 🔲 Adaptive mesh refinement (AMR) like GeoClaw — coarse far-field, fine coastal.
  • GPU compute via wgpu behind the gpu feature flag, with CPU fallback when no adapter is available.

Coastal inundation

  • Synolakis 1987 runup law sampled at 60+ named coastal points, rendered as colour-graded 3D bars on the globe.
  • 🔲 MOST-style wetting/drying on bathymetric grid.
  • First-order inundation discs from runup/slope estimates.
  • 🔲 Real flood polygons rendered as GeoJSON overlays on Cesium.

Presets (historical events with peer-reviewed parameters)

Event Date Source type Magnitude Peak wave Reference
Chicxulub impact 66 Ma Asteroid, 14 km dia ~10⁸ Mt TNT 4.5 km initial, 1.5 km @ 220 km Range et al. 2022 AGU Adv
Tōhoku 2011-03-11 M 9.1 megathrust 40 m runup Mori et al. 2011
Indian Ocean 2004-12-26 M 9.2 megathrust 30 m runup, 230k dead Synolakis et al. 2005
Lituya Bay 1958-07-09 Rockslide, 30 M m³ M 7.8 trigger 524 m runup Fritz et al. 2001
Krakatoa 1883-08-27 Caldera collapse VEI 6 42 m Choi et al. 2003
Storegga slide ~8150 BP Submarine slide, 3000 km³ 20 m+ in Scotland Bondevik et al. 2005
Hunga Tonga 2022-01-15 Submarine volcano VEI 5–6 15 m local + atmospheric Lamb wave Carvajal et al. 2022
Eltanin 2.51 Ma Asteroid, ~1 km dia South Pacific Globally significant Gersonde et al. 1997
Hypothetical Cumbre Vieja Flank collapse (La Palma) 500 km³ scenario Disputed; 5–25 m E coast US Ward & Day 2001 (controversial)
"Poseidon" deployment 100 Mt underwater ~1–5 m at 100 km (realistic) DNA 1996, Glasstone 1977

UX

  • 5 globe styles: Natural Earth II (default, local-first), OpenStreetMap, Esri World Imagery, Cesium World Imagery, Cesium World Bathymetry.
  • Scenario builder — tabbed Asteroid / Nuclear / Earthquake / Landslide forms; click-globe-to-pick location.
  • Timeline scrubber + SWE playback — scrub a 24-frame snapshot sequence through the live shallow-water solver, with classic or colorblind-safe overlay colormaps.
  • Effect overlays — wavefront ring, coastal runup bars at 60+ named coastal points, DART buoy historical observations for the three modern presets.
  • Side-by-side comparison mode — two scenarios on synchronised globes.
  • Catppuccin Mocha dark theme default + Latte light theme toggle.

Install

Prebuilt Windows installers for the latest release are on the Releases page: an MSI package and an NSIS setup executable. The v0.4.4 Windows installers are locally built from this repository and are currently unsigned until a Windows code-signing certificate is configured, so Windows may show an unknown-publisher warning. macOS and Linux remain supported source-build targets; platform installers for those systems should be produced locally on those platforms when signing/build hosts are available.

Verify your download — each release includes a checksums-sha256.txt file. Compare the SHA256 of the downloaded file to the published value:

# PowerShell
(Get-FileHash .\TsunamiSimulator_0.4.4_x64_en-US.msi -Algorithm SHA256).Hash
:: Command Prompt
certutil -hashfile TsunamiSimulator_0.4.4_x64_en-US.msi SHA256

See docs/release/CODESIGNING.md for full verification details and the maintainer release checklist.

The app launches on the bundled Natural Earth II globe by default and is fully usable without network tiles or a token. OpenStreetMap and Esri imagery remain no-token online options, and a free Cesium ion token unlocks high-resolution satellite imagery and visual bathymetric terrain from Settings. Solver bathymetry remains the app's low-confidence coarse basin/shelf approximation until the blocked GEBCO_2026/TID-backed local data path is resolved.

Build from source

Prerequisites:

  • Node.js ≥ 20 LTS
  • Rust ≥ 1.78 (stable) with rustup
  • Windows: Visual Studio 2022/2026 with "Desktop development with C++" workload (provides MSVC link.exe); WebView2 runtime (preinstalled on Win11)
  • macOS: Xcode Command Line Tools
  • Linux: libwebkit2gtk-4.1-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev, libsoup-3.0-dev

The Tauri CLI ships via the @tauri-apps/cli npm dev dependency — no separate cargo install step.

git clone https://github.com/SysAdminDoc/TsunamiSimulator
cd TsunamiSimulator
npm install
npm run doctor             # local toolchain preflight with actionable fixes
npm run dev                # browser preview with deterministic demo data
npm run tauri dev          # full desktop app with Rust/Tauri IPC
npm run verify             # local type/lint/test/audit/build verification gate
npm run tauri build        # platform installer(s) in src-tauri/target/release/bundle/

To bake a Cesium ion token at build time, cp .env.example .env and paste it in; otherwise leave it blank and paste at runtime in Settings.


Architecture

┌─────────────────────────── Tauri 2 Window ───────────────────────────┐
│ ┌─────────────────────────────────────────────────────────────────┐  │
│ │  React 19 + TypeScript + Vite (frontend / WebView2)             │  │
│ │  ─ CesiumJS 1.142+ globe with optional bathymetric terrain        │  │
│ │  ─ Scenario builder, timeline, overlays, results panel           │  │
│ └──────────────────────────────  ▲  ───────────────────────────────┘  │
│                                  │ tauri::invoke (JSON over IPC)      │
│ ┌──────────────────────────────  ▼  ───────────────────────────────┐  │
│ │  Rust backend (src-tauri/)                                       │  │
│ │  ─ physics::asteroid    Ward–Asphaug + Schmidt–Holsapple         │  │
│ │  ─ physics::nuclear     Glasstone–Dolan + Le Méhauté             │  │
│ │  ─ physics::landslide   Fritz–Hager + Slingerland–Voight         │  │
│ │  ─ physics::earthquake  Okada 1985 (full I-term)                  │  │
│ │  ─ physics::shallow_water  NSWE + Synolakis runup                │  │
│ │  ─ data::bathymetry     coarse basin/shelf depth sampler         │  │
│ │  ─ presets              Chicxulub / Tōhoku / Lituya / …          │  │
│ └──────────────────────────────────────────────────────────────────┘  │
└───────────────────────────────────────────────────────────────────────┘

Heavy physics runs in the Rust backend (multi-threaded via rayon, GPU via wgpu behind the gpu feature flag). The frontend only handles globe rendering, controls, and result visualization. The IPC boundary keeps the WebView from blocking on million-cell SWE solves.


The science (and its limits)

This is not a forecast tool. Compared to operational models like NOAA MOST:

  • What's accurate — initial conditions (cavity geometry from Ward–Asphaug, fault displacement from Okada), idealized open-ocean propagation in deep water, far-field arrival times.
  • What's approximate — solver bathymetry (coarse basin means with a shelf taper, not GEBCO_2026/TID-backed terrain), coastal runup (we use Synolakis 1987 analytical instead of full wetting/drying), first-order inundation discs, dispersion (linear long-wave first, Boussinesq later).
  • What's wrong — anything involving the atmosphere coupling (Hunga Tonga–style Lamb-wave coupling is a research frontier), tsunami earthquake source-time functions (we use static dislocation), submarine landslide rheology.
  • The "Russia Poseidon" honest take — Russian state media's 500-m-wave claim is propaganda. The 1996 Defense Nuclear Agency study put underwater-explosion wave-generation efficiency at ~5%. A 100-Mt warhead at 100 km open ocean produces a ~few-meter wave, not a city-killer. We model both the propaganda yield and a realistic one — the comparison is the point.

See docs/science/ for formula derivations and citations.


Citations (anchors, full list in docs/science/REFERENCES.bib)

  • Ward, S. N., & Asphaug, E. (2000). Asteroid impact tsunami: a probabilistic hazard assessment. Icarus, 145, 64–78.
  • Range, M. M., et al. (2022). The Chicxulub Impact Produced a Powerful Global Tsunami. AGU Advances. https://doi.org/10.1029/2021AV000627
  • Synolakis, C. E. (1987). The runup of solitary waves. J. Fluid Mech., 185, 523–545.
  • Okada, Y. (1985). Surface deformation due to shear and tensile faults in a half-space. BSSA, 75, 1135–1154.
  • Fritz, H. M., Hager, W. H., & Minor, H.-E. (2001). Lituya Bay case: rockslide impact and wave run-up. Sci. Tsunami Hazards, 19, 3–22.
  • Glasstone, S., & Dolan, P. J. (1977). The Effects of Nuclear Weapons (3rd ed.). USDOE.
  • Le Méhauté, B., & Wang, S. (1996). Water Waves Generated by Underwater Explosion. World Scientific.
  • Collins, G. S., Melosh, H. J., & Marcus, R. A. (2005). Earth Impact Effects Program. Meteoritics & Planetary Science, 40, 817–840.
  • Berger, M. J., George, D. L., LeVeque, R. J., & Mandli, K. T. (2011). The GeoClaw software for depth-averaged flows. Advances in Water Resources, 34(9), 1195–1206.

Roadmap & research

License

MIT. For scientific education and hazard-awareness visualization only. Not for evacuation planning. Use NOAA NTWC/PTWC for real warnings.

Author

@SysAdminDoc — Senior Systems Administrator, medical-imaging IT, side projects in physics-based simulators.

About

3D-globe desktop simulator for tsunamis from asteroid impacts, nuclear bursts, earthquakes, and landslides. Real physics (Ward-Asphaug, Synolakis, Okada, Glasstone-Dolan) + peer-reviewed presets (Chicxulub, Tohoku, Lituya Bay). Tauri 2 + React + CesiumJS + Rust.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors