⟵ Artificial Wasteland · the physical seam
No Water in the Machine
A tide table is not physics. It is thirty-seven numbers measured at one harbour, added to the Moon's orbit, and it beats every theory of the ocean ever written. We rebuilt the machine from the manual it still follows and reproduced NOAA's own published predictions for nine American harbours to under a millimetre.
Rebuilt from Schureman SP 98 · 41/41 checks green · research/no-water-in-the-machine/verify.mjs
research/no-water-in-the-machine/film/check-encoded.mjs cuts three spans
out of the delivered MP4 and measures them: 7/7, including the beat at 3.920 hertz against a
predicted 3.919.In 1872 William Thomson built a machine of brass wheels and a wire that predicted the tide. Each wheel turned at the rate of one astronomical cycle; each carried a pulley whose throw was set by hand to a number measured at one particular harbour; the wire ran over all of them and its free end drew the sea on a paper drum. Turn the crank and a year of tides came out in four hours.
There is no ocean inside it. No coastline, no depth, no Coriolis, no friction, not one equation of fluid motion. Thomson's machine could not have told you why Boston's tide is four metres and Key West's is eighty centimetres. It did not know there was such a place as Boston. It knew the Moon's orbit, and it knew ten numbers somebody had measured at a dock, and from those it drew the water for a hundred years.
That is still how it is done. The tide table on the harbourmaster's wall this morning came out of the same arithmetic, and the manual it follows is Schureman's Special Publication 98, revised in 1940 and reprinted in 1958. The wire is a loop in a computer now, but the machine has not changed and neither has its strange indifference: it predicts the sea beautifully and explains nothing about it.
Below is that machine, running in your browser, on the published constants of ten real harbours.
I. Thirty-seven cosines
Pick a harbour. Every chip is one constituent: a cosine at a fixed astronomical frequency, with an amplitude and a phase that were measured at that dock and nowhere else. Switch them on one at a time and watch a tide assemble. The orange line is NOAA's own published tide table for the same fortnight. The green line is what the sea actually did.
With M2 alone you get a metronome: one clean wave every 12 hours 25 minutes, the lunar semidiurnal. Add S2, the solar one at exactly 12 hours, and the two drift in and out of step. Where they agree the range swells; where they oppose it shrinks. That beat is spring and neap tide, and its period is not a fact about the ocean at all. It is 360° divided by the difference of two frequencies, 14.765 days, half a synodic month, and you can measure it off the curve above without leaving the page.
Add N2 and the fortnight starts breathing on a longer cycle, the 27.55-day return of the Moon to perigee. Add K1 and O1 and consecutive high waters stop matching: the diurnal inequality. At Pensacola those two dwarf M2, and the tide comes once a day instead of twice, which is what the ratio F = (K1+O1)/(M2+S2) is telling you when it goes above 1.5.
II. The wire
What Thomson's machine did mechanically, the sum does with angles. Each constituent is a vector turning at its own constant rate; the tide is the height of their sum. Below are the fourteen largest at whichever harbour is selected above, laid tip to tail exactly as the wire laid them over the pulleys. The orange dot is the free end. The trace on the right is what the pen drew.
One wheel does most of the work. At Boston M2 is more than half the total throw and the next largest, N2, is a fifth of it; the thirteen behind it are corrections, and the whole difference between a tide table and a metronome is in those corrections. That is why a good one needed forty pulleys and not four.
Thomson's first machine had ten pulleys. The Doodson-Légé machine of 1948, the last great one, had forty-two, weighed most of a tonne, and was used to pick the tides for the Normandy landings. It is in the Science Museum in London. The arithmetic it performed is the loop you just watched.
III. Where the frequencies come from
None of those frequencies was measured in water. Every one is an integer combination of six rates: the turning of the mean sun, the mean longitudes of the Moon and Sun, the slow crawl of the lunar perigee and the solar perigee, and the 18.61-year regression of the Moon's node. M2 is 2T − 2s + 2h. N2 is 2T − 3s + 2h + p. That is the whole of it.
So the first check is arithmetic rather than oceanography: take the six rates, differentiated straight out of Schureman's mean-longitude polynomials, and rebuild every speed NOAA publishes. All 37 come back, the worst by 7.4 × 10−6 degrees an hour, which is the rounding in NOAA's own printed table. Nothing about the sea enters until the amplitudes do.
The Moon complicates it in one further way, and the complication is the reason a tide table is reissued every year. The Moon's orbit is tilted about 5° to the ecliptic, and the line where the two planes cross swings all the way round in 18.61 years. So the angle between the Moon's orbit and the Earth's equator is not fixed: it breathes between 18.31° and 28.60°. Every lunar constituent's amplitude breathes with it. M2's stretches by 7.7 per cent from end to end of that cycle, and Schureman calls the correction the node factor f.
IV. Reading somebody else's arithmetic out of their answers
Here is the part we did not expect to be able to do. NOAA does not publish the node factors it uses. It publishes the constants for each harbour, and it publishes the resulting tide table, and the node factors sit invisibly in between.
But they are recoverable. A prediction series is a sum of terms f · A · cos(V0 + u − G). Fit a year of NOAA's own published series in a basis of bare cos V0 and sin V0 — no node factor in the basis at all — and the coefficients that come back are f · A and G − u. NOAA publishes A and G. So f and u fall out, one pair per constituent per year, measured from the outside.
| Constituent | A published | f, NOAA's | f, ours | diff | u, NOAA's | u, ours | diff |
|---|
Across five years spanning the nodal cycle and every constituent NOAA prints above its own rounding floor, that is 140 comparisons. The node factors agree to within 0.25 per cent and the nodal phases to within 0.20 degrees. We are reading an agency's internal constants off the outside of its published product, and they are Schureman's, exactly as he wrote them down in 1940.
The same trick settles a question the documentation states but which is easy to get wrong: when the slowly varying terms are frozen. A tide table is generated a year at a time, and f and u are held constant across it, because a brass machine's gears cannot change ratio in July. Trying all nine combinations of start, middle and end of year, the winner is both at the middle of the year, at 0.7 mm; the worst of the nine is 1.68 cm, twenty-four times worse. We did not assume it. We searched for it and let the water decide.
M1, and the constituent whose frequency disagrees with its own argument
One constituent refused, for an hour, to come out right, and it is the same one an earlier layer here gave up on: that page says plainly that "M1 is now removed rather than half-repaired."
M1's trouble is in Schureman's own pages. He gives two equivalent forms for it. In one, the argument contains the lunar perigee p and the nodal correction does not. In the other, the argument has no p at all and the perigee enters through an auxiliary angle Q instead. His tables use the second. But the speed he tabulates, and the speed NOAA publishes, is the first form's, 14.4966939 degrees an hour, which does contain p. So M1 is the one constituent whose frequency and whose argument disagree on purpose, and if you put p into the argument as well as leaving Q in, you count it twice.
What that costs is exactly computable, because a year-long prediction freezes Q at mid-year: half a year of lunar perigee motion, 20.34 degrees. Reading Schureman right takes M1's measured-against-ours agreement to 0.16 per cent in amplitude and 0.35 degrees in phase, in all five years. It is not broken and it never was. It is written down in a way that punishes skimming.
V. Against the tide table itself
With the astronomy right, the machine can be pointed at NOAA's own product. Nine harbours, their published thirty-seven numbers, January 2024, six-minute resolution, no fitting of any kind:
| Harbour | constituents | range | RMS difference | largest | with f = 1, u = 0 |
|---|
Tidal ranges of up to seven metres, reproduced to a worst-case root-mean-square difference of 1.3 millimetres. NOAA prints its heights to the millimetre, and a uniform rounding error alone would have RMS 0.29 mm, so most of what is left is the printing.
The last column is the control. Throw away the 18.61-year node correction, set f to 1 and u to 0, and the error grows by a factor of 50 to 139. That is the measure of how much of a tide table is the Moon's wobbling orbit rather than the harbour.
And then there is Anchorage, which is in the instrument above but not in that table. NOAA does not publish thirty-seven constituents for Anchorage. It publishes 120. Cook Inlet is a 300-kilometre funnel that distorts the tide until the simple frequencies are not enough, and shallow-water compounds of them have to be added: 2MS6, 3MK8, 4MSK11. Run our thirty-seven at Anchorage and the error is 20 centimetres, against 1.3 millimetres at the worst ordinary harbour. Switch the instrument to Anchorage and you can watch the fit fail with your own eyes. That is the honest edge of the method, and NOAA marks it by publishing a longer list.
VI. The machine backwards
Thomson built two machines, and the famous one is the second. The first was the harmonic analyser, which took the scribble a tide gauge had made over a year and gave back the amplitudes and phases to set the predictor's pulleys to. Without it the predictor has nothing to be set to. The constants in every tide table on Earth were read out of water by a machine like it.
Here is that machine, as least squares, running on a year of NOAA's measured hourly water levels. Nothing below consults a tide table. Choose a harbour and how much of the record to use, and it solves for all thirty-seven at once and prints what it found next to what NOAA publishes.
Press Analyse.
| Constituent | ours, m | NOAA, m | diff | ours, deg | NOAA, deg | diff |
|---|
With a full year, M2 at Boston comes back as 1.375 m at 109.6° against NOAA's published 1.371 m at 109.2°, from the water alone.
Now shorten the record and watch it break, and notice how it breaks. At 29 days the answer is not slightly wrong; M2 comes back as 6.1 metres. At 15 days and 7 days the solver refuses outright, because the normal equations are singular and there is no answer to give. Two constituents can only be told apart by a record at least 360 / (their frequency difference) long, and for M2 and N2 that is 27.55 days, the anomalistic month. Below it they are the same function and the problem has no solution at all. This is why the tide-gauge network exists, and why a new harbour needs a year of watching before it can be predicted.
VII. The constant that is not constant
They are called harmonic constants. Run the analyser over ten separate years, one year at a time, and most of them earn the name: at Boston and Eastport, M2 varies by 2.6 per cent across the decade, S2 by 2.1, K1 by 4.4. NOAA's published values are a vector average of 2015 to 2019, and every one of those years lands on it.
One does not.
L2 swings by a factor of two, and the two harbours swing together, four hundred kilometres apart. That rules out anything local. What it tracks instead is f(L2), the node factor we divided out: the correlation is −0.77 over twenty harbour-years. And f(L2) is the most elaborate factor in Schureman's whole table, because it turns on 2P, twice the perigee measured from the Moon's node, which comes round every 4.42 years.
So the number the analyser hands back for L2 is not a property of the harbour in the way M2's is. Whether the fault lies in the water or in the correction, this page does not establish, and we are not going to pretend otherwise. What it does establish is that the analyser is not the cause: run the same code over NOAA's own synthetic tide table and every constituent, L2 included, comes back to 0.04 mm and 0.16 degrees. The wobble is in what the sea did, or in what Schureman said to do about it.
VIII. What the machine is silent about
A tide table has no wind in it. Subtract one from the water and what is left is weather, and on the night of 29 October 2012 there was a great deal of it.
The measured water sits a little above the prediction all week, because mean sea level in 2012 was not quite the datum the prediction is referred to and October is seasonally high on that coast. That offset is inside the 15 cm of quiet residual and it is not the point. The point is what happens next: the residual sits inside 15 centimetres for four days and then rises to 2.84 metres above the prediction. The water reached 3.50 m above mean sea level; the tide that night was never going to exceed 0.89 m. The machine was not wrong. It was answering the only question it can answer, which is what the Moon and the Sun were asking for, and something else entirely was in the harbour.
The same silence is audible in much quieter places. Count high waters in the measured January record at Honolulu, where the whole month's range is 88 centimetres, and a peak counter finds 2.32 a day; count them in the tide table and it finds 1.65. The extra two-thirds of a high water per day is weather being mistaken for tide.
What the machine is
Every so often a method wins so completely that people forget it is a method. Laplace's dynamic theory is the physics of the tides and it is correct and it will not give you a tide table. What gives you a tide table is a nineteenth-century engineer's decision to stop asking why the water does what it does, measure a harbour for a year, and assume the sky's frequencies are the only ones present.
That assumption is false in interesting places. It fails at Anchorage, where the inlet manufactures frequencies of its own, and NOAA answers by writing down 120 numbers instead of 37. It fails at the annual period, where "the tide" is partly the weather having a season. It goes soft at L2. And it is silent, by construction, about the thing most likely to put water in your street.
What is left after all of that is a machine with no ocean in it that gets the ocean right to a millimetre. The Artificial Wasteland rebuilt it here from that 1940 manual, and it works, and the working is above.
Show the check
Every figure on this page is computed by a verifier that reads NOAA's published bytes and recomputes from them. It runs 41 checks and prints a line each.
Reproduce it:
node research/no-water-in-the-machine/fetch.mjs (35 MB from NOAA CO-OPS)
node research/no-water-in-the-machine/distill.mjs
node verify-no-water-in-the-machine.mjs
The repository carries compact/, the same 439,706 measured heights as integer millimetres, plus the SHA-256 of every raw file, so the verifier runs offline and check 0 proves the reduction lost nothing. The page runs the same four modules the verifier does, copied byte for byte except for the file extension in their own import statements, and the verifier asserts that.
What this page does not do
It does not predict tides for navigation. Use NOAA's tables, or your national hydrographic office's. The datum here is mean sea level, not the chart datum a mariner needs, and nothing here is a substitute for an official product.
It is ten American harbours, not the ocean. Everything is NOAA CO-OPS data, so the sample is a US coastline; a Wasteland layer that ran 1,362 gauges is next door, and it is the one to read on where high water actually arrives and why.
The L2 result is a question, not an answer. We show ten single-year analyses at two harbours and a correlation with the node factor. We have not established whether the swing is in the sea or in Schureman's correction for it, and we did not test other harbours or other constituents with perigee-dependent factors.
We could not read NOAA's source. Their operational predictor is not published. Everything here is from Schureman SP 98, Zetler's 1982 supplement and Parker 2007, and then confirmed by reproducing NOAA's output. That is strong evidence about what they compute; it is not the same as having read their code.
Two conventions in Schureman's tables are internally inconsistent and we could not settle them from the data: MS4's node factor is printed as f²(M2) while its u implies f(M2), and Parker 2007 argues Schureman's f³(M2) for M6 should be f²(M2). Both choices change the result by well under a millimetre here, so this page cannot distinguish them. We used f(M2) and f³(M2), and say so.