angus-g / lagrangian-filtering

Temporal filtering of data in a Lagrangian frame of reference.
MIT License
25 stars 10 forks source link

Sampled velocities are incorrect on a spherical grid #65

Open angus-g opened 4 years ago

angus-g commented 4 years ago

With a spherical grid (mesh="spherical"), Parcels expects lat/lon grid coordinates. Since velocities are usually given in m/s, they are converted to degree/s for consistency with the grid for advection. However, when we sample velocities for filtering, we expect them to be interpolated in their native units. Instead, we'll receive U and V in degree/s, and be some factor of 10e-6 out (this would also happen for Kh_zonal and Kh_meridional, if they were ever to be filtered: https://github.com/OceanParcels/parcels/blob/adc57b3edf65efd54793e5b97ee7d060102cd39d/parcels/tools/converters.py#L207-L209)

If we're using a spherical mesh, we should do one of:

  1. not convert units at sample time (most correct)
  2. convert back to "source" units after sampling (maybe easiest?)
  3. sample as usual, but convert back after advection, before filtering (least dependent on parcels)
angus-g commented 4 years ago

With the merging of https://github.com/OceanParcels/parcels/pull/898, it looks like the second approach is the way to go. We should know soon how much of a difference it makes to perform filtering on spherical velocities compared to linear velocities (the former with a conversion after filtering, the latter with the conversion before filtering).