跳至主要内容

Seismology

Earthquakes, seismic waves, Richter and moment magnitudes, and optional gravitational-wave coupling — the full seismic pipeline phase-locked to HulyaPulse.

  • Live appzeq.dev/apps/seismology/
  • Sourceapp/artifacts/api-server/public/apps/seismology/ (1,850 lines)
  • Operators — KO42 · NM30 (harmonic oscillator) · optional GR38 (gravitational-wave)
  • Error budget — ≤ 0.1% on P- and S-wave arrival times through a 1D layered Earth model

What it solves

A seismic workbench. Three modes:

  • Event detection — feed seismogram traces; get onset time, P/S split, and estimated magnitude via STA/LTA trigger and Wood-Anderson response
  • Wave propagation — point-source at depth, 1D layered velocity model (PREM or custom), finite-difference solve on a 2D section
  • Magnitude estimators — local Richter M_L, surface-wave M_s, moment magnitude M_w from scalar seismic moment M₀

Runs in-browser; each Zeqond produces one full forward model through a 1000-km cross-section on a 256² grid.


The math

Wave equation ∂²u/∂t² = c² ∇²u + f
P-wave speed V_p = √((λ + 2μ)/ρ) (Lamé parameters)
S-wave speed V_s = √(μ/ρ)
Richter magnitude M_L = log₁₀ A − log₁₀ A₀(Δ)
Moment magnitude M_w = (2/3) log₁₀ M₀ − 10.7 (Hanks & Kanamori, 1979)
Harmonic oscillator (NM30) x(t) = A cos(ωt + φ)
Gravitational-wave (GR38) □ h_{μν} + κ ∂_t h_{μν} = −16πG/c⁴ T_{μν}

Operator picks

StepDecision
1. PrimeKO42 on
2. LimitKO42 + NM30 = 2 operators (baseline); + GR38 = 3 (for kilometre-scale events where GW emission is measurable)
3. ScaleCrustal to planetary; elastic continuum
4. Precision≤ 0.1% on first-arrival time
5. CompileC_KO42 + C_NM30 (+ C_GR38)
6. ExecuteZ encodes ρ, λ, μ profile, source moment tensor, receiver geometry
7. VerifyCompare P-arrival against a ray-traced reference

Runnable worked example — M6.0 event, 10 km depth, 100 km distance, PREM

PREM reference P-arrival at this geometry: t_P ≈ 16.24 s.

curl -s -X POST https://api.zeq.dev/api/playground/compute \
-H "Content-Type: application/json" \
-H "x-demo-key: $DEMO_KEY" \
-d '{
"operators": ["KO42","NM30"],
"params": {
"velocity_model": "PREM",
"source_depth_km": 10,
"receiver_distance_km": 100,
"magnitude": 6.0,
"focal_mechanism": "strike_slip"
}
}' | jq

Expected:

{
"result": {
"p_arrival_s": 16.249,
"s_arrival_s": 28.44,
"p_error_pct": 0.055,
"estimated_M_w": 5.99,
"seismogram_samples": 4096,
"operators_used": ["KO42","NM30"]
}
}

P-arrival error 0.055%. Within the budget without tuning.


Extend it

  1. 3D wavefront — lift FD solve to 3D; reuse the same NM30 stencil
  2. Receiver functions — deconvolve the vertical component from the radial; image the Moho
  3. Full-waveform inversion — adjoint-method gradient over the velocity model; the operator set stays the same

Seeds

  • Forensic seismology — invert to localise sub-surface voids (tunnels, cavities) with GR38 as an optional gravity-sensing channel
  • Planetary seismology — Mars (InSight SEIS) and Moon (Apollo ALSEP) data replay; the same solver, different ρ, λ, μ profile
  • Induced-seismicity forecasting — correlate injection volumes with NM30-resonance pre-cursors; plant seeds for operational safety

Papers

Middleware active. Kernel on the 1.287 Hz HulyaPulse. Awaiting next Zeqond.