Skip to content

Releases: CliMA/Oceananigans.jl

v0.105.4

08 Mar 18:45
7d463d6

Choose a tag to compare

Oceananigans v0.105.4

Diff since v0.105.3

Merged pull requests:

  • (0.105.4) Add basic tests for Reactant-Oceananigans correctness (#5093) (@glwagner)
  • Rename JULIA_DEPOT_PATH to the .julia for buildkite (#5368) (@tomchor)
  • Use view instead of indexing in cpu_face_constructor_r (#5376) (@glwagner)
  • Fix HydroStaticFreeSurfaceModel init for open boundary conditions with SplitExplicitFreeSurface (#5378) (@rafmudaf)

Closed issues:

  • Bug with Reactant + Periodic BCs + ParallelTestRunner (#5208)

v0.105.3

04 Mar 23:52
9d1b456

Choose a tag to compare

Oceananigans v0.105.3

Diff since v0.105.2

Merged pull requests:

Closed issues:

  • Reformulating continuous forcing in discrete form giving unexpected results (#5369)

v0.105.2

02 Mar 12:02
fcad9aa

Choose a tag to compare

Oceananigans v0.105.2

Diff since v0.105.1

Merged pull requests:

  • Add random seeds to examples for reproducible results (#5312) (@tomchor)
  • (0.105.2) Fix and test checkpointing with open-domain simulations with a radiation OpenBoundaryCondition (#5347) (@tomchor)

Closed issues:

  • Tilted boundary layer example failing on docs (#5299)
  • Refactor timestepping to better integrate paranoid update (#5300)
  • delete symlinks and trigger again docs CI build on that commit (tagbot) (#5320)
  • Stable docs page 404s (#5338)
  • Picking up a simulation fails when the model has OpenBoundaryConditions with a non-trivial scheme (#5346)

v0.105.1

26 Feb 10:15
9a109e7

Choose a tag to compare

Oceananigans v0.105.1

Diff since v0.105.0

Merged pull requests:

Closed issues:

  • AverageSpecifiedTimes cannot be used (#4875)
  • JLD2Writer does not create per-rank files when filename contains .jld2 extension (#5263)
  • How does checkpointing happen after wall-time limit is reached? (#5291)

v0.105.0

20 Feb 02:12
43e1f11

Choose a tag to compare

Oceananigans v0.105.0

Diff since v0.104.5

Breaking Changes

There are 12 commits on main since v0.104.5. Of these, 3 contain breaking changes:

  1. compute_diffusivities! → compute_closure_fields! (PR #5274)

The function compute_diffusivities! has been renamed to compute_closure_fields! across the entire codebase. This is an exported symbol from TurbulenceClosures. Anyone who:

  • Imports or calls compute_diffusivities! directly
  • Extends compute_diffusivities! for a custom closure

will need to update to compute_closure_fields!.

  1. New step_closure_prognostics! interface (PR #5274)

A new exported function step_closure_prognostics! is now called by every time stepper (AB2, RK3, SplitRK) between tick! and update_state!. Previously, prognostic closure
stepping (e.g., TKE equation) was entangled inside compute_diffusivities!. Now it's a separate call. This is breaking for:

  • Custom closures with prognostic variables that previously stepped them inside compute_diffusivities! — they must now implement step_closure_prognostics! instead.
  • Custom time steppers that don't call step_closure_prognostics!(model, Δt) after tick!.
  1. New initialize_closure_fields! interface (PR #5274)

A new exported function initialize_closure_fields! is called during initialize! to set up closure fields when a simulation starts. Custom closures that previously did
initialization inside compute_diffusivities! need to move that logic here.

  1. Struct renames (PR #5274)
  • CATKEDiffusivityFields -> CATKEClosureFields

  • TKEDissipationDiffusivityFields -> TKEDissipationClosureFields

    These are internal types but may be referenced by users doing checkpointing, custom closures, or diagnostics. Additionally, two fields were removed from both structs:

    • previous_compute_time — no longer needed
    • _skip_next_compute — no longer needed
    1. Removed update_previous_compute_time! (PR #5274)

    The internal function update_previous_compute_time! was deleted entirely (from CATKE). Code that called it will break.

    1. Kernel function argument rename: diffusivities → closure_fields (PR #5274)

    Throughout the internal kernel functions (tendency kernels in hydrostatic, nonhydrostatic, and shallow water models), the argument name diffusivities has been renamed to
    closure_fields. This is breaking for anyone who dispatches on or extends these internal kernel functions using keyword arguments or positional argument names.

    1. cell_diffusion_timescale signature change (PR #5274)

    The second argument in Diagnostics.cell_diffusion_timescale(closure, diffusivities, grid, clock, fields) was renamed from diffusivities to closure_fields. This affects
    anyone extending this diagnostic for custom closures.

Non-breaking changes (bug fixes, features, docs)

  • PR #5298: VarianceDissipationComputations now uses transport_velocities for HydrostaticFreeSurfaceModel (bug fix)
  • PR #5297: xnodes/ynodes/znodes on windowed Fields now correctly return windowed nodes; mask_immersed_field! respects windowed indices (bug fix)
  • PR #5237: SplitRungeKutta3 added to Reactant extension (new feature, non-breaking)
  • PR #5295: Internal variable rename θ_radians → θ (cosmetic, non-breaking)
  • PR #5282: Docstring added to MutableVerticalDiscretization (docs only)
  • PR #5234: Distributed grids docs fixes (docs only)
  • PR #5302#5306: Documentation/reference updates

Merged pull requests:

  • Implement horizontal derivatives at constant z for MutableVerticalDiscretization (#5101) (@glwagner)
  • Setup vitepress for the docs (#5159) (@lazarusA)
  • Distributed grids docs small fixes (#5234) (@romanlee)
  • Add split runge kutta to reactant extension (#5237) (@jlk9)
  • Extend TabulatedFunction to support 2D and 3D interpolation. (#5240) (@glwagner)
  • Allow FieldTimeSeries to be read from NetCDF without reading the original architecture (#5271) (@tomchor)
  • (0.105.0) Implement interface for stepping closure prognostic variables (#5274) (@glwagner)
  • Add docstring to MutableVerticalDiscretization (#5282) (@briochemc)
  • Drop a leftover _radians (#5295) (@navidcy)
  • Fix nodes and immersed masking for windowed fields (#5297) (@briochemc)
  • Use the correct velocities in VarianceDissipationComputations (#5298) (@simone-silvestri)
  • Update references in index.md (#5302) (@navidcy)
  • [docs] Fix URL of paper (#5304) (@giordano)
  • Add new paper reference to Oceananigans documentation (#5305) (@navidcy)
  • Revise citation for Johnston et al. in references (#5306) (@navidcy)
  • Add fields with non-default indices to Field tutorial (#5308) (@glwagner)
  • Support boolean comparison operations on fields (#5309) (@glwagner)

Closed issues:

  • Use Vitepress for documentation (#4891)
  • Add fields with non-default indices to Field tutorial (#5206)
  • Support boolean comparison operations on fields (>, <, >=, <=, ==) (#5307)

v0.104.5

12 Feb 22:45
fa5b9bf

Choose a tag to compare

Oceananigans v0.104.5

Diff since v0.104.4

Merged pull requests:

  • Bugfix in CATKE with RK3 v2 (#5269) (@simone-silvestri)
  • Use FieldTimeSeries in tilted BBL example (with NetCDF output) (#5273) (@tomchor)
  • Add test for PrescribedFreeSurface with PrescribedVelocityFields and ZStar (#5278) (@Copilot)
  • Update NumericalEarth Slack link in README (#5279) (@glwagner)
  • Changing rotation_angle to output in radians instead of degrees (#5280) (@jlk9)
  • Validate indices for field time series (#5281) (@briochemc)
  • Add new paper citation to Oceananigans section (#5284) (@navidcy)
  • Fix equations rendering in split_explicit_timesteppers.jl (#5285) (@navidcy)
  • (0.104.5) Use the default FloatType in TripolarGrid (#5288) (@simone-silvestri)
  • Add new paper citation to Oceananigans documentation (#5293) (@navidcy)
  • Add reference to Zhang et al. (2025) on Enceladus (#5294) (@navidcy)

Closed issues:

  • OceananigansDocumentation repo is quite large due to SVGs (#5027)
  • don't delete previews too fast (#5243)
  • Absolute or relative imports? (#5290)

v0.104.4

09 Feb 13:11
86df365

Choose a tag to compare

Oceananigans v0.104.4

Diff since v0.104.3

Merged pull requests:

Closed issues:

  • Problem with wind mixing and convection example (#5231)
  • Support FFT tracing for ConcreteRArray (#5244)
  • Reactant failing on buildkite (#5249)
  • Dynamic Smagorinsky always produces zero values for eddy viscosity (#5257)
  • Enter the Product Title Here (#5265)

v0.104.3

04 Feb 01:01
cc0a991

Choose a tag to compare

Oceananigans v0.104.3

Diff since v0.104.2

Merged pull requests:

Closed issues:

  • AMDGPU with NonhydrostaticModel? (#4591)
  • Conservation with Distributed architecture and ZStarCoordinate not ensured (#5161)
  • Nonhydrostatic model fails on MetalGPU due to Clock(::AbstractGrid) constructor (#5186)
  • Calling HydrostaticFreeSurfaceModel with invalid timestepper = :RungeKutta3 throws unfriendly error. (#5192)
  • restore_prognostic_state! not supported for OffsetArrays (#5212)
  • BoundaryConditionOperation not compiling on GPU. (#5214)
  • Unusual density fluctuations have been observed in submarine acoustic simulation. (#5219)
  • Feature request: Prescribed velocity field time series (#5227)

v0.104.2

22 Jan 00:32
409dc8c

Choose a tag to compare

Oceananigans v0.104.2

Diff since v0.104.1

Merged pull requests:

Closed issues:

  • Run HydrostaticFreeSurfaceModel with ImmersedBoundaryGrid on MetalGPU (#4969)
  • rename master to main in OceananigansDocumentation repo (#5160)
  • Undefined references to switch_device! and sync_all_devices! in maybe_enable_peer_access! (#5170)

v0.104.1

19 Jan 00:50
d4c033f

Choose a tag to compare

Oceananigans v0.104.1

Diff since v0.104.0

Merged pull requests:

Closed issues:

  • Bogus Oceananigans.AbstractOperations.ConditionalOperation method (#5154)
  • Bogus methods in binary_operations.jl (#5167)