CliMA / Oceananigans.jl

🌊 Julia software for fast, friendly, flexible, ocean-flavored fluid dynamics on CPUs and GPUs
https://clima.github.io/OceananigansDocumentation/stable
MIT License
991 stars 195 forks source link

Compare `ImmersedBoundary` with tilted geometry #3526

Closed francispoulin closed 7 months ago

francispoulin commented 7 months ago

To better understand Wenegrat and Thomas, JPO 2020 (WT2020) I modifed the following examples:

  1. Internal tide by a seamount and

  2. Tilted bottom boundary layer example ,

to study the dynamics of constant flow over a linearly slowing bottom. Note that I tried to pick the parameters as close to one of the cases in WT2020, however I did make some modifications.

  1. I changed the direction of the constant horizontal flow (along bathymetry) to avoid inertial instability. This produces simpler dynamics.
  2. The code uses free-slip boundary conditons by default, but I believe I have no slip working as well.
  3. Currently diffusion and viscosity is larger by a factor of 100 as it's easier to resolve the boundary layer that develops.

The examples were very easy to modify, which shows that people have done a great job in making them friendly, as promised. Thanks everyone for that! You can find my examples on branch fjp/Test_ImmersedBoundaryMethod.

The first code, what I call take1, uses the immersed boundary method.

Thet second code, what I call take2 used the tilted geometry approach.

Below I will share some results that people might find interest, maybe @tomchor in particular?

The first plot shows at heatmap of the velocity profile and a contour plot of the isopycnals for the case of an immersed boundary (take1). We see the isopycnals incrop (reach the bathymetry) at a 90 degree angle, which is consistent with what is said in the paper. It seems odd that slip boundary conditions yields a flow that gets faster over the topography, but that is not a problem.

v_b_final_slip_take1

The second plot shows at heatmap of the velocity profile and a contour plot of the isopycnals for the case of a tilted geometry (take2). This case generates a boundary layer at the top as well, but it's less well resolved because I am using a stretched grid at the bottom. Not a problem, just an observation. This also shows the speed up over the topography, so it must be physical.

There is good qualitative agreement between these two and I'm happy with the results.

v_b_final_slip_take2

Next you will find animations for the two cases where we show v, w b, in that order. First, for the immersed boundary. What's note worthy is that there are relatively strong vertical velocities that occur over the immersed boundary.

https://github.com/CliMA/Oceananigans.jl/assets/8239041/c3d79989-8e31-496a-8a8b-ec2ab26ca7f7

This is the same simulation but for the case of a tilted geometry, and we don't see the same spikes, equally spaced based on the immersed boundary.

https://github.com/CliMA/Oceananigans.jl/assets/8239041/1b6a74a3-4792-42f6-b91f-e570d204af29

Is the vertical velocity generated over the piecewise constant topogrpahy something that is of a concern? When I increased the resolution I believe I saw the vertical velocity generated increased as well.

Any other thoughts about this comparison?

If people want to see the results with no slip boundary conditions, just let me know and I'm happy to share those too.

glwagner commented 7 months ago

Is the vertical velocity generated over the piecewise constant topogrpahy something that is of a concern?

I think so! Is this with GridFittedBottom or PartialCellBottom? I feel like this motivates cut / shaved cells.

Should we convert this to a discussion?

tomchor commented 7 months ago

Is the vertical velocity generated over the piecewise constant topogrpahy something that is of a concern? When I increased the resolution I believe I saw the vertical velocity generated increased as well.

I agree with @glwagner that it's concerning at least for your current configuration. My guess is that with bottom drag and a more turbulent simulation that might not be a huge problem. But as it stands it's definitely affecting the dynamics.

(Btw, I say that because I've run a fair amount of turbulent simulations with immersed boundaries at this point and I've never seen this being an issue in my simulations. But they are always turbulent.)

I think so! Is this with GridFittedBottom or PartialCellBottom? I feel like this motivated cut / shaved cells.

@glwagner reading the code here it seems that it's a GridFittedBottom.

@francispoulin Like Greg mentioned, shaved cells would be ideal here, but since we don't have that yet, I'd suggest trying out the PartialCellBottom. I expect some improvement there.

glwagner commented 7 months ago

We've seen issues noise in the vertical velocity along immersed boundaries in other configurations too. I've seen at least one result in which the noise is substantially mitigated by using the PCG solver, which avoids the approximations of the "naive" FFT solver. Unfortunately, we don't yet have a performant PCG-based solver cc @simone-silvestri @xkykai .

I think it's interesting and also convenient that the noise is mitigated in turbulent cases or by the inclusion of bottom drag.

navidcy commented 7 months ago

This is an interesting discussion!

(Thus, I think we should convert this into a "Discussion".)