/solunar

Primary LanguageJavaScriptMIT LicenseMIT

solunar

Map View: overview screenshot of operations

Detail View: detail screenshot of operations

Works Cited

Tide Logic

The core logic of this is a TypeScript implementation of the timeless Manual of Harmonic Analysis and Prediction of Tides, authored by Paul Schureman for the U.S. Department of Commerce as part of their Coast and Geodetic Survey, first published in 1924 and last modified in 1958. The full work is included here for reference (Schureman1958.pdf), or can be obtained directly from NOAA. All equations and other material derived from this manual are cited with the source page number as measured from the PDF for ease of reference (note: not the internal page numberings).

The work Computer Applications to Tides in the National Ocean Survey provides helpful extensions of core tables from Schureman into the modern era, which were consulted for verification of the code. This work can also be obtained from NOAA at the link above, or in this repository (Zetler1982.pdf).

Data for the Harmonic Constituents of all 1232 capable stations was obtained from the NOAA Tides and Currents CO-OPS Metadata API, and is included in the data directory for reference, along with the data/scripts.hdnb Handy Dandy Notebook used for processing the data.

In short: Thanks NOAA!

UI Styling

The UI is based (with varying degrees of roughness) on the F-15 Eagle's cockpit. Reference photos are kept in the mood directory, and were consulted during development. Thanks McDonnell Douglas!

Additional reference photos come from Will Wright’s "Antique Soviet Space Junk" collection, as discovered on Don Hopkin's blog Thanks Will & Don!

Contributing

Do you have Harmonic Constituents? I'd love to hear about them! Please feel free to drop a line on this issue.

For other development, bun is recommended, but npm will work fine. Just run bun i, then bun run bundle-dev and bun run serve-dev for development, or bun run bundle for building the static assets.

In VSCode, just F5 to build watch and run after dependencies have been installed.