Skip to content

Releases: CliMA/Oceananigans.jl

🐫 Oceananigans v0.5.0

03 Apr 14:17
Compare
Choose a tag to compare

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

27 Feb 23:29
Compare
Choose a tag to compare

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.

11 Feb 14:06
Compare
Choose a tag to compare

Features

  • Main struct is now the Model instead of the Problem. 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

29 Jan 22:48
Compare
Choose a tag to compare
  • 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

19 Dec 19:50
30f5028
Compare
Choose a tag to compare
Pre-release
  • 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.