-
Notifications
You must be signed in to change notification settings - Fork 254
Reformulate hydrostatic model timestepping #4811
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
base: main
Are you sure you want to change the base?
Conversation
src/Models/HydrostaticFreeSurfaceModels/HydrostaticFreeSurfaceModels.jl
Outdated
Show resolved
Hide resolved
src/Models/HydrostaticFreeSurfaceModels/HydrostaticFreeSurfaceModels.jl
Outdated
Show resolved
Hide resolved
| velocities :: U # Container for velocity fields `u`, `v`, and `w` | ||
| transport_velocities :: W # Container for velocity fields used to transport tracers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the difference between "normal velocities" and "transport velocities" is unclear
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, how should we call them? They are the velocities that transport tracers around. transport is not good because it implies a multiplication times the area...
…/Oceananigans.jl into ss/reformulate-hydrostatic-model-2
Update device function to use device_id! for AMD devices.
… into ss/reformulate-hydrostatic-model-2
…ulate-hydrostatic-model-2
…/Oceananigans.jl into ss/reformulate-hydrostatic-model-2
This is a work-in-progress PR that aims to reformulate the timestepping scheme of the
HydrostaticFreeSurfaceModeltomake sure that three numerical properties are satisfied:
This is easier to achieve with an explicit discretization of the free surface (
ExplicitFreeSurfaceandSplitExplicitFreeSurface) rather than an implicit free surface discretization and with RK3 rather than AB2.However, this PR reformulates much of the timestepping algorithm, so it will be a lengthy WIP that will need to be thoroughly validated for all combinations of barotropic and baroclinic timestepping schemes.
More changes are performed to correctly abstract the timestepping schemes, which, at the moment, are tailored specifically to the
NonhydrostaticModel(for example, the timesteppers include acompute_pressure_correction!or acorrect_velocitiesfunction, which are meaningful only for a non-hydrostatic Navier Stokes solver)Edit: another objective I have is to remove any timestepping from the
update_state!function. We should be able to callupdate_state!multiple times in a row without problems and timestepping insideupdate_state!negates this possibility.TODO:
Remove timestepping fromIn another PRupdate_state!DistributedGridsImplement a semi - conservative method for AB2In another PRAddress precision errors that tend to destroy conservation for constant fieldsIn another PR