Releases: CliMA/Oceananigans.jl
v0.105.4
Oceananigans v0.105.4
Merged pull requests:
- (0.105.4) Add basic tests for Reactant-Oceananigans correctness (#5093) (@glwagner)
- Rename
JULIA_DEPOT_PATHto the.juliafor buildkite (#5368) (@tomchor) - Use view instead of indexing in cpu_face_constructor_r (#5376) (@glwagner)
- Fix
HydroStaticFreeSurfaceModelinit for open boundary conditions withSplitExplicitFreeSurface(#5378) (@rafmudaf)
Closed issues:
- Bug with Reactant + Periodic BCs + ParallelTestRunner (#5208)
v0.105.3
Oceananigans v0.105.3
Merged pull requests:
- (0.105.3) Fix interpolation of terms in chain horizontal derivatives for MutableVerticalDiscretization (#5339) (@glwagner)
- Restructure AGENTS.md into multi-file agent configuration (#5350) (@glwagner)
- (0.105.2) Fix
with_halofor aTripolarGrid(#5353) (@simone-silvestri) - Fix typo SKR3 -> SRK3 (#5360) (@briochemc)
- Update papers section in index.md (#5362) (@navidcy)
- Add 9 missing papers to the reference list (#5363) (@glwagner)
- Add new reference to Zheng et al. (2025) in index (#5364) (@navidcy)
- Fix ContinuousForcing field index mismatch in HydrostaticFreeSurfaceModel (#5370) (@glwagner)
- Add dependency guardrail to Common Pitfalls (#5371) (@glwagner)
Closed issues:
- Reformulating continuous forcing in discrete form giving unexpected results (#5369)
v0.105.2
Oceananigans v0.105.2
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-trivialscheme(#5346)
v0.105.1
Oceananigans v0.105.1
Merged pull requests:
- Enable
AveragedSpecifiedTimesto be used in output writers (#4876) (@xkykai) - Fix lock-exchange example (#5248) (@simone-silvestri)
- Reduce method ambiguities by disambiguating ConstantField binary ops (#5313) (@glwagner)
- (0.105.1) Add density and gravity_wave_speed to PerturbationAdvection (#5314) (@glwagner)
- Add maybe_initialize_state! and simplify Reactant time stepper overrides (#5315) (@glwagner)
- Fix inability to raise
Boundedtopology with Reactant (#5322) (@dkytezab) - Add citation for Gupta et al. on upper-ocean energetics (#5325) (@navidcy)
- Fix undefined variable
free_surfaceinside error message (#5328) (@giordano) --check-bounds=autofor Reactant tests (#5331) (@dkytezab)- Avoid topology-aware operators when filling halos in the SplitExplicitFreeSurface (#5332) (@simone-silvestri)
- Fix broken hard-coded URLs with @ref (#5335) (@briochemc)
- Enhance
run!docstring (#5336) (@navidcy) - Add bibtex entry for Wagner et al. 2021 (#5337) (@navidcy)
Closed issues:
v0.105.0
Oceananigans v0.105.0
Breaking Changes
There are 12 commits on main since v0.104.5. Of these, 3 contain breaking changes:
- 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!.
- 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!.
- 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.
- 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
- 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.
- 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.- 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:
v0.104.5
Oceananigans v0.104.5
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
FloatTypeinTripolarGrid(#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:
v0.104.4
Oceananigans v0.104.4
Merged pull requests:
- Add the possibility for using
fill_halo_regions!instead of extended halos forSplitExplicitFreeSurface(#4750) (@simone-silvestri) - Do not explicitly step
model.velocitiesfor pressure_correction models (#5178) (@simone-silvestri) - Support FFT planning for
ConcreteRArray(#5246) (@dkytezab) - (0.104.4) Guarantee conservation with an
ImplicitFreeSurface(#5247) (@simone-silvestri) - unpin reactant (#5253) (@wsmoses)
- Use WENO in the ocean mixing example (#5254) (@tomchor)
- Add pre-commit hook and explain how to use it (#5256) (@giordano)
- Always run
Base.julia_cmd()in distributed tests (#5258) (@giordano) - Create test-specific project (#5259) (@giordano)
- (0.104.4) Bugfix for DynamicSmagorinsky (improve check for restoration) (#5260) (@glwagner)
- Add support for RK3 in Reactant extension (#5261) (@dkytezab)
- Explicit imports in MultiRegion, and remove all
imports in that module (#5262) (@giordano)
Closed issues:
v0.104.3
Oceananigans v0.104.3
Merged pull requests:
- Extend FFTBasedPoissonSolver to work on AMDGPU (#4593) (@navidcy)
- Do not pass
CommunicationBuffersasclockto BC (#5063) (@Mikolaj-A-Kowalski) - F-point pivot fold zipper boundary for tripolar grids (#5094) (@briochemc)
- Fix Clock constructor preventing Nonhydrostatic model to run on MetalGPU (#5187) (@alesok)
- Support combining distributed output for
FieldTimeSerieswith Reduced directions (#5188) (@simone-silvestri) - Fix typos in generalized vertical coordinates documentation (#5190) (@navidcy)
- Move benchmarks from GPU 1 to GPU 0 (#5193) (@simone-silvestri)
- Add docstrings back to NetCDFWriter (#5194) (@tomchor)
- Rearrange example scripts in make.jl (#5196) (@navidcy)
- Convert examples in docstrings to doctests (#5197) (@navidcy)
- Fix typo (#5198) (@navidcy)
- Fix formatting of urls in the docs (#5199) (@navidcy)
- Refine schedules documentation for clarity and consistency (#5201) (@navidcy)
- Fix callback in example within Docs/Checkpoint (#5202) (@navidcy)
apply_regionally!on multi-region kernels (#5203) (@simone-silvestri)- Fix
test_complex_boundary_conditionson distributed CI (#5205) (@navidcy) - Enhance checkpointing tests with closure::Tuple (#5209) (@navidcy)
- Zenodo: Add citation metadata for Oceananigans.jl (#5215) (@milankl)
- Add more docstrings for
FieldTimeSeries(#5217) (@briochemc) - Add support for
OffsetArrayinrestore_prognostic_state!+ minor variable name changes (#5218) (@taimoorsohail) - Added support for combining FTS using multiple ranks where filename is an absolute path (#5221) (@taimoorsohail)
- Fix formatting of titles in oceananigans.bib (#5222) (@navidcy)
- Add friendlier error for wrong timestepper in model constructors (#5224) (@briochemc)
- Introduce distributed conservation tests and fix some bugs (#5225) (@simone-silvestri)
- Fix Distributed GPU unit tests (#5226) (@navidcy)
- Simplify distributed test pipeline (#5228) (@simone-silvestri)
- Implement TimeSeriesInterpolatedField and support FieldTimeSeries in PrescribedVelocityFields (#5233) (@glwagner)
- Use
stage=1inClockconstructor for ReactantGrid (#5236) (@jlk9) - Jlk9/reactant clock stage 1 (#5241) (@jlk9)
- (0.104.3) Make
FieldTimeSeriesrespectarchitecturewhen reading from NetCDF files (#5242) (@tomchor) - Update Julia version requirement to 1.10 (#5245) (@briochemc)
- Pin reactant (#5250) (@simone-silvestri)
- [WIP] Update FieldTimeSeries NetCDF architecture handling (#5251) (@Copilot)
Closed issues:
- AMDGPU with NonhydrostaticModel? (#4591)
- Conservation with
Distributedarchitecture andZStarCoordinatenot ensured (#5161) - Nonhydrostatic model fails on MetalGPU due to Clock(::AbstractGrid) constructor (#5186)
- Calling
HydrostaticFreeSurfaceModelwith invalidtimestepper = :RungeKutta3throws unfriendly error. (#5192) restore_prognostic_state!not supported forOffsetArrays(#5212)BoundaryConditionOperationnot 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
Oceananigans v0.104.2
Merged pull requests:
- Problems with TimeStepWizard and ImmersedBoundaryGrid on MetalGPU (#4990) (@alesok)
- Fix halo-edge interpolation and column depth for extended conformal cubed sphere grids (#5060) (@siddharthabishnu)
- Simplify and test FTS boundary conditions (#5171) (@simone-silvestri)
- Delete unused
maybe_enable_peer_access!function (#5173) (@giordano) - Remove
RungeKuttaSchemealias (#5174) (@giordano) - Add new paper references to Docs (#5175) (@navidcy)
- (0.104.2) Add convenience method for 1D interpolation (#5182) (@glwagner)
- Update including parameter to use default properties (#5184) (@navidcy)
Closed issues:
v0.104.1
Oceananigans v0.104.1
Merged pull requests:
- Test that certain modules have exactly 0 ambiguities (#5115) (@giordano)
- Update Julia compat from version from 1.9 to 1.10 (#5163) (@navidcy)
- Fix
ConditionalOperationmethod (#5165) (@simone-silvestri) - Resolve many more issues identified by JETLS (#5166) (@giordano)
- Add a checkpointing method for constant fields (#5168) (@simone-silvestri)
- Resolve bug in
binary_operation(#5169) (@simone-silvestri)
Closed issues: