-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactoring Coriolis implementation and semantics #1904
Comments
I think what we need to do is to distinguish between "hydrostatic" (as a proxy for "thin aspect ratio") and "nonhydrostatic" (non-thin-aspect ratio) approximations. Then our API would provide types for Coriolis forced induced by rotation at a constant rate:
By storing Then there are two more types associated with the so-called "beta" plane. These could keep their original name, or we can change " @navidcy has argued that it's worthwhile to keep |
I think this is ok. We can dispatch on both the grid (and its associated coordinate system) and |
I think this is done |
I'm opening this issue based off of the long discussion about semantics and implementation of the Coriolis acceleration in #1892.
@glwagner correct me if I'm wrong in the description of the issues since I'm not sure I 100% understand them.
Currently we have (with some oversimplifcation):
FPlane
ConstantCartesianCoriolis
BetaPlane
NonTraditionalBetaPlane
HydrostaticSphericalCoriolis
Which is kind of a lot. Two issues that are not separate from each other are
A way to improve on both issues might be to have only one or two abstractions for background rotation only. So instead of storing, for example, each cartesian component of
f
forConstantCartesianCoriolis
or just the rotation rate and a scheme forHydrostaticSphericalCoriolis
, we would only need to store arotation_axis
and arotation_rate
(or equivalent; plus possibly the scheme?).The difficulties I could perceive are that different grids require different calculations so we'd need to dispatch on grid type (such as here
Oceananigans.jl/src/Coriolis/hydrostatic_spherical_coriolis.jl
Lines 30 to 31 in 32c5c5a
and also that the calculation apparently needs to take into account whether or not the flow is hydrostatic, so we may need to dispatch on model too? (Plus some possible complications about the pressure solver.)
CC @glwagner @francispoulin
The text was updated successfully, but these errors were encountered: