Seismology
Earthquakes, seismic waves, Richter and moment magnitudes, and optional gravitational-wave coupling — the full seismic pipeline phase-locked to HulyaPulse.
- Live app — zeq.dev/apps/seismology/
- Source —
apps/zeq-me/public/apps/_in-development/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-waveM_s, moment magnitudeM_wfrom scalar seismic momentM₀
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
| Step | Decision |
|---|---|
| 1. Prime | KO42 on |
| 2. Limit | KO42 + NM30 = 2 operators (baseline); + GR38 = 3 (for kilometre-scale events where GW emission is measurable) |
| 3. Scale | Crustal to planetary; elastic continuum |
| 4. Precision | ≤ 0.1% on first-arrival time |
| 5. Compile | C_KO42 + C_NM30 (+ C_GR38) |
| 6. Execute | Z encodes ρ, λ, μ profile, source moment tensor, receiver geometry |
| 7. Verify | Compare 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.
The anonymous playground takes a domain plus named inputs and lets the seven-step wizard pick the operators (always KO42 + the domain fit). It returns a sealed envelope:
curl -s -X POST https://zeqsdk.com/api/playground/compute \
-H "Content-Type: application/json" \
-d '{
"domain": "newtonian-mechanics",
"inputs": { "depth": 10000, "distance": 100000, "magnitude": 6.0 }
}' | jq
The response carries value, unit, the operators the wizard chose, the equations it evaluated, and a zeqProof digest. Compare the returned value against the PREM reference P-arrival (t_P ≈ 16.24 s) yourself — the platform hands you a result any node can recompute, not a printed figure to trust.
Extend it
- 3D wavefront — lift FD solve to 3D; reuse the same NM30 stencil
- Receiver functions — deconvolve the vertical component from the radial; image the Moho
- 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
- Zeq Paper — doi:10.5281/zenodo.18158152
Middleware active. Kernel on the 1.287 Hz HulyaPulse. Awaiting next Zeqond.