Executive Summary
1 Β· What Predicts Eddies, and How Far Ahead?
The chart you linked (myfoxhurricane) visualizes RTOFS, NOAA's Real-Time Ocean Forecast System β a daily-run global eddy-resolving model. That's the right family of tools. Here's the landscape:
| Source | Type | Resolution | Horizon | Access | Notes |
|---|---|---|---|---|---|
| RTOFS (NOAA) | Daily forecast | 1/12Β° (~8 km) | ~7 days | Free, GRIB2/NetCDF | The model behind your fox chart; Atlantic focus |
| GOFS 3.1 / HYCOM | Daily forecast | 1/12Β° | ~7 days | Free (THREDDS/OPeNDAP) | Global; RTOFS's parent model |
| Copernicus Marine (CMEMS) | Analysis + 10-day forecast | 1/12Β° | ~10 days | Free w/ registration | Best all-round global product; assimilates altimetry |
| OSCAR (NASA/JPL) | Satellite-derived nowcast | 1/3Β° | None (5-day composite) | Free | Great sanity-check on model drift |
| SWOT + DUACS altimetry | Sea-surface height obs | ~15β25 km swaths | Observation, not forecast | Free | SWOT (2022+) dramatically sharpens eddy mapping; feeds the models above |
| AVISO Mesoscale Eddy Atlas | Detected & tracked eddies | β | Historical + near-real-time | Free | 30-year eddy track database; goldmine for climatology |
| Saildocs | GRIB-by-email delivery | β | β | Free | Delivers RTOFS current GRIBs over low-bandwidth email β ideal aboard |
| Regional (CARICOOS etc.) | Regional models/obs | ~2β5 km | ~2β3 days | Free | Better near-coast detail around PR/USVI |
How far ahead is reliable?
- Days 1β3: Eddy centers typically good to Β±20β40 km; swirl speeds to Β±0.1β0.2 kt. Trust it for tactical decisions.
- Days 4β7: Position error grows to Β±50β100 km. Still very useful β eddies are 50β150 km wide, so you usually know which side of an eddy you'll be on.
- Days 8β14: Marginal. Use it as guidance only.
- Weeks 2+: Switch to persistence + climatology. Eddies translate predictably westward at ~5β15 km/day, and strong isolated rings (Loop Current rings, North Brazil Current rings) follow repeatable tracks. The AVISO Eddy Atlas tells you where eddies of each type live, season by season.
Confidence trick: pull two independent models (e.g., HYCOM and CMEMS). Where they agree, trust the plan; where they disagree by >0.3 kt, treat the feature as uncertain and keep margin.
2 Β· Routing Algorithms & Software
Your problem is the classical time-dependent Zermelo problem: minimize travel time when your velocity through water is fixed but the fluid moves. It's well studied, and the practical solution space looks like this:
- Time-expanded graph search (recommended). Discretize space into cells and time into 6-hour steps matching the forecast. State = (cell, time). Edge cost = distance Γ· ground speed, where ground speed = your 1 kt plus the current's component along the leg. Solve with A* or Dijkstra. Robust, easy, handles "no-go" cells (adverse current, shoals) naturally.
- Level-set / ordered-upwind methods. Continuous-space version (Lolla & Lermusiaux, MIT, 2014). Elegant, used in research; overkill for a first implementation.
- Receding-horizon replanning (how you'd actually operate). Because forecast skill dies at ~7 days but your trip lasts months, nobody solves the whole voyage at once. You re-plan daily: optimize the next 5β7 days, sail it, repeat. This "surfs" the evolving eddy field and is nearly as good as perfect foresight.
# Sketch: time-expanded A* over (cell, time-step)
V_BOAT = 0.514 # m/s (1 knot)
for each 6-h forecast step k, cell i:
c = current[i][k] # from HYCOM / CMEMS / RTOFS
for each neighbor j:
u = unit_vector(i -> j)
sog = dot(c, u) + V_BOAT # ground speed on this leg
if sog < 0.15: continue # refuse to lose ground
cost = dist(i, j) / sog
relax((j, k+1), cost,
heuristic = great_circle(j, goal) / V_BOAT)
# Post-filter the winning path:
# reject any leg where forecast OPPOSING current > 0.7 kt
# (keeps a 0.3 kt margin for model error + wind)
Existing / open-source tools
| Tool | What it does | License | Fit for your seastead |
|---|---|---|---|
| OpenCPN + weather_routing_pi | Full time-dependent weather routing; accepts GRIB current fields (e.g., RTOFS via Saildocs) | GPL, open source | β β β β β β Works today. Set your "polar" to a flat 1 kt and feed it current GRIBs. |
| VISIR (CMCC) | Graph-based open ship router (developed for the Mediterranean) | Open source | β β β ββ β Methodology reference; wave-focused but adaptable |
| py-eddy-tracker | Detects & tracks mesoscale eddies in SSH fields (Okubu-Weiss / winding-angle methods) | Open source (Python) | β β β β β β Feed it CMEMS/HYCOM sea height; get eddy centers, radii, swirl speeds |
| xarray + cartopy + networkx/scipy | DIY stack: read NetCDF/GRIB, build the A* above in ~200 lines | Open source | β β β β β β Full control; the snippet above is most of the work |
| Saildocs | Email-delivered RTOFS current GRIBs for a region you define | Free service | β β β β β β Low-bandwidth data aboard |
| MIT MSEAS planners | Research-grade level-set path planning in dynamic flows | Research | β β βββ β Read the papers; code not turnkey |
Honest answer: there is no polished turnkey open-source "eddy router" yet β but OpenCPN's routing plugin plus RTOFS current GRIBs gets you 90% of the value with zero coding, and the DIY A* closes the gap if you want eddy-aware logic built in.
3 Β· Does This Actually Work in Practice?
The governing arithmetic is simple. On any heading, your speed over ground is:
SOG = 1.0 kt (you) + (current Β· your-heading)
- Ride a 0.5 kt fair current β 1.5 kt (+50%).
- Fight a 0.5 kt adverse current β 0.5 kt (β50%).
- Avoid adverse water entirely and you never pay the penalty β that asymmetry is the whole game.
In the Caribbean, mesoscale eddies commonly carry 0.3β0.8 kt swirl, and the mean Caribbean Current adds another 0.5β1.0 kt westward. So a well-routed day is routinely 1.5β2.0 kt made-good, and ring limbs or YucatΓ‘n Channel can deliver 2β2.5 kt. Realistic voyage averages:
| Strategy | Typical voyage-average SOG | Comment |
|---|---|---|
| Point at destination, ignore currents | ~0.9β1.1 kt | Adverse eddies cancel favorable ones, minus lost ground |
| Daily replanned eddy routing (clockwise Caribbean) | ~1.3β1.5 kt | The realistic target |
| Excellent execution, patient waiting for rings | ~1.6β1.8 kt | You'll stop and loiter to let a ring get into position β worth it |
Two operational realities: (1) eddies themselves drift west at 0.2β0.4 kt, so "meeting" one means leading it like a ferry crossing; (2) sometimes the optimal move is to stop (hold position, minimal power) for a day or two until the field rotates in your favor β cheap at 1 kt economics, and the routing algorithm will discover this on its own.
4 Β· "Eddies Can't Push Me Ashore" β Mostly Right, With Caveats
- Tidal streams in passages hit 2β4 kt (YucatΓ‘n Channel, Mona, Anegada, reef passes) β absent from daily eddy charts and stronger than you.
- Wind-driven drift + windage can exceed 1 kt in squalls/trades.
- Submesoscale coastal jets (0.5β1 kt) are unresolved by 1/12Β° models β precisely near shore, where you need accuracy most.
Verdict: You don't need to fear eddies shoving you onto land, but you absolutely need margin against tides and wind near coasts. Keep a 0.3 kt propulsion reserve, transit passages near slack tide, and carry an anchor. Treat "currents can't push me ashore" as false; treat "mesoscale eddies can't" as true.
5 Β· The Caribbean Loop Estimate
Leg-by-leg estimate (1 kt through the water, 24 h/day, eddy-routed)
| # | Leg | Distance | Current situation | Expected SOG | Days |
|---|---|---|---|---|---|
| 1 | Barbados β CuraΓ§ao | 550 nm | Inflow jets W/NW 0.3β0.8 kt; ride rims of incoming rings | 1.5 kt | 15.3 |
| 2 | CuraΓ§ao β Cartagena | 380 nm | Caribbean Current W 0.5β1.0 kt | 1.7 kt | 9.3 |
| 3 | Cartagena β San Blas | 230 nm | W 0.5β1.0 kt | 1.7 kt | 5.6 |
| 4 | San Blas β San AndrΓ©s | 230 nm | NW 0.4β0.8 kt | 1.6 kt | 6.0 |
| 5 | San AndrΓ©s β RoatΓ‘n | 360 nm | W 0.5β1.0 kt | 1.7 kt | 8.8 |
| 6 | RoatΓ‘n β Cozumel | 250 nm | N/NW 0.5β1.0 kt | 1.7 kt | 6.1 |
| 7 | Cozumel β Grand Cayman | 330 nm | Mixed eddy field, 0β0.5 kt | 1.2 kt | 11.5 |
| 8 | Cayman β Jamaica | 270 nm | Adverse W flow 0.2β0.5 kt | 0.9 kt | 12.5 |
| 9 | Jamaica β S. Haiti | 180 nm | Adverse 0.2β0.4 kt | 0.9 kt | 8.3 |
| 10 | Haiti β Mona Passage | 450 nm | Variable; hop eddy limbs | 1.0 kt | 18.8 |
| 11 | Mona β St. Croix | 250 nm | Passage jets; transit near slack | 1.1 kt | 9.5 |
| 12 | St. Croix β Barbados | 410 nm | Adverse trade drift 0.2β0.4 kt | 0.9 kt | 19.0 |
| Total | β 3,890 nm (7,200 km) | ~65% of distance with favorable/neutral current | avg β 1.3 kt | β 131 | |
Bottom-line numbers
- Optimistic (surf everything, patient loitering): ~1.6 kt avg β ~100 days underway.
- Central estimate: ~1.3 kt avg β ~130 days (β 4.3 months) of continuous steaming.
- Conservative: ~1.05 kt avg β ~155 days.
- Add 15β25% for weather holds, zigzag around reefs, stops, and maintenance β plan on 6β9 months door-to-door.
Why not counterclockwise? You'd fight the 0.5β1.0 kt mean westward flow for ~2,000 nm. Legs that take 9 days clockwise become 20β40 days or simply impossible during adverse eddy phases. Total loop: plausibly 2β3Γ longer. The sea's conveyor belt only runs one way here β go with it.
6 Β· Eddy Atlas: Other Cruising Grounds
Rule of thumb: eddy energy is highest on the western sides of ocean basins (western boundary currents shed rings) and lowest in gyre interiors and the eastern tropics.
| Region | Character | Typical speeds | Rideable? | Notes |
|---|---|---|---|---|
| Caribbean Sea | Westward stream + rings + passage jets | 0.5β1.5 kt | β β β β β | Your home waters; excellent |
| Gulf of Mexico | Loop Current rings shed ~yearly, drift west for months | 1β2 kt swirl | β β β β β | Big, slow, well-tracked targets |
| US East Coast / Gulf Stream | Warm/cold-core rings | 1β2 kt | β β β β β | Best-observed eddies on Earth; busy & windy |
| Gyre interiors (Sargasso, S. Pacific middle) | Quiet | <0.3 kt | β ββββ | Nothing to surf β but nothing to fight; easy motoring |
| Mediterranean | Algerian anticyclones drifting E along N. Africa; persistent Ierapetra & Rhodes gyres | 0.3β0.6 kt | β β β ββ | Usable! Microtidal (predictable); real hazards are Mistral/Bora winds, traffic, borders |
| South Pacific (TahitiβFiji) | Weak interior gyre | 0.1β0.3 kt | β ββββ | No eddy help needed or available; pleasant 1 kt sailing |
| Coral / Tasman Seas (EAC) | East Australian Current eddies | 0.5β1.5 kt | β β β β β | Strong, well-modeled (Australia's BLUElink) |
| Equatorial band | NEC/NECC/SEC "rivers" + Tropical Instability Waves | 0.5β1.5 kt; TIWs 0.5β1 kt | β β β β β | TIWs alternate on ~30-day cycles β poor man's eddies, very phase-predictable; great for EβW crossings |
| Eastern South America | North Brazil Current rings off the Amazon; Brazil Current warm rings; BrazilβMalvinas Confluence | NBC rings up to 1.5β2 kt | β β β β β | Arguably the world's best rideable rings; they march NW toward β the Caribbean. Natural extension of your loop |
| Agulhas system (S. Africa) | Huge retroflection rings into S. Atlantic | 1β2 kt | β β β β β | World-class eddies, world-class weather. Expert-only |
| Somali / Arabian Sea | "Great Whirl" during SW monsoon | 1β2 kt | β β β ββ | Seasonally repeatable; regional security considerations |
| Kuroshio / Japan | Rings galore | 1β2 kt | β β β β β | Superb regional forecasting (JCOPE) |
Direct answers: South Pacific interior β mostly no usable eddies (fine, you don't need them there); Tasman/Coral Sea β yes. Mediterranean β yes, modestly (the Algerian eddies are the prize). Eastern South America β outstanding, top-three eddy venue on the planet, and its rings conveniently deliver you back toward the Caribbean.
7 Β· Daily Operating Playbook
- Morning: pull the latest 7-day HYCOM/CMEMS currents (Saildocs GRIB if bandwidth-limited).
- Detect: run eddy detection (py-eddy-tracker or an Okubo-Weiss threshold) β list of centers, radii, swirl speeds.
- Plan: run time-expanded A* for the next 5β7 days; hard constraint: no leg with forecast opposing current > 0.7 kt.
- Beyond day 7: fall back to persistence β extrapolate each eddy's westward drift (~5β15 km/day) β plus seasonal climatology from the AVISO Eddy Atlas.
- Re-plan daily. Treat anything past day 5 as advisory, not gospel.
- Cross-check two independent models; disagreement > 0.3 kt β add margin or wait.
- Passages (YucatΓ‘n, Mona, Anegada, reef passes): consult tidal-stream tables; transit near slack. These are the only currents that can genuinely overpower you.
- Reserve: always keep ~0.3 kt of thrust in hand for wind and waves. If made-good toward goal drops below 0.3 kt for 12+ hours, stop and hold position rather than burn energy sideways.
- Learn: log GPS drift vs. forecast every 6 hours; after a month you'll have a personal bias correction for your local waters β worth more than any model upgrade.
- Season: JuneβNovember, always be within 48 h of a defensible storm hole.
8 Β· Data & Software Links
- RTOFS (your fox chart's engine): polar.ncep.noaa.gov/rtofs Β· GRIB via nomads.ncep.noaa.gov
- HYCOM GOFS 3.1: hycom.org/data/gofs-31
- Copernicus Marine (10-day global forecasts): marine.copernicus.eu
- OSCAR satellite currents: podaac.jpl.nasa.gov/Oscar
- SWOT mission: swot.jpl.nasa.gov Β· AVISO/DUACS & Mesoscale Eddy Atlas: aviso.altimetry.fr
- py-eddy-tracker: github.com/py-eddy-tracker
- OpenCPN: opencpn.org Β· Weather Routing plugin: github.com/rgleason/weather_routing_pi
- VISIR open ship router: visir-model.net
- Saildocs (low-bandwidth GRIB by email): saildocs.com
- NOAA CoastWatch ERDDAP (easy subset downloads): coastwatch.noaa.gov/erddap
- CARICOOS (PR/USVI regional observations): caricoos.org
- Further reading: Lolla & Lermusiaux, "Time-optimal path planning in dynamic flows" (2014); Chelton et al., global eddy statistics from altimetry.