Home › reference › constituents
Harmonic constituents
The bundled catalogue holds 68 constituents. The 26 below are the ones that carry almost all of the signal in most records, and they are the only ones most analyses should name explicitly. Speeds are angular speeds in degrees per hour; periods are 360 divided by the speed, in hours.
Each name below links to its own page; the whole set is machine-readable at /api/constituents.json.
| Name | Speed, °/h | Period, h | Species | Origin |
|---|---|---|---|---|
| M2 | 28.9841042 | 12.4206 | semidiurnal | principal lunar |
| S2 | 30.0000000 | 12.0000 | semidiurnal | principal solar |
| N2 | 28.4397295 | 12.6583 | semidiurnal | larger lunar elliptic |
| K2 | 30.0821373 | 11.9672 | semidiurnal | lunisolar declinational |
| L2 | 29.5284789 | 12.1916 | semidiurnal | smaller lunar elliptic |
| T2 | 29.9589333 | 12.0164 | semidiurnal | larger solar elliptic |
| NU2 | 28.5125831 | 12.6260 | semidiurnal | larger lunar evectional |
| MU2 | 27.9682084 | 12.8718 | semidiurnal | lunar variational |
| 2N2 | 27.8953548 | 12.9054 | semidiurnal | second-order lunar elliptic |
| K1 | 15.0410686 | 23.9345 | diurnal | lunisolar declinational |
| O1 | 13.9430356 | 25.8193 | diurnal | principal lunar |
| P1 | 14.9589314 | 24.0659 | diurnal | principal solar |
| Q1 | 13.3986609 | 26.8684 | diurnal | larger lunar elliptic |
| J1 | 15.5854433 | 23.0985 | diurnal | smaller lunar elliptic |
| S1 | 15.0000000 | 24.0000 | diurnal | solar, largely radiational |
| OO1 | 16.1391017 | 22.3061 | diurnal | second-order lunar declinational |
| 2Q1 | 12.8542862 | 28.0062 | diurnal | second-order lunar elliptic |
| M4 | 57.9682084 | 6.2103 | quarter-diurnal | shallow-water overtide of M2 |
| MS4 | 58.9841042 | 6.1033 | quarter-diurnal | shallow-water compound, M2 plus S2 |
| MN4 | 57.4238337 | 6.2692 | quarter-diurnal | shallow-water compound, M2 plus N2 |
| M3 | 43.4761563 | 8.2804 | terdiurnal | lunar, third-degree term |
| M6 | 86.9523126 | 4.1402 | sixth-diurnal | shallow-water overtide of M2 |
| M8 | 115.9364169 | 3.1052 | eighth-diurnal | shallow-water overtide of M2 |
| MSf | 1.0158958 | 354.3673 | long period | lunisolar synodic fortnightly |
| Mf | 1.0980331 | 327.8590 | long period | lunar declinational fortnightly |
| Mm | 0.5443747 | 661.3092 | long period | lunar monthly elliptic |
Two long-period terms are deliberately absent from the extract and present in the catalogue: Sa and Ssa, at 0.0410686 and 0.0821373 °/h. They are annual and semiannual, mostly meteorological rather than gravitational in a coastal record, and a record shorter than a year cannot say anything about them at all.
What the amplitudes look like in practice
How long a record has to be
Two constituents can only be told apart if the record is long enough for their phase difference to complete a full turn. That is the Rayleigh criterion, and in this form it is just a division: the required span in hours is 360 divided by the difference of the two speeds.
| Pair | Speed difference, °/h | Span needed |
|---|---|---|
| K1 and O1 | 1.0980331 | 13.7 d |
| M2 and S2 | 1.0158958 | 14.8 d |
| M2 and N2 | 0.5443747 | 27.6 d |
| K1 and P1 | 0.0821372 | 182.6 d |
| S2 and K2 | 0.0821373 | 182.6 d |
| Sa and Ssa | 0.0410686 | 365.2 d |
From those numbers follows the only planning table that matters, and it is also what tc.resolvable(span) returns:
| Record span | Resolvable terms | What the extra length buys |
|---|---|---|
| 15 d | 11 | the four largest semidiurnal and diurnal terms, nothing elliptic |
| 29 d | 22 | N2 and Q1 separate; K2 and P1 must still be inferred |
| 183 d | 31 | K2 and P1 resolved directly, no inference needed |
| 371 d | 37 | annual and semiannual terms; this is the example record |
| 19 y | 68 | the whole catalogue, with the nodal terms fitted rather than corrected |
Inference for short records
When a term cannot be resolved, the usual practice is to tie it to a resolved partner at a fixed ratio taken from the equilibrium tide. tidalcore does this only when asked, and marks every inferred term in the solution:
sol = tc.analyse(short_record)
sol = tc.infer(sol) # uses DEFAULT_PAIRS
# P1 = 0.331 * K1, phase lag copied from K1
# K2 = 0.272 * S2, phase lag copied from S2
An inferred amplitude is an assumption dressed as a measurement. It is usually a good assumption in open coastal water and a poor one in a strongly non-linear estuary. If you publish inferred terms, say which ones were inferred and at what ratio, and never let them into a comparison between two stations analysed over different spans.
The nodal correction
The lunar node completes a cycle in 18.61 years, which modulates the lunar constituents by a few per cent. With nodal=True, which is the default, the standard node factors are applied at the solution's reference time, so amplitudes from records in different years are comparable. Turning it off is appropriate only when you intend to fit the nodal satellites yourself, which needs most of those 19 years of data.
See also: formats and QC for the flag column that decides which samples reach the fit, and the API overview for the exact signatures of resolvable and infer.