{"id":51216992,"url":"https://github.com/sysadmindoc/tsunamisimulator","last_synced_at":"2026-06-28T05:00:30.213Z","repository":{"id":360124375,"uuid":"1248772212","full_name":"SysAdminDoc/TsunamiSimulator","owner":"SysAdminDoc","description":"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.","archived":false,"fork":false,"pushed_at":"2026-06-26T17:58:36.000Z","size":6687,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T18:15:30.495Z","etag":null,"topics":["desktop-app","rust","windows"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SysAdminDoc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-25T03:20:43.000Z","updated_at":"2026-06-26T17:58:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"f6500c3b-577c-46c6-8402-9a24715d2ba7","html_url":"https://github.com/SysAdminDoc/TsunamiSimulator","commit_stats":null,"previous_names":["sysadmindoc/tsunamisimulator"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/SysAdminDoc/TsunamiSimulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FTsunamiSimulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FTsunamiSimulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FTsunamiSimulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FTsunamiSimulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SysAdminDoc","download_url":"https://codeload.github.com/SysAdminDoc/TsunamiSimulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FTsunamiSimulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34877471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","rust","windows"],"created_at":"2026-06-28T05:00:20.087Z","updated_at":"2026-06-28T05:00:30.176Z","avatar_url":"https://github.com/SysAdminDoc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TsunamiSimulator\n\n[![Version](https://img.shields.io/badge/version-0.4.4-blue.svg)](./CHANGELOG.md)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)\n[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](#install)\n[![Stack](https://img.shields.io/badge/stack-Tauri%202%20%2B%20React%20%2B%20CesiumJS%20%2B%20Rust-orange.svg)](#architecture)\n[![Physics](https://img.shields.io/badge/physics-Ward%E2%80%93Asphaug%20%7C%20Synolakis%20%7C%20Okada%20%7C%20Glasstone-purple.svg)](./docs/science)\n\n\u003e 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.\n\nThis 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.\n\n---\n\n## Visual tour\n\n![Animated Chicxulub playback demo](./assets/screenshots/chicxulub-demo.gif)\n\n| Historical preset + source readout | Live SWE playback |\n|---|---|\n| ![Tohoku preset selected on the globe](./assets/screenshots/preset-tohoku.png) | ![Live shallow-water-equation playback with a wave overlay](./assets/screenshots/swe-running.png) |\n\n| Side-by-side comparison | Scenario builder + globe pick | Citations |\n|---|---|---|\n| ![Poseidon realistic versus exaggerated comparison mode](./assets/screenshots/compare-poseidon.png) | ![Custom scenario builder with globe pick mode enabled](./assets/screenshots/scenario-builder.png) | ![Citations modal with peer-reviewed references](./assets/screenshots/citations.png) |\n\n---\n\n## Why this exists\n\nExisting tools each do one piece:\n\n- **[NukeMap](https://nuclearsecrecy.com/nukemap/)** — nuclear airburst effects only, 2D map, no water.\n- **[Asteroid Launcher](https://neal.fun/asteroid-launcher/)** — fun, 2D map, no propagating tsunami.\n- **[Purdue \"Impact: Earth!\"](https://impact.ese.ic.ac.uk/ImpactEarth/)** — accurate formulas, single-point readout, no animation.\n- **[GeoClaw](http://depts.washington.edu/clawpack/geoclaw/)** / **[COMCOT](https://www.researchgate.net/publication/374553562)** / **[MOST](https://www.pmel.noaa.gov/news-story/first-global-tsunami-simulation-chicxulub-asteroid-impact-66-million-years-ago)** — operational accuracy, Fortran/Python, no consumer UI.\n\n`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 coarse offline 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.\n\n---\n\n## Features (current build + roadmap)\n\n### Source models (energy → initial water-surface displacement)\n\n| Source | Status | Reference |\n|---|---|---|\n| **Asteroid / comet impact** | ✅ formulas wired | Ward \u0026 Asphaug 2000 *Icarus* 145:64; Schmidt \u0026 Holsapple 1982 |\n| **Underwater nuclear** | ✅ formulas wired | Glasstone \u0026 Dolan 1977; Le Méhauté 1996; DNA 1996 (5% energy → wave) |\n| **Atmospheric / surface nuclear (ocean)** | ✅ formulas wired | Van Dorn et al. 1968; Adams 1972 |\n| **\"Russia Poseidon\" tsunami torpedo** | ✅ realistic mode | Skeptical physics — 360° dispersion, ~5% efficiency |\n| **Earthquake (Okada fault dislocation)** | ✅ full Okada I-term wired | Okada 1985; Mansinha \u0026 Smylie 1971 |\n| **Subaerial landslide** | ✅ Heller–Hager 2D channel | Fritz \u0026 Hager 2001 (Lituya); Slingerland \u0026 Voight |\n| **Submarine landslide** | ✅ Watts 2003 best-fit | Watts et al. 2005 |\n| **Volcanic caldera collapse** | 🔲 planned | Krakatoa 1883, Hunga Tonga 2022 |\n\n### Propagation\n\n- ✅ **Linear long-wave** (deep-ocean, fast preview).\n- ✅ **Shallow-water equations** — depth-averaged 2D leapfrog with `rayon`\n  row-parallel updates, Manning bottom friction, CFL-safe Δt, snapshots\n  rendered as PNG overlays on the Cesium globe.\n- 🔲 **Boussinesq** for dispersive waves (impact-tsunami wavelengths shorter than ocean depth — important for Ward–Asphaug regime).\n- 🔲 **Adaptive mesh refinement** (AMR) like GeoClaw — coarse far-field, fine coastal.\n- ✅ **GPU compute** via `wgpu` behind the `gpu` feature flag, with CPU fallback when no adapter is available.\n\n### Coastal inundation\n\n- ✅ **Synolakis 1987 runup law** sampled at 60+ named coastal points,\n  rendered as colour-graded 3D bars on the globe.\n- 🔲 **MOST-style wetting/drying** on bathymetric grid.\n- ✅ **First-order inundation discs** from runup/slope estimates.\n- 🔲 **Real flood polygons** rendered as GeoJSON overlays on Cesium.\n\n### Presets (historical events with peer-reviewed parameters)\n\n| Event | Date | Source type | Magnitude | Peak wave | Reference |\n|---|---|---|---|---|---|\n| **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* |\n| **Tōhoku** | 2011-03-11 | M 9.1 megathrust | — | 40 m runup | Mori et al. 2011 |\n| **Indian Ocean** | 2004-12-26 | M 9.2 megathrust | — | 30 m runup, 230k dead | Synolakis et al. 2005 |\n| **Lituya Bay** | 1958-07-09 | Rockslide, 30 M m³ | M 7.8 trigger | **524 m runup** | Fritz et al. 2001 |\n| **Krakatoa** | 1883-08-27 | Caldera collapse | VEI 6 | 42 m | Choi et al. 2003 |\n| **Storegga slide** | ~8150 BP | Submarine slide, 3000 km³ | — | 20 m+ in Scotland | Bondevik et al. 2005 |\n| **Hunga Tonga** | 2022-01-15 | Submarine volcano | VEI 5–6 | 15 m local + atmospheric Lamb wave | Carvajal et al. 2022 |\n| **Eltanin** | 2.51 Ma | Asteroid, ~1 km dia | South Pacific | Globally significant | Gersonde et al. 1997 |\n| **Hypothetical Cumbre Vieja** | — | Flank collapse (La Palma) | 500 km³ scenario | Disputed; 5–25 m E coast US | Ward \u0026 Day 2001 (controversial) |\n| **\"Poseidon\" deployment** | — | 100 Mt underwater | — | ~1–5 m at 100 km (realistic) | DNA 1996, Glasstone 1977 |\n\n### UX\n\n- **5 globe styles**: Natural Earth II (default, local-first), OpenStreetMap,\n  Esri World Imagery, Cesium World Imagery, Cesium World Bathymetry.\n- **Scenario builder** — tabbed Asteroid / Nuclear / Earthquake / Landslide\n  forms; click-globe-to-pick location.\n- **Timeline scrubber + SWE playback** — scrub a 24-frame snapshot sequence\n  through the live shallow-water solver, with classic or colorblind-safe\n  overlay colormaps.\n- **Effect overlays** — wavefront ring, coastal runup bars at 60+ named\n  coastal points, DART buoy historical observations for the three modern\n  presets.\n- **Side-by-side comparison mode** — two scenarios on synchronised globes.\n- **Catppuccin Mocha** dark theme default + **Latte** light theme toggle.\n\n---\n\n## Install\n\nPrebuilt Windows installers for the latest release are on the\n[Releases page](https://github.com/SysAdminDoc/TsunamiSimulator/releases):\nan MSI package and an NSIS setup executable. The v0.4.4 Windows installers are\nlocally built from this repository and are currently unsigned until a Windows\ncode-signing certificate is configured, so Windows may show an unknown-publisher\nwarning. macOS and Linux remain supported source-build targets; platform\ninstallers for those systems should be produced locally on those platforms when\nsigning/build hosts are available.\n\nThe app launches on the bundled **Natural Earth II** globe by default and is\nfully usable without network tiles or a token. OpenStreetMap and Esri imagery\nremain no-token online options, and a free Cesium ion token unlocks\nhigh-resolution satellite imagery and visual bathymetric terrain from Settings.\nSolver bathymetry remains the app's coarse offline basin/shelf approximation\nuntil the blocked GEBCO data path is resolved.\n\n### Build from source\n\nPrerequisites:\n\n- **Node.js** ≥ 20 LTS\n- **Rust** ≥ 1.78 (stable) with `rustup`\n- Windows: Visual Studio 2022/2026 with \"Desktop development with C++\"\n  workload (provides MSVC `link.exe`); WebView2 runtime (preinstalled on Win11)\n- macOS: Xcode Command Line Tools\n- Linux: `libwebkit2gtk-4.1-dev`, `libgtk-3-dev`,\n  `libayatana-appindicator3-dev`, `librsvg2-dev`, `libsoup-3.0-dev`\n\nThe Tauri CLI ships via the `@tauri-apps/cli` npm dev dependency — no\nseparate `cargo install` step.\n\n```bash\ngit clone https://github.com/SysAdminDoc/TsunamiSimulator\ncd TsunamiSimulator\nnpm install\nnpm run dev                # browser preview with deterministic demo data\nnpm run tauri dev          # full desktop app with Rust/Tauri IPC\nnpm run verify             # local type/lint/test/audit/build verification gate\nnpm run tauri build        # platform installer(s) in src-tauri/target/release/bundle/\n```\n\nTo bake a Cesium ion token at build time, `cp .env.example .env` and paste\nit in; otherwise leave it blank and paste at runtime in **Settings**.\n\n---\n\n## Architecture\n\n```\n┌─────────────────────────── Tauri 2 Window ───────────────────────────┐\n│ ┌─────────────────────────────────────────────────────────────────┐  │\n│ │  React 19 + TypeScript + Vite (frontend / WebView2)             │  │\n│ │  ─ CesiumJS 1.142+ globe with optional bathymetric terrain        │  │\n│ │  ─ Scenario builder, timeline, overlays, results panel           │  │\n│ └──────────────────────────────  ▲  ───────────────────────────────┘  │\n│                                  │ tauri::invoke (JSON over IPC)      │\n│ ┌──────────────────────────────  ▼  ───────────────────────────────┐  │\n│ │  Rust backend (src-tauri/)                                       │  │\n│ │  ─ physics::asteroid    Ward–Asphaug + Schmidt–Holsapple         │  │\n│ │  ─ physics::nuclear     Glasstone–Dolan + Le Méhauté             │  │\n│ │  ─ physics::landslide   Fritz–Hager + Slingerland–Voight         │  │\n│ │  ─ physics::earthquake  Okada 1985 (planned)                     │  │\n│ │  ─ physics::shallow_water  NSWE + Synolakis runup                │  │\n│ │  ─ data::bathymetry     coarse basin/shelf depth sampler         │  │\n│ │  ─ presets              Chicxulub / Tōhoku / Lituya / …          │  │\n│ └──────────────────────────────────────────────────────────────────┘  │\n└───────────────────────────────────────────────────────────────────────┘\n```\n\nHeavy physics runs in the Rust backend (multi-threaded via `rayon`, GPU via `wgpu` planned). The frontend only handles globe rendering, controls, and result visualization. The IPC boundary keeps the WebView from blocking on million-cell SWE solves.\n\n---\n\n## The science (and its limits)\n\nThis is not a forecast tool. Compared to operational models like NOAA MOST:\n\n- **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.\n- **What's approximate** — solver bathymetry (coarse basin means with a shelf taper, not GEBCO/SRTM15+), coastal runup (we use Synolakis 1987 analytical instead of full wetting/drying), first-order inundation discs, dispersion (linear long-wave first, Boussinesq later).\n- **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.\n- **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.\n\nSee [`docs/science/`](./docs/science) for formula derivations and citations.\n\n---\n\n## Citations (anchors, full list in `docs/science/REFERENCES.bib`)\n\n- Ward, S. N., \u0026 Asphaug, E. (2000). Asteroid impact tsunami: a probabilistic hazard assessment. *Icarus*, 145, 64–78.\n- Range, M. M., et al. (2022). The Chicxulub Impact Produced a Powerful Global Tsunami. *AGU Advances*. https://doi.org/10.1029/2021AV000627\n- Synolakis, C. E. (1987). The runup of solitary waves. *J. Fluid Mech.*, 185, 523–545.\n- Okada, Y. (1985). Surface deformation due to shear and tensile faults in a half-space. *BSSA*, 75, 1135–1154.\n- Fritz, H. M., Hager, W. H., \u0026 Minor, H.-E. (2001). Lituya Bay case: rockslide impact and wave run-up. *Sci. Tsunami Hazards*, 19, 3–22.\n- Glasstone, S., \u0026 Dolan, P. J. (1977). *The Effects of Nuclear Weapons* (3rd ed.). USDOE.\n- Le Méhauté, B., \u0026 Wang, S. (1996). *Water Waves Generated by Underwater Explosion*. World Scientific.\n- Collins, G. S., Melosh, H. J., \u0026 Marcus, R. A. (2005). Earth Impact Effects Program. *Meteoritics \u0026 Planetary Science*, 40, 817–840.\n- Berger, M. J., George, D. L., LeVeque, R. J., \u0026 Mandli, K. T. (2011). The GeoClaw software for depth-averaged flows. *Advances in Water Resources*, 34(9), 1195–1206.\n\n---\n\n## Roadmap \u0026 research\n\n- [`ROADMAP.md`](./ROADMAP.md) — phased delivery plan (v0.1.0 → v1.0.0).\n- [`COMPLETED.md`](./COMPLETED.md) — shipped feature summary.\n- [`RESEARCH_REPORT.md`](./RESEARCH_REPORT.md) — current research synthesis.\n- [`docs/history/`](./docs/history/) — archived research plans, including the v0.4.0 forward plan.\n\n## License\n\n[MIT](./LICENSE). For scientific education and hazard-awareness visualization only. Not for evacuation planning. Use NOAA NTWC/PTWC for real warnings.\n\n## Author\n\n[@SysAdminDoc](https://github.com/SysAdminDoc) — Senior Systems Administrator, medical-imaging IT, side projects in physics-based simulators.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Ftsunamisimulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsysadmindoc%2Ftsunamisimulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Ftsunamisimulator/lists"}