Port of Olympia · Budd Inlet

Tidal Spectrum & Constituents

The tide is a sum of astronomical rhythms. Here three years of Port gauge records are taken apart by frequency: first with the Fourier transform, then with a least-squares harmonic analysis that names each rhythm. Recomputed every hour as the record grows.
Loading…
Loading the latest analysis…

Amplitude spectrum of the last days

A Fourier transform of a short record shows bands; a long one shows lines. Step through the record lengths, or press play, and watch neighbouring constituents separate once the record is longer than one over their frequency difference.

Diurnal band, zoomedQ1 · O1 · P1 · K1
Semidiurnal band, zoomedN2 · M2 · S2 · K2

Amplitudes are Hann-windowed and scaled so a pure sinusoid of amplitude A peaks at A ft. Zero-padding draws the curve smoothly between frequency bins, but it does not add resolution. Only a longer record does that.

Spectrogram: a 5-day window sliding along the record

0.01 ft6 ftamplitude (log scale)

Harmonic analysis: Budd Inlet’s constituents

Budd Inlet (our gauge) Seattle (NOAA 9447130, official)

↗ See these constituents turn the cranks of a Kelvin tide machine · or spin as wooden arms

Test: our constants vs NOAA on a week they haven’t seen

Observed (gauge) Our harmonic prediction NOAA prediction

What’s left: hunting for a seiche

Power spectrum of the residual after subtracting our harmonic fit (Welch’s method, 3-day segments). Weather makes the slope at low frequencies. A basin resonance (a seiche, water sloshing along the inlet) would show as a bump at a fixed period, usually well under 6 hours. Look for one; there may not be one.

From a time series to named constituents

Numbers in teal come from the current analysis.

Use the data

/api/tides/spectrum — everything on this page: spectra, spectrogram, constituent table, holdout test (JSON).

/api/tides/harmonics — just the fitted constants (amplitude, phase, SNR), mean level and UTide’s constituent definitions (JSON, a few KB).

/api/tides/licor/download — the raw 5-minute record, MLLW-referenced (CSV; add ?format=json). Try it in Python with utide.solve, or in MATLAB with UTide or T_Tide.

Built by Afsin Yilmaz · Marine Terminal, Port of Olympia
Questions, or want to use this in a class? afsiny@portolympia.com