Releases: CliMA/Oceananigans.jl
Releases · CliMA/Oceananigans.jl
🦅 Oceananigans v0.5.2
🐪 Oceananigans v0.5.1
Updating packages for CI and updating package version/UUID for attobot.
🐫 Oceananigans v0.5.0
Tons of improvements! We need more frequent releases.
What's new
- Parameterized abstractions that work on CPU and GPU architectures.
- Flashy boundary conditions API. @glwagner
- Fourth-order tracer advection scheme. @mukund-gupta
- Much faster GPU compile times thanks to fixes in CUDAnative.jl and GPUifyLoops.jl
- Arbitrary forcing functions.
- Diagnostics framework.
- Output writer framework: checkpointer, binary output, and NetCDF output.
- Model checkpointing with JLD.
- Asynchronous NetCDF output.
- Many new tests including new unit tests, new integration tests, and two golden master tests.
- Many tests now run on the CPU and GPU.
- Performance benchmarking with CPU/GPU and Float32/64 comparisons.
- Renamed "spectral solver" to "Poisson solver".
- Revised and updated examples.
- LOTS of cleanup and refactoring to make things look neater.
- Documentation that is automatically built and deployed!
🏍️ Oceananigans v0.4.0: Fast CPU and GPU support with shared kernels using GPUifyLoops.jl
🏍️ Oceananigans v0.4.0: Fast CPU and GPU support with shared kernels using GPUifyLoops.jl
Pre-release
Pre-release
Features
- Operators were rewritten to act on individual volume elements (i.e. element-wise) which allowed the time stepping loop to be rewritten to loop over all volume elements and generically run on CPU and GPU architectures using GPUifyLoops.jl.
Sad "features"
- Lots of other things happened as well but we need to write a lot more tests (especially for the GPU), update the documentation, clean up the code, nuke crusty old code, etc. but that's for v0.5!
🥧 Oceananigans v0.3: More model features and super hacky GPU support.
Features
- Main struct is now the
Model
instead of theProblem
. It should be neater too. - Support for no-slip boundary conditions at the top and bottom.
- Boundary condition information stored in a
BoundaryConditions
struct. - Abstract output writer (checkpoints and writing fields to disk) and diagnostics framework.
ModelMetadata
struct to store architecture (e.g.:cpu
or:gpu
) and floating point number precision.ModelConfiguration
struct to store physical parameters such as viscosity and diffusivity.Clock
struct keeps track of time, time step number, and Δt.- Refactored δ! and avg! operators to use
@views @.
so they work on CPUs and GPUs. - GPU-compatible DFT! and IDFT! operators based on FFT! and IFFT! operations.
- Super hacky and very slow GPU support (but it works out of the box!). This will be overhauled ASAP.
- Support for 1D vertical models.
- More examples: stratified deep convection, Rayleigh–Bénard convection, 1D vertical.
Main bug fixes
- Added in Coriolis term for u and v-momentum equations (important for 3D simulations). ali-ramadhan@1b07df1
- Fixed typo in u∇w! operator causing blowup in some 2D simulations (Ay and Az were mixed up). ali-ramadhan@d7326c8
🐇 Oceananigans v0.2: Abstractions and much faster time stepping
- High-level abstractions for the grid, fields, field sets, constant collections, equation of state, and spectral solver parameters.
- Model code has been refactored so that all operators now modify the fields in place and no memory allocation occurs during time stepping.
- FFTs and DCTs are planned at the start so the quasi-spectral solver can do its work faster.
- Code works in 2D (vertical slices with Nx=1 or Ny=1, and horizontal slices with Nz=1).
- Many more unit tests.
- Examples: isotropic diffusion, horizontal advection, deep convection and Rayleigh-Taylor instability.
🌊 Oceananigans v0.1: Working model
- Ocean model works!
- Nonhydrostatic algorithm including quasi-spectral solver work and do not blow the model up!
- Numerous examples run as expected in 2D and 3D.
- More tests need to be run, and the code needs to be cleaned up.