Oceananigans.jl icon indicating copy to clipboard operation
Oceananigans.jl copied to clipboard

Implementing k-epsilon

Open iuryt opened this issue 3 years ago • 3 comments
trafficstars

Hi, I just would like to give my humble contribution opening this issue. I might not be able to do that because I am just a newbie in Julia, but it would be very nice to have k-epsilon as an option for turbulence closure.

Questions: Where to start? Any idea on how to implement that?

iuryt avatar Feb 25 '22 19:02 iuryt

This would be a major new feature for Oceananigans!

The implementation would probably resemble what we've done for "CATKE", which has a prognostic TKE variable:

https://github.com/CliMA/Oceananigans.jl/tree/main/src/TurbulenceClosures/turbulence_closure_implementations/CATKEVerticalDiffusivities

I would vote to implement Burchard and Umlauf's "generic length scale" equation. In this formulation there's a TKE variable (like CATKE), and also a "length scale" variable, which can either be epsilon, omega, or Mellor-Yamada's "q^2 l". So we get all of those models with one implementation:

https://www.ingentaconnect.com/content/jmr/jmr/2003/00000061/00000002/art00004

The implementation might also want to take into account / support a few other formulations like

I think @simone-silvestri could be interested in this kind of thing. It's a major undertaking! I think we should refactor TurbulenceClosures to make implementing new models (like this one) easier, either before or at the same time.

glwagner avatar Feb 25 '22 19:02 glwagner

By the way, the CATKEVerticalDiffusivity() might achieve what you want (but cheaper and more accurately, maybe?), since it bears a lot of structural resemblance to traditional k-epsilon closures. It's really in development now (I'm working on calibrating the parameters as we speak), but it might be ready for usage pretty soon...

glwagner avatar Feb 25 '22 19:02 glwagner

Hi @iurt! Very nice that you are thinking to implement a new parametrization!

To start I would try to implement the additional prognostic equations, decoupled from the main solution. You can use the existing infrastructure for tracer evolution and modify the k or epsilon (or omega or whatever quantity you choose to evolve) "specific" dissipation terms in the TurbulenceClosures module.

Once that is done and validated we can couple them to the momentum equations through the definition of a new "eddy viscosity" which uses values from the newly defined tracers

simone-silvestri avatar Feb 25 '22 21:02 simone-silvestri