-
Notifications
You must be signed in to change notification settings - Fork 195
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
contributing to Oceananigans #1153
Comments
It's a slippery slope after FourierFlows.jl... |
Thanks for the warning @navidcy . Both look great but I appreciate that they also have different goals. Also, sorry for the very general question and maybe I should have been more specific. I am very curious to learn about what is currently being worked on (and I can look at the issues for that I suppose) but one question that comes to mind is, can you solve the hydrostatic problem as well? I gather the incompressible sovler is for the more complicated non-hydrostatic case. |
@francispoulin ! No worries about the question. I like questions. To answer your latest question --- our nonhydrostatic pressure solver is based on FFTs for regular grids and is therefore quite fast. In simple benchmarks long ago we found that other parts of the algorithm dominated the cost of a time-step. Because of that we aren't sure that having a hydrostatic-only solver would help. Of course, the story is different if we need to stretch the grid in horizontal directions. That said, it would still be interesting to be able to solve hydrostatic-only problems. This would complicate the algorithm a bit because you have to distinguish the barotropic mode, and perform a 2D pressure solve. We already have a function to integrate the buoyancy field to obtain the hydrostatic pressure. For "things I want worked on" my wish list falls into three categories: new physics features, new numerics / algorithms, and more boring software / UI work. Here's a couple...
There's also some minor package stuff that I want to work on, such as refactoring the output writer (#963), improving logging / feedback while oceananigans builds a model or runs a simulation (#1013), getting arrays with named axes to work (#457), and figuring out what's going wrong with models that have A more fun project is to come up with cool plotting recipes in 1D, 2D, and 3D (!) We'd like to show people how to use Makie (for example) to create really cool visualizations / animations of turbulence. The examples do some animation, but more complicated stuff (such as 3D contourf plots, or volume rendering) might require dedicated scripts. @navidcy and I have also discussed projects to implement 1) a shallow water model using Oceananigans functionality and 2) a quasi-geostrophic model in Oceananigans (which would use the tridiagonal solver I mentioned earlier). What else? The best project is probably one that aligns with you and your students' research... ? Definitely happy to chat further and also collaborate on something if you'd like. |
Definitely agree with everything @glwagner said!
I can share a bit about what I've been working on (and hope to work on). Right now I'm almost done adding some support for Lagrangian particle tracking (PRs #1090 and #1091). After that I'm hoping to upgrade the pressure solver to use 1D FFTs and DCTs for the CPU and GPU (#586, #1007). This would allow us to support all possible topologies on the GPU but might require some playing around with the CuFFT library (see JuliaGPU/CUDA.jl#119). So if you know someone who's interested in FFTs and GPUs (or interested in learning about them!), this might be useful problem to work on! I think some other members of the Julia community would benefit from figuring this out as well. Also hoping to revisit trying to support distributed parallelism with MPI (#590). So if there's someone interested in the nuts and bolts of distributed parallelism, might be great to work on this together! We also have an early/experimental compressible version of Oceananigans.jl (see #1079 and https://github.com/ali-ramadhan/Atmosfoolery.jl) if you guys are interested in compressible fluid dynamics.
We should definitely clean those up! We have a "good first issue" tag that should be useful in these situations but we should use the tag more often. |
Thanks @glwagner and @ali-ramadhan for your suggestions. They all sound very interesting and gives me a lot to think about. Here are my initial reactions. Given that I don't know the numerics of Oceananigans, yet, but know the physics, I can imagine myself contributing to the following pretty quickly:
Something that I can imagine giving to good undergraduate research students would be
If I had keen student in computer science then maybe
I have never used GPU's before but given the efficiency of GPU's vs CPU's that you have in the docs, I am definitely going to learn. Initial thougths on 1 and 2: I kind of like the idea of having a QG code that can either be FV or Spectral, depending on the users whims, but that might be difficult, depending on how compatable these two libraries are. I suppose I should start in reading the code in detail and planning out what I think needs to be done. Any suggestions are welcome! |
I think any of those projects would be super welcome. A 1-layer shallow water model would be nice and simple, and @ali-ramadhan could use it for his MPI parallelization work since it has no pressure solver. A hydrostatic Boussinesq model would be super useful too of course. I think we should talk. We are working on a similar model using discontinuous Galerkin numerics over at ClimateMachine.jl and these projects would have overlapping goals. Nevertheless I would personally find it extremely useful to be able to run I agree with the framework / level-of-difficulty that you've laid out for student projects! As for deciding FourierFlows vs Oceananigans, that's up to you for sure and depends basically on whether you are okay staying with doubly-periodic systems (what FourierFlows currently supports) or whether you want to do problems with boundaries (what Oceananigans promises). FourierFlows is a nice tool for idealized problems and theoretical work (and you can run pretty large problems these days since it has GPU support); Oceananigans is evolving more towards a tool for ocean modeling that is capable of doing idealized problems, but flexible enough to use for large eddy simulation and realistic non-hydrostatic modeling, in bounded domains and hopefully irregular domains as well, eventually, using immersed boundaries. Switching between the two would be a dream... ! I'm afraid this is too futuristic for Oceananigans. It may be possible to build FV functionality into FourierFlows (which is generally more flexible than Oceananigans, but has fewer features for the specific problem of the nonhydrostatic Boussinesq equations), but that's not a small piece of work. |
Okay, then let's start with a one-layer, reduced-gravity SW model with a free-surface. Afterwards, we can get fancy and do a rigid lid version if we like and then talk about other interesting problems. I would be happy to do it in both but let's focus on Oceananigans as that allows a greater versatility in terms of the boundary conditions. I am also interested in solving eigenvalue problems to compute stability characteristics in Julia and have done a bit of this already. 1D problems are of course easy to solve but 2D ones are much trickier. It would be great to talk to a Julia expert about what best practices they might suggest. I am happy to setup a zoom conversation sometime. I don't know what time-zone everyone is in but if there is a typical time that might meet please suggest it and I will see if I can make that time. I'm also happy to close this issue whenever you like as an idea as come up. |
ShallowWaterModels were kickstarted. I'll close this for now and anybody should feel free to open to continue chatting :) |
After discovering FourierFlows I guess it was only time before I came across Oceananigans. Great name by the way!
I would be interested in contributing to this and might even be able to get students to work on this as well. I am brand new to this repo and CliMA but am keen to learn more and work on something.
I have some ideas but also wonder what are the top 10 things that you want to have done now. If chatting would be easier, I'm happy to organize that sometime.
The text was updated successfully, but these errors were encountered: