seafloor_action='previous' allows z to drift below seafloor #1623
-
|
Hello, I am running particles backwards in time in ROMS using the OceanDrift model and have a question about how the seafloor_action='previous' setting works. When my particles hit the seafloor, it appears that latitude and longitude stay fixed at the last position before contact with the seafloor, which makes sense. However, z continues to change, and w, u, and v are still being recorded (even below the seafloor). As a result, if I plot a time series for a particle that hits the seafloor, z continues responding to changes in w, even though lat and lon are static. Because z does not remain fixed at its last valid value before contact, I believe this causes an issue: if w remains negative for several steps, z can become unrealistically deep (e.g., 10,000 m along the coast). Eventually, when w becomes positive, the particle appears to “unstick” — but only once enough upward movement has accumulated such that z returns above the seafloor depth (total w since hitting the seafloor must be positive). I had assumed that with seafloor_action='previous', the entire position vector (lon, lat, and z) would be held constant until the particle is allowed to move again. That is, I had expected the particle would begin moving again as soon as w becomes positive — but that doesn’t appear to be the case if z continues to drift downward. Additionally, I’m puzzled by the fact that positive w values are still interpolated and assigned while the particle is well below the seafloor. I suspect this might be related to how the velocity interpolation clips z values to the ROMS grid (e.g., a very deep z gets snapped to the deepest layer), but I’m not entirely sure. Is my understanding of how seafloor_action='previous' works correct? And if so, is there a recommended way to keep z fixed as well until the particle re-enters the water column? Thank you for your time and insights, |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
|
I believe your interpretation is very right: the vertical coordinate has hitherto been neglected when moving particles back. And yes: ocean model 3D fields are extrapolated downwards, and also beyond actual seafloor depth. This in itself I believe makes sense, to avoid having no values and a possible gap between the lowest model layer and the actual seafloor depth where particles could be trapped. But the issue with also resetting z to previous value should be fixed. |
Beta Was this translation helpful? Give feedback.
I believe your interpretation is very right: the vertical coordinate has hitherto been neglected when moving particles back.
See the actual code here:
https://github.com/OpenDrift/opendrift/blob/master/opendrift/models/basemodel/__init__.py#L740
And yes: ocean model 3D fields are extrapolated downwards, and also beyond actual seafloor depth. This in itself I believe makes sense, to avoid having no values and a possible gap between the lowest model layer and the actual seafloor depth where particles could be trapped.
But the issue with also resetting z to previous value should be fixed.
There are some changes in the pipeline regarding the "previous" mechanism, but it might take some weeks …