Closed chowland closed 1 year ago
hey @chowland congrats on submitting thesis!
A stratified flows module would be great.
FourierFlows.jl already includes a ThreeDGrid
but we don't have any module in GeophysicalFlows.jl using it.
Can you point to a pdf/notes with the equations written down so I think about it a bit?
Thanks @navidcy ! Here's a document going over the two options in a bit more detail: stratified_periodic_equations.pdf
The method I suggested for the pressure is what Diablo uses, and may come in useful if you want to make a 3DNavierStokes module. I've also outlined a couple of extensions that it would be good to have in mind while developing this.
@chowland nice! Congrats!
I think a 2D vorticity-streamfunction formulation might be a good place to start because of its simplicity.
However, one consideration is that a 3D implementation could be easily reduced to 2D by setting, for example, ny=1
. The downside is the added complexity. The upside is that we immediately obtain efficient 3D and 2D solvers.
As for the pressure solve, we do not need to use pressure projection or fractional time stepping methods with a 3D spectral method. Instead, we can obtain the pressure directly from the transformed equations in Fourier space, and substitute the result into the RHS. This approach is described in Winters et al 2004 (see equations 33-35).
Looking at those equations, I do think it probably makes sense to start with the vorticity-streamfunction formulation. It's much simpler.
I'd suggest using b
rather than θ
for buoyancy. θ
is often used for "temperature".
Finally, we should probably also have rotation! This requires an additional equation for v
in the vorticity-streamfunction formulation. The equations are given in Xie and Buhler (2019). We can probably implement a rotating version as an "option" in the new module (we don't need to put rotation in at the outset).
We've discussed this before, but now I've submitted my thesis (yay!), I actually have time to start working on a module for a vertical plane with an imposed mean stratification. There are a couple of options for the implementation of this:
Any thoughts?
Once this is working it should be relatively simple to include multiple scalars and make some cool examples of salt fingering and diffusive convection.
I'll be using the existing modules as a starting point and will let you know how I get on. Any tips for developing these modules are much appreciated!