I think OceanParameterizations.jl probably has the potential to supercede OceanTurb.jl, since in a sense its requirements are a subset of what OceanTurb provides. I think it'd be amazing if the package offered practical, useful tools for column modeling, parameterization development and differentiation-based optimization and UQ.
To become a useful modeling package, I think OceanParameterizations needs something similar to OceanTurb / Oceananigans's Field abstraction. We also want composable operators for differentiating / interpolating fields on a staggered grid, and a template for implementing PDEs that hooks into DifferentialEquations for time integration. Some aspect of these abstractions must already exist given the results I've seen, but I'm not sure how mature the functionality is.
We could even just import Oceananigans functions if we are ok hard-coding three-dimensionality. Since the ocean is 3D, I think this is ok, if slightly inconvenient for column modeling. One may want to optimize 3D parameterizations eventually (eg mesoscale closures, etc...)
Along the way we want to ensure that models remain differentiable and machine-learnable.
If we can build a simple Field abstraction and PDE template, then we can probably port both KPP and OceanTurb's TKE-based closure into OceanParameterizations without too much pain.
I'm interested in people's thoughts --- would this be welcome, unwelcome? What is already present in the package that could be leveraged? What might have to be re-written?
@navidcy might be interested in this too, and @kburns if he wants to train NN's for two-dimensional turbulent flows during time-integration (and can stomach using FV).
Some notes
Fields and staggered grid operators are implemented in OceanTurb, but because the implementation pre-dates Oceananigans, it is a bit quirky and slightly less usable than Oceananigans Fields and operators. OceanTurb also suffers because it doesn't use DifferentialEquations. It's PDE template is probably approximately what we want, however (a diffusion term, an advection term, and a source term, with tools for treating diffusion + advection implicitly during time-integration).
I think OceanParameterizations.jl probably has the potential to supercede OceanTurb.jl, since in a sense its requirements are a subset of what OceanTurb provides. I think it'd be amazing if the package offered practical, useful tools for column modeling, parameterization development and differentiation-based optimization and UQ.
To become a useful modeling package, I think OceanParameterizations needs something similar to OceanTurb / Oceananigans's Field abstraction. We also want composable operators for differentiating / interpolating fields on a staggered grid, and a template for implementing PDEs that hooks into DifferentialEquations for time integration. Some aspect of these abstractions must already exist given the results I've seen, but I'm not sure how mature the functionality is.
We could even just import Oceananigans functions if we are ok hard-coding three-dimensionality. Since the ocean is 3D, I think this is ok, if slightly inconvenient for column modeling. One may want to optimize 3D parameterizations eventually (eg mesoscale closures, etc...)
Along the way we want to ensure that models remain differentiable and machine-learnable.
If we can build a simple Field abstraction and PDE template, then we can probably port both KPP and OceanTurb's TKE-based closure into OceanParameterizations without too much pain.
I'm interested in people's thoughts --- would this be welcome, unwelcome? What is already present in the package that could be leveraged? What might have to be re-written?
@navidcy might be interested in this too, and @kburns if he wants to train NN's for two-dimensional turbulent flows during time-integration (and can stomach using FV).
Some notes
Fields and staggered grid operators are implemented in OceanTurb, but because the implementation pre-dates Oceananigans, it is a bit quirky and slightly less usable than Oceananigans
Fieldsand operators. OceanTurb also suffers because it doesn't use DifferentialEquations. It's PDE template is probably approximately what we want, however (a diffusion term, an advection term, and a source term, with tools for treating diffusion + advection implicitly during time-integration).