Skip to content

Repository files navigation

Environmental GRIB Generator (C++)

A standalone native engine reproducing the production generation paths of tidal-current-grib-generator. It has no Python or wxWidgets runtime dependency, allowing the eventual OpenCPN catalogue plugin, CLI and tests to call one implementation.

The native executable also provides a versioned job-file interface intended for the OpenCPN plugin. See docs/JOB_PROTOCOL.md.

Weather generation supports NOAA GFS and HRRR, Met Office UKV, MET Norway's Nordic forecast, DWD ICON-EU, and ECMWF IFS/AIFS Open Data. Presets are minimal, routing, marine, and provider-aware all. The latter selects all fields which the target xGRIB reader can display; it is intentionally not the upstream provider's unrestricted field inventory.

Dependencies

The engine uses maintained distribution libraries: ecCodes, JsonCpp, NetCDF-C, libcurl, Qhull, bzip2, Blosc, libzip and (for UKV) PROJ.

Arch Linux development packages:

sudo pacman -S cmake gcc eccodes jsoncpp netcdf curl qhull bzip2 blosc libzip proj

UKV is disabled explicitly if PROJ is unavailable. Other providers continue to build and run.

Build and test

cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j"$(nproc)"
ctest --test-dir build --output-on-failure

python3 tests/differential_parity.py \
  --cpp-cli build/environmental-grib \
  --python-repo /path/to/tidal-current-grib-generator

Examples

./build/environmental-grib generate \
  --bbox -7 51.5 -4 55.5 \
  --start 2026-07-01T00:00:00Z --hours 6 --step-hours 3 \
  --grid-spacing-deg 0.25 --source synthetic --output /tmp/current.grb

./build/environmental-grib prepare-tpxo-cache \
  --model-dir /path/to/licensed/tpxo \
  --bbox -8 49 -3 56 --grid-spacing-deg 0.05 \
  --output /path/to/local-current.tpxocache

./build/environmental-grib generate \
  --source tpxo-cache --input-cache /path/to/local-current.tpxocache \
  --start 2026-07-01T00:00:00Z --hours 72 --step-hours 1 \
  --output /tmp/tidal-current.grb

./build/environmental-grib inspect-grib /tmp/tidal-current.grb

Copernicus passwords are accepted through an environment-variable name, never as a command-line value. See docs/PARITY.md for the exact evidence and safety gates for each provider.

Copernicus metadata endpoints are discovered from the official Marine client configuration. Downloads use bounded retries and try each advertised or documented CloudFerro catalogue host. The provider selected by the caller is never silently replaced with a different model: if a regional catalogue is not available on a fallback host, the request fails with the attempted-host diagnostics instead of substituting lower-resolution global data.

The provider list also exposes the Copernicus IBI 1/36-degree and Mediterranean 4.2 km hourly surface-current products explicitly. Both contain tidal and non-tidal model processes. IBI is a high-resolution choice for the Irish Sea and North Channel, but its published northern boundary is 56.08 N; it is not equivalent to the wider 1.5 km NWS product.

About

Native weather, wave and current GRIB generation engine for OpenCPN

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages