Skip to content
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

Implementing k-epsilon #2278

Open
iuryt opened this issue Feb 25, 2022 · 3 comments
Open

Implementing k-epsilon #2278

iuryt opened this issue Feb 25, 2022 · 3 comments
Labels
feature 🌟 Something new and shiny science 🌊 Sometimes addictive, sometimes allergenic

Comments

@iuryt
Copy link
Collaborator

iuryt commented Feb 25, 2022

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?

@glwagner
Copy link
Member

glwagner commented Feb 25, 2022

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
Copy link
Member

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...

@simone-silvestri
Copy link
Collaborator

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

@glwagner glwagner added feature 🌟 Something new and shiny science 🌊 Sometimes addictive, sometimes allergenic labels Mar 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 🌟 Something new and shiny science 🌊 Sometimes addictive, sometimes allergenic
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants