PhysWall inverts a closed, non-linear physical law at a single measurement point — and refuses when the inverse is not unique.
One wave height, read two ways. Move the period and depth and watch where the shallow-water approximation stops being true.
⚠ worked out in your browser
The intermediate region is not the place where both shortcuts are a little wrong. It is where neither one is a statement about this wave at all, and the full tanh is the only thing that is.
That is the same shape as a closed bound run backwards: a return-loss target under the Bode-Fano floor is not a hard design, and no amount of effort on the network moves it.
Move a slider and the answer below updates. There is nothing to press.
Each bar is one 30-minute sample from NDBC buoy 46083, Fairweather Ground, 105 nm west of Juneau. The dark part is swell, the light part is wind sea, and the line is the total height the buoy reports separately. If the partition is right, the two must satisfy Hs² = Sw² + WW² — and they do, to within the rounding.
A reviewer ran kFromT and found it diverging.
It used fixed-point iteration — k = ω²/(g·tanh(kh)),
eighty times — which converges fast in deep water and
oscillates in shallow.
T=16s, h=2m 1 iteration k = 0.500
2 k = 0.0206
80 k = 0.0748 <- returned
1000 k = 0.0891
exact k = 0.0891
error crosses 1% at kh = 0.30
reaches 16% at kh = 0.178
reaches 48% at kh = 0.10
π/10 is 0.314 — the value this page itself calls the shallow-water threshold. The one regime it names explicitly was the one regime it computed wrongly.
It is bisection now. g·k·tanh(kh)
rises monotonically in k, so the root is unique and bisection always finds
it. There is no second-root problem here, unlike D7.
⚠ And the guard already knew. roundTrip returned FAIL on all three shallow cases and PASS on all three deep ones. Nobody had run it. A guard that is never executed is a comment.
⚠ Two smaller things from the same pass: g was 9.81 rather than 9.80665, undeclared — 0.034%, negligible against a buoy's own uncertainty and not negligible if the 0.78 bound is ever checked against field data. And the erf approximation's maximum error, 1.5e-7, was not written down. Both are now stated in the code.
validated: something outside was in a position to move this, and it did. Four records took something away, and each killed a claim we had already made — the fourth after the page was already published.
1 46042's .spec, 2,100 rows, every swell and
wind-wave column MM
killed "a .spec file means a partition"
2 DPD sampled every 30 min, WVHT every 20
killed "the dominant period flips inside
twenty minutes"
3 46083 is Fairweather Ground, Alaska,
131 m -- not shallow California
killed our assumption from the station
number alone
4 kFromT diverged below kh = 0.3
killed every shallow-water number this
page printed, including one in
its own worked table
The second is the one that earns the label. We had a finding — two wave trains swapping dominance inside twenty minutes — and NOAA’s own sampling rates showed part of it was an artefact of comparing columns measured at different times. The swap is real; the twenty minutes was not.
The identity Hs² = Sw² + WW² holds on 14 of 15 samples across six buoys, to within 0.06 m, and 0.1 m is the rounding. That is agreement, not confirmation, and it is not what the label rests on.
⚠ Not alpha: nobody outside this project has run a breaking round against the corrected version, and no instrument of ours has been in the water.
Buoy 46042, Monterey, 1,710 m depth, stopped reporting on 21 August 2026. It has been silent for ten days.
It does not appear in NDBC’s maintenance schedule — because that schedule was last updated on 5 August, sixteen days before the buoy went quiet. Nothing is wrong with the instrument record and nothing is wrong with the paperwork. They simply do not meet.
⚠ The four axes this project uses — the machine (ε), the wrong law, the wrong object, which definition — do not name this. It is the gap between an instrument and the record kept about it, and the same shape appeared at a stream gauge: a 2.50 ft datum step in 2008 whose documentation does not exist either.
⚠ And this shape is known in the field, which matters more than our finding it. The US Army Corps of Engineers writes, in its own technical note on using NDBC archives, that long-term series from a single buoy site have experienced multiple instrumentation modifications. They are not reporting a defect; they are telling users to expect one. And Manly Hydraulics Laboratory in New South Wales ran two different buoy types side by side in 2018 and found them equivalent — the same two-route check, done by somebody else, before us.
Neither says we are right. Both say the question is real, which is a smaller claim and a more useful one.
And 46042 carries a second version of it. Its
.spec file exists, is 36 days long, and every swell and
wind-wave column in it reads MM — 2,100 rows of a
partition that was never computed. The file being present is not the
data being there, which is why “68% of stations publish a
.spec” is an upper bound and not a count.
The first version of this reading compared
DPD (dominant period) against APD (average
period) row by row, and found DPD jumping between 7 and 16 seconds inside
twenty minutes. That looked like two wave trains swapping dominance.
⚠ Part of it was a sampling artefact. DPD is
reported every 30 minutes and WVHT every 20, so rows exist with a wave
height and no dominant period. Comparing the two columns line by line
compares samples taken at different times. The swap is real — the
.spec partition shows it directly — but the twenty
minutes was not.
Zero measurements of our own.
wave data NDBC 46083, Fairweather Ground AK
58.276N 138.024W, depth 131 m
3-m discus hull, SCOOP payload
silent buoy NDBC 46042, Monterey CA, depth 1,710 m
maintenance NDBC station maintenance schedule
context USACE ERDC/CHL CHETN-I-100, on using
NDBC archives; Manly Hydraulics
Laboratory NSW, 2018 buoy comparison
dispersion Airy linear wave theory
breaking McCowan 1894, H/h = 0.78
The dispersion relation and the breaking ratio are standard results. The buoy records are NOAA’s. Nothing here has been measured by us, and no instrument of ours has been in the water.
⚠ This tool is free. It reads NOAA records — public data, measured and published by a public agency — and charging for a reading of a public record would be charging for arithmetic that is not ours.
⚠ The same engine runs all nine tools here. It asks how much a measurement allows you to conclude, and refuses the same way in every field — two roots and it will not choose, one source entered twice, the law does not hold here. How to check that without trusting us →
A checking tool, not professional advice. It tells you what a measurement does and does not support; what to do about that is your decision.