flow_deformation() returns the Okubo-Weiss parameter as a number per cell.
This takes the next step: it groups the connected cells where rotation beats
strain into individual eddies, and describes each one. A cell then carries
not "how eddy-like is the flow here" but "you are inside an eddy, it turns
this way, and it is this big".
Arguments
- env_dat
an
sfPOINT object with one row per location and time step, as datamatch's access functions return- u
name of the eastward velocity column, in m/s
- v
name of the northward velocity column, in m/s
- threshold
multiple of the standard deviation of Okubo-Weiss below which a cell counts as rotational. Positive; 0.2 follows the literature
- min_cells
smallest connected region kept, in cells
- measures
any of
"in_eddy","polarity"and"radius"- per
distance unit for the radius,
"km"or"m"- suffix
appended to each measure to name its column
Value
env_dat with one column per requested measure. in_eddy is 1, 0
or NA; polarity and radius are NA outside an eddy
Details
That distinction matters ecologically, because the two polarities do opposite things. A cyclonic eddy upwells at its core, lifting nutrients and often concentrating plankton; an anticyclonic one downwells, and its core is typically poorer. A covariate that only says "eddy" averages the two together and can easily find nothing.
How eddies are identified
The Okubo-Weiss criterion of Isern-Fontanet et al. (2003): a cell belongs to
an eddy where \(W < -\alpha\sigma_W\), with \(\sigma_W\) the standard
deviation of \(W\) over that time step and \(\alpha\) the threshold
argument. The published value is 0.2, which is the default. It is a
relative threshold, recomputed per step, so a quiet month still yields
eddies — the criterion asks which parts of this flow are most rotational, not
whether the flow is energetic in absolute terms.
Connected regions are then labelled, and those smaller than min_cells are
discarded as noise. On a 1/12-degree product an eddy of oceanographic
interest spans many cells; a two-cell patch is more likely to be a numerical
artefact of the differencing than a feature.
What each measure is
in_eddy is 1 inside an identified eddy and 0 outside.
polarity is +1 for cyclonic rotation and -1 for anticyclonic, from the sign of the eddy's mean vorticity. In the northern hemisphere cyclonic is counter-clockwise and upwelling at the core.
radius is the equivalent radius of the eddy, \(\sqrt{A/\pi}\) for its area \(A\), in
perunits. Real eddies are not discs, so this is a size, not a shape. See below for what it does and does not measure.
Cells outside any eddy get 0 for in_eddy and NA for the others, because
they have no eddy to describe. Cells where there was nothing to judge get
NA for all three: the outermost ring, where the central difference has no
neighbours, and anywhere the velocity itself is missing, which over a masked
product is land. Those are not the same as being outside an eddy, and
in_eddy does not report them as 0 – a fabricated zero over land is
indistinguishable from a measured one, and would be used as though it were.
Radius measures the patch, not the eddy
The threshold is a multiple of \(\sigma_W\) for the whole time step, so it is one absolute level applied to every eddy in the field at once. A strong eddy has \(|W|\) far below that level over nearly its whole core and loses almost nothing to it; a weak one only dips below it near its centre, and the patch that survives is a fraction of the feature. Two eddies of the same physical size can therefore report very different radii if one is spinning faster than the other.
On a field of Gaussian vortices with cores of 25 to 60 km, raising
threshold from 0.05 to 1.5 moves the reported radius of the strongest eddy
by 3 percent and that of the weakest by more than half. radius is
comparable between eddies of similar strength, and between time steps only
where \(\sigma_W\) is stable. Where the question is size as such, treat it
as an index rather than a measurement, and hold threshold fixed across
everything being compared.
What this is not
Detection per time step, with no identity between steps. Nothing here tracks
an eddy through its life, so there is no age, no lifespan and no propagation
speed, and the same physical eddy carries unrelated labels in consecutive
steps. eddy_id is therefore deliberately not returned: it would invite
exactly that mistake.
The Okubo-Weiss criterion is also known to be permissive in strongly strained flow and sensitive to the smoothness of the velocity field. It finds rotation-dominated regions, which is a good working definition of an eddy and not the same thing as a closed-contour eddy from altimetry.
References
Isern-Fontanet J, Garcia-Ladona E, Font J (2003). Identification of marine eddies from altimetric maps. Journal of Atmospheric and Oceanic Technology 20(5), 772-778. doi:10.1175/1520-0426(2003)20<772:IOMEFA>2.0.CO;2