FAILURE MAP
← Case archive

FA-71826 / Seismic magnitude estimation / Open access

Radiated energy magnitude: energy magnitude slope · case 01

Energy magnitudes exceed 10 for moderate events.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The energy-magnitude slope is inverted to 3/2.

THE FAILURE

The energy-magnitude slope is inverted to 3/2.

Unsuccessful approach: Parenthesising scales the constant too.

Case contract

Ground velocity samples in m/s, sample interval s, hypocentral distance km. Energy flux integral = sum(v^2)*dt; Es = 4 pi rho beta R^2 * integral * 0.25 (free-surface correction), rho=2700 kg/m3, beta=3500 m/s, R in m. Me = 2/3 log10 Es - 2.9. Return [Es "%.3e", Me rounded 0.01]; None if the trace is empty or all zero.

Why this case matters

Energy magnitude complements Mw for damage potential of high-frequency radiation.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(vel_ms, dt, dist_km):
    if not vel_ms:
        return None
    flux = sum(v * v for v in vel_ms) * dt
    if flux <= 0:
        return None
    r = dist_km * 1000.0
    es = 4 * math.pi * 2700.0 * 3500.0 * r * r * flux * 0.25
    me = 1.5 * math.log10(es) - 2.9
    return ["%.3e" % es, round(me, 2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['record 0', [[-0.001678, -0.001936, -0.000937], 0.02, 150], ['9.942e+10', 4.43]], ['record 1', [[0.00191, 0.000969, -0.001187], 0.01, 20], ['7.120e+08', 3.0]], ['record 2', [[0.001531, -0.000904, -0.000647, -8.8e-05, -0.000752, 0.00103, -0.000661, 0.001856], 0.01, 20], ['1.080e+09', 3.12]], ['record 3', [[0.000833, -0.001601, 0.000828], 0.01, 20], ['4.682e+08', 2.88]], ['record 4', [[0.000607, -0.001668, 0.001964, 0.000215, 0.000396, -0.001806], 0.01, 20], ['1.244e+09', 3.16]], ['record 5', [[-7.5e-05, -0.000205, -0.001098, 0.000467], 0.02, 800], ['5.591e+11', 4.93]], ['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 7', [[-0.000373, -0.000778, -0.001431, -0.000423, 0.000918, -0.001184], 0.02, 150], ['6.968e+10', 4.33]]], [['record 3', [[0.000833, -0.001601, 0.000828], 0.01, 20], ['4.682e+08', 2.88]], ['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 7', [[-0.000373, -0.000778, -0.001431, -0.000423, 0.000918, -0.001184], 0.02, 150], ['6.968e+10', 4.33]], ['record 8', [[-0.001994, -0.000216, -0.001326, -0.001867, -0.000666, -0.001063], 0.01, 20], ['1.287e+09', 3.17]], ['record 9', [[0.000682, -0.000928, 0.001715, -0.001046, 0.000795, 0.0015], 0.02, 150], ['1.101e+11', 4.46]], ['record 10', [[0.000736, 0.001202, 0.001002], 0.01, 800], ['5.682e+11', 4.94]], ['record 11', [[4.9e-05, 0.000323, 0.001136], 0.02, 150], ['1.867e+10', 3.95]], ['record 12', [[-0.000114, 0.000639, 0.00091, 0.001846, -0.000138], 0.02, 150], ['6.247e+10', 4.3]]], [['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 11', [[4.9e-05, 0.000323, 0.001136], 0.02, 150], ['1.867e+10', 3.95]], ['record 14', [[0.001989, -3.1e-05, -0.000375, -0.000841], 0.01, 20], ['5.706e+08', 2.94]], ['record 15', [[-0.001078, -0.00131, 0.000944, 0.00014, 0.000267, -0.001748, -0.00084], 0.01, 20], ['9.050e+08', 3.07]], ['record 16', [[-0.000734, -0.001153, 0.001877, 0.001214, -0.000141, 0.001853, 0.001949, 0.001741], 0.02, 150], ['2.291e+11', 4.67]], ['record 17', [[-0.001898, 0.00164, -0.001195, 0.001672, 0.001581, 0.000619, 0.000584], 0.02, 800], ['5.221e+12', 5.58]], ['record 18', [[0.000448, 0.001947, -0.000135, 0.001864, -0.000395, 0.001003, -0.001613], 0.01, 20], ['1.336e+09', 3.18]], ['record 19', [[-0.001259, 0.001422, 0.001575], 0.01, 800], ['1.157e+12', 5.14]]], [['record 9', [[0.000682, -0.000928, 0.001715, -0.001046, 0.000795, 0.0015], 0.02, 150], ['1.101e+11', 4.46]], ['record 16', [[-0.000734, -0.001153, 0.001877, 0.001214, -0.000141, 0.001853, 0.001949, 0.001741], 0.02, 150], ['2.291e+11', 4.67]], ['record 21', [[0.001506, -0.001384, 0.001726], 0.01, 20], ['8.506e+08', 3.05]], ['record 22', [[0.000173, -0.000806, 0.001776, -0.000421, 0.000601, 0.000217], 0.01, 20], ['5.248e+08', 2.91]], ['record 23', [[0.001417, 0.001607, 0.000901, 0.00046, -0.001306, 0.000848, -0.000728, 0.001196], 0.02, 150], ['1.336e+11', 4.52]], ['record 24', [[1e-05, -0.000395, -0.00192, -0.001679, -0.001373], 0.02, 800], ['3.248e+12', 5.44]], ['record 25', [[0.001061, -0.001922, 0.000373, -0.000217, -0.000406], 0.02, 150], ['6.908e+10', 4.33]], ['record 26', [[0.001243, 0.001976, -0.001924, 0.001232, 0.000909, -0.001716, 0.001372], 0.01, 800], ['3.101e+12', 5.43]]], [['record 0', [[-0.001678, -0.001936, -0.000937], 0.02, 150], ['9.942e+10', 4.43]], ['record 12', [[-0.000114, 0.000639, 0.00091, 0.001846, -0.000138], 0.02, 150], ['6.247e+10', 4.3]], ['record 21', [[0.001506, -0.001384, 0.001726], 0.01, 20], ['8.506e+08', 3.05]], ['record 28', [[0.001083, 0.001888, 0.000331, -0.001539, -0.001864], 0.01, 20], ['1.269e+09', 3.17]], ['record 29', [[0.001092, 0.001248, -0.000357, -0.001861, -0.001963], 0.01, 800], ['1.937e+12', 5.29]], ['empty', [[], 0.01, 50], None], ['zero trace', [[0.0, 0.0], 0.01, 50], None], ['single pulse', [[0.0, 0.004, 0.0], 0.01, 100], ['4.750e+10', 4.22]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
record 0['9.942e+10', 13.6]['9.942e+10', 4.43]Failed
record 1['7.120e+08', 10.38]['7.120e+08', 3.0]Failed
record 2['1.080e+09', 10.65]['1.080e+09', 3.12]Failed
record 3['4.682e+08', 10.11]['4.682e+08', 2.88]Failed
record 4['1.244e+09', 10.74]['1.244e+09', 3.16]Failed
record 5['5.591e+11', 14.72]['5.591e+11', 4.93]Failed
record 6['9.041e+11', 15.03]['9.041e+11', 5.07]Failed
record 7['6.968e+10', 13.36]['6.968e+10', 4.33]Failed

SHA-256 / d33d8e50c41c7e706d2f2454b977cd988f7cc0780b02f9db9f85598fa1e60f51

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(vel_ms, dt, dist_km):
    if not vel_ms:
        return None
    flux = sum(v * v for v in vel_ms) * dt
    if flux <= 0:
        return None
    r = dist_km * 1000.0
    es = 4 * math.pi * 2700.0 * 3500.0 * r * r * flux * 0.25
    me = 2.0 / 3.0 * (math.log10(es) - 2.9)
    return ["%.3e" % es, round(me, 2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['record 0', [[-0.001678, -0.001936, -0.000937], 0.02, 150], ['9.942e+10', 4.43]], ['record 1', [[0.00191, 0.000969, -0.001187], 0.01, 20], ['7.120e+08', 3.0]], ['record 2', [[0.001531, -0.000904, -0.000647, -8.8e-05, -0.000752, 0.00103, -0.000661, 0.001856], 0.01, 20], ['1.080e+09', 3.12]], ['record 3', [[0.000833, -0.001601, 0.000828], 0.01, 20], ['4.682e+08', 2.88]], ['record 4', [[0.000607, -0.001668, 0.001964, 0.000215, 0.000396, -0.001806], 0.01, 20], ['1.244e+09', 3.16]], ['record 5', [[-7.5e-05, -0.000205, -0.001098, 0.000467], 0.02, 800], ['5.591e+11', 4.93]], ['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 7', [[-0.000373, -0.000778, -0.001431, -0.000423, 0.000918, -0.001184], 0.02, 150], ['6.968e+10', 4.33]]], [['record 3', [[0.000833, -0.001601, 0.000828], 0.01, 20], ['4.682e+08', 2.88]], ['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 7', [[-0.000373, -0.000778, -0.001431, -0.000423, 0.000918, -0.001184], 0.02, 150], ['6.968e+10', 4.33]], ['record 8', [[-0.001994, -0.000216, -0.001326, -0.001867, -0.000666, -0.001063], 0.01, 20], ['1.287e+09', 3.17]], ['record 9', [[0.000682, -0.000928, 0.001715, -0.001046, 0.000795, 0.0015], 0.02, 150], ['1.101e+11', 4.46]], ['record 10', [[0.000736, 0.001202, 0.001002], 0.01, 800], ['5.682e+11', 4.94]], ['record 11', [[4.9e-05, 0.000323, 0.001136], 0.02, 150], ['1.867e+10', 3.95]], ['record 12', [[-0.000114, 0.000639, 0.00091, 0.001846, -0.000138], 0.02, 150], ['6.247e+10', 4.3]]], [['record 6', [[0.000261, 0.001239, 0.00014, 0.000428, -0.001698, -0.000263], 0.01, 800], ['9.041e+11', 5.07]], ['record 11', [[4.9e-05, 0.000323, 0.001136], 0.02, 150], ['1.867e+10', 3.95]], ['record 14', [[0.001989, -3.1e-05, -0.000375, -0.000841], 0.01, 20], ['5.706e+08', 2.94]], ['record 15', [[-0.001078, -0.00131, 0.000944, 0.00014, 0.000267, -0.001748, -0.00084], 0.01, 20], ['9.050e+08', 3.07]], ['record 16', [[-0.000734, -0.001153, 0.001877, 0.001214, -0.000141, 0.001853, 0.001949, 0.001741], 0.02, 150], ['2.291e+11', 4.67]], ['record 17', [[-0.001898, 0.00164, -0.001195, 0.001672, 0.001581, 0.000619, 0.000584], 0.02, 800], ['5.221e+12', 5.58]], ['record 18', [[0.000448, 0.001947, -0.000135, 0.001864, -0.000395, 0.001003, -0.001613], 0.01, 20], ['1.336e+09', 3.18]], ['record 19', [[-0.001259, 0.001422, 0.001575], 0.01, 800], ['1.157e+12', 5.14]]], [['record 9', [[0.000682, -0.000928, 0.001715, -0.001046, 0.000795, 0.0015], 0.02, 150], ['1.101e+11', 4.46]], ['record 16', [[-0.000734, -0.001153, 0.001877, 0.001214, -0.000141, 0.001853, 0.001949, 0.001741], 0.02, 150], ['2.291e+11', 4.67]], ['record 21', [[0.001506, -0.001384, 0.001726], 0.01, 20], ['8.506e+08', 3.05]], ['record 22', [[0.000173, -0.000806, 0.001776, -0.000421, 0.000601, 0.000217], 0.01, 20], ['5.248e+08', 2.91]], ['record 23', [[0.001417, 0.001607, 0.000901, 0.00046, -0.001306, 0.000848, -0.000728, 0.001196], 0.02, 150], ['1.336e+11', 4.52]], ['record 24', [[1e-05, -0.000395, -0.00192, -0.001679, -0.001373], 0.02, 800], ['3.248e+12', 5.44]], ['record 25', [[0.001061, -0.001922, 0.000373, -0.000217, -0.000406], 0.02, 150], ['6.908e+10', 4.33]], ['record 26', [[0.001243, 0.001976, -0.001924, 0.001232, 0.000909, -0.001716, 0.001372], 0.01, 800], ['3.101e+12', 5.43]]], [['record 0', [[-0.001678, -0.001936, -0.000937], 0.02, 150], ['9.942e+10', 4.43]], ['record 12', [[-0.000114, 0.000639, 0.00091, 0.001846, -0.000138], 0.02, 150], ['6.247e+10', 4.3]], ['record 21', [[0.001506, -0.001384, 0.001726], 0.01, 20], ['8.506e+08', 3.05]], ['record 28', [[0.001083, 0.001888, 0.000331, -0.001539, -0.001864], 0.01, 20], ['1.269e+09', 3.17]], ['record 29', [[0.001092, 0.001248, -0.000357, -0.001861, -0.001963], 0.01, 800], ['1.937e+12', 5.29]], ['empty', [[], 0.01, 50], None], ['zero trace', [[0.0, 0.0], 0.01, 50], None], ['single pulse', [[0.0, 0.004, 0.0], 0.01, 100], ['4.750e+10', 4.22]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
record 0['9.942e+10', 5.4]['9.942e+10', 4.43]Failed
record 1['7.120e+08', 3.97]['7.120e+08', 3.0]Failed
record 2['1.080e+09', 4.09]['1.080e+09', 3.12]Failed
record 3['4.682e+08', 3.85]['4.682e+08', 2.88]Failed
record 4['1.244e+09', 4.13]['1.244e+09', 3.16]Failed
record 5['5.591e+11', 5.9]['5.591e+11', 4.93]Failed
record 6['9.041e+11', 6.04]['9.041e+11', 5.07]Failed
record 7['6.968e+10', 5.3]['6.968e+10', 4.33]Failed

SHA-256 / d98f48dc53b6ab4208d7936ccafc5ed99a9081e03529fffdfa647b1cc36751a0

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

Stipulated deterministic teaching model of a seismological magnitude procedure; constants and tables are fixed by the contract and no claim of agency or standards conformance is made. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:48:33.045345+00:00.

Case digest / 151ab3b0441de9cf2f0cdda4c994b74feffe3397b3fc7c36bba362d3dfffaca0