JavaScript port of ANISOtime — a utility for computing seismic-wave travel times in a laterally homogeneous, transversely isotropic (TI), spherically symmetric medium.
The reference implementation is the original Java ANISOtime (and its source in Kibrary). This port mirrors its behavior and is validated against its outputs.
- Run in the browser without Java — used by シンパ! (a SAC waveform viewer) for in-page theory picks.
- Run in Node.js for batch table generation and pipelines.
- Extend tooling by other JS-based seismology applications.
Early development. Initial scope (JS-α):
- Isotropic models: PREM, IASP91, AK135 (built-in).
- Phases: P, S, PP, SS, PcP, ScS, PKP, PKIKP, PKiKP, SKS, SKKS, and depth phases pP, sS, pS, sP.
- Output: travel time and ray parameter for a given (model, phase, distance, source depth).
Later stages (β / γ): TI media (SH / pseudo-SV split), arbitrary .nd / .poly models, full phase enumeration parity with Java ANISOtime.
Travel times are checked against:
- The Java ANISOtime CLI (reference implementation).
- TauP (independent isotropic ray-tracing engine, for cross-check).
Tolerance: < 1 ms in the isotropic regime over standard reference models.
(Placeholder — not yet released.)
// Browser (after loading dist/anisotime.js):
const t = window.Anisotime.travelTime({
model: 'PREM',
phase: 'P',
distance: 30, // degrees
depth: 100, // km
});
// → { time: <s>, rayParameter: <s/deg>, ... }npm test # run unit tests (node --test)
node tools/cross-check.js # regenerate tests/golden/ TauP cross-check artifacts
# (requires the TauP toolkit; see tools/run-taup.sh)
node tools/dump-model.js # dump model profiles as CSVGNU GPL v3.0 — same as the original Java ANISOtime. See LICENSE.
The original Java ANISOtime is © 2015– Kensuke Konishi, Anselme F. E. Borgeaud, Kenji Kawai, Robert J. Geller and contributors. This JavaScript port is developed by the same group at the University of Tokyo Global Seismology Group.