Skip to content

Releases: CliMA/Oceananigans.jl

🍞 Oceananigans v0.42.0

15 Oct 01:22
Compare
Choose a tag to compare

Oceananigans v0.42.0

Diff since v0.41.0

Added support for time averaging to NetCDFOutputWriter and revamped how field slicing is done.

Breaking changes:

  • NetCDFOutputWriter constructor: The filename keyword argument is now filepath.
  • NetCDFOutputWriter constructor: To specify slices, pass a FieldSlicer(i, j, k; with_halos) instead of using the xC, xF, yC, yF, zC, and zF keyword arguments.

Closed issues:

  • Computation has result at wrong location (#876)
  • Split up TEST_GROUP=model? (#1048)
  • Initializing environment on Buildkite can be a testing bottleneck (#1056)

Merged pull requests:

🎑 Oceananigans v0.41.0

14 Oct 14:02
Compare
Choose a tag to compare

Oceananigans v0.41.0

Diff since v0.40.0

Oceananigans.jl fully supports Julia 1.5 now!

Major changes:

Closed issues:

  • Obscure GPU error when time stepping a model with Julia 1.5 and Oceananigans v0.33.0 (#828)
  • Background tracer distributions and advecting velocity fields (#960)
  • FieldSlicer does not convert to parent indices for integer indices (#1028)
  • Run on GPU without network access (#1035)
  • Stop testing on GitLab CI (#1049)

Merged pull requests:

🪔 Oceananigans v0.40.0

02 Oct 02:02
Compare
Choose a tag to compare

Oceananigans v0.40.0

Diff since v0.39.0

  • Support for Flat dimensions. See the grid section of the model setup documentation for more details and examples.
  • New advection schemes: UpwindBiasedThirdOrder and UpwindBiasedFifthOrder.
  • Grid halos are automatically adjusted on model construction depending on advection scheme and turbulence closure used.
  • Improved two-dimensional turbulence example.
  • Fixed Langmuir turbulence example.
  • Numerous bug fixes.

Closed issues:

  • Only perform operations as needed depending on model dimension. (#35)
  • Float32 tracer conservation test not actually Float32 (#487)
  • Utilities for calculating buoyancy and density offline (#516)
  • Floating point equality checking in 2D Leith (#535)
  • Model not enforcing zero vertical shear at top and bottom (do we expect this?) (#540)
  • Deepening mixed layer verification experiment (#547)
  • NetCDFOutputWriter output does not include global attributes (#576)
  • Incompressibility and pressure projection step test (#673)
  • ERROR: LoadError: UndefVarError: SolutionBoundaryConditions not defined (#686)
  • Cubic lattice grid with missing nodes (#743)
  • An example with stable mixed layer depth? (#749)
  • questions relating to Oceananigans.jl (#770)
  • Possible bug in checkpointing? (#778)
  • test Oceananigans returns CUDA error depsite being able to run examples on CPU and GPU (#788)
  • Is any way to simulate the hydrodynamic behaviour of a bioreactor with Oceananigans.jl? (#830)
  • Test failing on GPU (#882)
  • Eliding differences, interpolation, and fill_halo_regions for Flat dimensions (#902)
  • Stop simulation when output is NaN (#938)
  • Model immediately turns to NaN after 1 time step when grid length is zero along Flat dimensions (#940)
  • Model constructor should check that halos are big enough for chosen advection scheme and turbulence closure (#941)
  • Bug(s) somewhere in UpwindBiasedThirdOrder left-biased interpolation functions (#986)
  • Requiring Lz and Nz for two-dimensional grids is a bit counterintuitive (#1001)
  • Langmuir example broken (#1004)
  • Passing a Clock to restore_from_checkpoint gets overwritten by clock from checkpoint file (#1008)
  • Cannot use Forcings with field_dependencies on GPU with Oceananigans v0.39.0 (#1010)

Merged pull requests:

🥊 Oceananigans v0.39.0

29 Sep 22:02
Compare
Choose a tag to compare

Oceananigans v0.39.0

Diff since v0.38.0

  • Overhauled interface for forcing functions. Instead of calling ModelForcing to set up model forcing functions, you should pass a named tuple of Forcing objects to the model constructor.

Closed issues:

  • getindex and setindex! much slower than just accessing array contents directly. (#13)
  • Can we inline source term calculation to save memory? (#98)
  • Unified forcing function interface (#896)
  • fourth-order advection tested? (#925)
  • Not sure why Oceananigans instantly kills a constant velocity field in a box (#951)
  • Flatten state in boundary condition functions and forcing functions to single tuple? (#985)
  • Remove SymPy dependency in next release of Oceananigans (#990)
  • MethodError when using Oceananigans with Julia 1.5 and OffsetArrays v1.3.0 (#991)

Merged pull requests:

⚖️ Oceananigans v0.38.0

26 Sep 23:02
e808a82
Compare
Choose a tag to compare

Oceananigans v0.38.0

Diff since v0.37.0

  • New experimental WENO-5 advection scheme for momentum and tracers. Use by passing advection=WENO5() when creating a model. See #592 for convergence tests, comparisons, and benchmarks.
  • Very experimental automatically generated WENO{N} advection schemes.
  • New framework for high-order advection schemes abstracting centered and upwind schemes.
  • Lid-driven cavity verification experiment against data by Ghia et al. (1982). See the docs for movies.
  • New lazily-computed PressureField.
  • Avoiding unnecessary recomputation of fields in output evaluation.
  • Bug fixes for WindowedTimeAverage and AveragedField.
  • BREAKING: Internal functions run_diagnostic(model, diag) and write_output(model, output_writer) are now run_diagnostic!(diag, model) and write_output!(output_writer, model).

Closed issues:

  • Sugary syntax for boundary conditions (#637)
  • Don't require simulation.progress to subtype Function (#642)
  • Checkpointing docs are stale (#660)
  • Incorporate performance benchmarks into tests and CI (#684)
  • Doc strings for some kernel functions are out of date (#763)
  • Introduce "location" notation :u, :v, :w, :c ? (#766)
  • Incomplete docstring for SeawaterBuoyancy? (#768)
  • Proper bangs (#861)
  • Typo in docs, should be Non-traditional (#912)
  • Advection scheme benchmarks (#934)
  • halo points behaving differently in master branch compared with 0.36.0 (#949)
  • Identifier conflict warnings when using Oceananigans (#950)
  • Avoiding repeated computations in the evaluation of AbstractOperations (#955)
  • Docstring for RungeKutta3TimeStepper is incorrect (#957)
  • Bug due to "initialization" of WindowedTimeAverage diagnostic (#962)
  • Bugs in fourth order advection in bounded directions (#965)
  • Typo in docstring for AveragedField(op::AbstractOperation) (#967)

Merged pull requests:

  • Lid-driven cavity verification experiment (#572) (@ali-ramadhan)
  • WENO advection schemes and advection verification experiments (#592) (@ali-ramadhan)
  • Fixes bug in adapt_structure for ComputedField (#953) (@glwagner)
  • More specific imports from KernelAbstractions in Fields module to solve identifier conflict warnings (#954) (@glwagner)
  • PressureField and tests for AveragedFields and ComputedFields in operations (#956) (@glwagner)
  • Fixes initialization and finalization bugs in WindowedTimeAverage (#964) (@glwagner)
  • Updating Julia DOI (#966) (@arfon)
  • Avoiding unnecessary recomputation of fields in output evaluation (#968) (@glwagner)
  • Do not zero out halo regions in directions that arent averaged (#970) (@glwagner)
  • New framework for high-order advection schemes (#972) (@glwagner)
  • Add JOSS badge (#976) (@ali-ramadhan)
  • Fixes timestepper docstrings and simplifies constructor (#977) (@glwagner)
  • Fixes typo in docs for non-traditional beta plane and simplifies language (#978) (@glwagner)
  • Docs comply with julia = "^1.4" compat entry (#979) (@navidcy)
  • Adds bangs and conventionalizes signatures of run_diagnostic! and write_output! (#980) (@glwagner)
  • Completes docstring for SeawaterBuoyancy constructor (#981) (@glwagner)
  • Cleans up docstrings for tendency kernels (#982) (@glwagner)
  • Changes default progress from nothing to an innocuous function (#983) (@glwagner)
  • Moves boundary condition aliases to FieldBoundaryConditions (#984) (@glwagner)
  • Bump v0.38.0 (#988) (@ali-ramadhan)

🌾 Oceananigans v0.37.0

17 Sep 14:02
d6ce0fe
Compare
Choose a tag to compare

Oceananigans v0.37.0

Diff since v0.36.0

  • More empowered Field abstraction:
    • AbstractReducedField and concrete ReducedField for representing fields that are reduced along one or more dimensions.
    • AveragedField <: AbstractReducedField representing a field that is averaged along one dimension. AveragedField will replace Average in the near future and can be inserted into AbstractOperations.
    • ComputedField representing fields whose data must be "computed". ComputedFields are intended to hold the results of AbstractOperations. They can also participate in AbstractOperations.
  • FieldSlicer abstraction representing a "slice" or sub-indexing operation applied to fields prior to output.
  • Functionality in JLD2OutputWriter for handling field output. This eliminates the need for the FieldOuputs constructor. FieldSlicer can be used with JLD2OutputWriter.
  • Bugfixes and improvements to WindowedTimeAverage and full integration with FieldSlicer and JLD2OutputWriter.
  • Support for closure = nothing so that models can be run with no diffusivity or turbulence closure.
  • A new, as-of-now non-default third-order Runge-Kutta time-stepper, along with dynamics tests and convergence tests.
  • Bugfix in the experimental fourth order advection scheme.
  • Bugfix that incorrectly created MultiaryOperations when they should have been BinaryOperations.

Breaking changes:

  • FieldOutputs no longer exists; named tuples of fields should be passed directly to JLD2OutputWriter instead (and halos are omitted by default when using this functionality)

Closed issues:

  • Explicitly time-step w instead of recomputing it from continuity? (#338)
  • Forward Euler + 3rd order Runge-Kutta time-stepping (or integration with DifferentialEquations.jl) (#506)
  • ReducedField type (#525)
  • zero_halo_regions needs to know about field and grid topology (#734)
  • Need to update ParameterizedForcing constructor (#785)
  • Setting up inflow condition in bounded domain with buoyancy as tracer (#789)
  • Why is w*T is a MultiaryOperation? (#892)
  • Docstring for IncompressibleModel is incorrect (#895)
  • Keyword array_type in JLD2OutputWriter (and perhaps NetCDFOutputWriter) (#901)
  • More meaningful notation for non-traditional beta plane (#918)
  • zero_halo_regions is incorrect for fields located on faces in bounded directions (#919)
  • The values of slices dictionary in NetCDFOutputWriter are identical for every field (#926)
  • Cannot create model with closure = nothing (#939)

Merged pull requests:

🧻 Oceananigans v0.36.0

08 Sep 16:02
469478f
Compare
Choose a tag to compare

Oceananigans v0.36.0

Diff since v0.35.0

This release coincides with the publication of the Oceananigans.jl Journal of Open Source Software (JOSS) paper.

Changelog:

  • Simplified boundary condition interface, types, and constructors. See the "boundary conditions" section under "Model setup" in the documentation for updated examples.
  • Support for a NonTraditionalBetaPlane Coriolis force implementation.
  • The AnisotropicBiharmonicDiffusivity closure now works properly in closed domains with zero Flux boundary conditions, as higher-order boundary conditions are enforced.
  • Bug fix: Appending to NetCDF files with NetCDFOutputWriter works now.
  • Bug fix: Computations of abstract operations compute the right end point of face-centered fields along bounded dimensions.
  • Bug fix: Averages with_halos=false return results with the correct dimensions for face-centered results along bounded dimensions.
  • Small bug fixes for show methods.

Breaking changes:

  • When constructing a NetCDFOutputWriter, use mode="c" instead of clobber=true and mode="a" instead of clobber=false.

Closed issues:

  • More streamlined interface for boundary functions? (#769)
  • Return of the multiple of 16 bug (#780)
  • When printing an AbstractOperation, the tree should be indented for readability (and without newline separation) (#893)
  • Is the warning "This simulation will recalculate the time step every iteration which can be slow" correct? (#903)
  • Wrong size for averages with halos of face-centered fields along bounded dimensions (#906)
  • Computations do not compute the right end point faces of bounded dimensions (#908)
  • Cannot append to NetCDF file even with clobber=false (#913)
  • Docs for 0.35.0 seem to be missing (#917)

Merged pull requests:

🧵 Oceananigans v0.35.0

02 Sep 15:02
6499cc4
Compare
Choose a tag to compare

Oceananigans v0.35.0

Diff since v0.34.1

  • Support for multithreaded CPU simulations! Set the number of threads via the JULIA_NUM_THREADS environment variable or via the -t flag in Julia 1.5+.
  • New OceananigansLogger for fancy log messages with time stamps.
  • New experimental diagnostic: the WindowedTimeAverage.
  • Average diagnostic can include or exclude halos via the with_halos keyword argument.
  • Improved testing infrastructure made possible by splitting tests into four groups, selectable with the TEST_GROUP environment variable.
  • Cleaned up convergence test scripts and plots. Convergence tests can now be fully run by running the tests with the TEST_GROUP=convergence environment variable.
  • Numerous bug fixes and documentation updates.

Closed issues:

  • We need to upgrade our testing infrastructure soon-ish. (#139)
  • Abstraction / Diagnostic for moving averages (#501)
  • Failed to precompile GPUArrays, CUDA, Oceananigans on macOS (#854)
  • Error when trying to diagnose Average of an abstract operation (#857)
  • Error with NetCDF output - Julia v1.5, Oceananigans v0.34.1 (#862)
  • scalar getindex is disallowed with topology = (Periodic, Bounded, Bounded) using Oceananigans v0.34.1 (#864)
  • {x,y,z}nodes function docstrings do not document the reshape keyword argument (#865)
  • Getting GPU name in versioninfo_with_gpu() fails with CUDA v1.3.0 (#866)
  • Use FFTW.set_num_threads (#867)
  • test/test_*.jl is a redundant naming scheme (#871)
  • Run convergence tests as part of the verification testset (#873)
  • Include all convergence test plots in documentation (#879)
  • total_size(grid::AbstractGrid) seems wrong (#883)

Merged pull requests:

⏳ Oceananigans v0.34.1

12 Aug 17:01
8115636
Compare
Choose a tag to compare

Oceananigans v0.34.1

Diff since v0.34.0

This is a bugfix release that disables CuArray scalar operations by default (to avoid surprise scalar operations that can cause huge slowdowns) and fixes a related bug where writing GPU fields to NetCDF was very slow. Also includes small updates to the documentation.

Closed issues:

  • Dynamically disable CuArray scalar operations (#276)
  • Update performance benchmarks plot and discuss results (#607)
  • Fix citations and references in documentation (#609)
  • Link documentation of numerical methods with code and API (#610)

Merged pull requests:

🏵️ Oceananigans v0.34.0

08 Aug 12:02
Compare
Choose a tag to compare

Oceananigans v0.34.0

Diff since v0.33.0

This release adds some new features, fixes some bugs, and improves the API (so there are some breaking changes, listed below).

Major changes:

  • Triply periodic models are now available by passing the topology = (Periodic, Periodic, Periodic) keyword argument to grids.
  • All 1D, 2D, and 3D averages are now available through the Average diagnostic with the dims keyword argument.
  • Fixed some checkpointing bugs.
  • BREAKING: Use Average(..., dims=(1, 2)) instead of HorizontalAverage(...).
  • BREAKING: Use iteration_interval and time_interval instead of frequency and interval for diagnostics and output writers.
  • BREAKING: Use iteration_interval instead of progress_frequency for simulations.
  • BREAKING: Use IsotropicDiffusivity and AnisotropicDiffusivity instead of ConstantIsotropicDiffusivity and ConstantAnisotropicDiffusivity. Also, use νz instead of νv and κz instead of κv.
  • BREAKING: To restore_from_checkpoint, pass model constructor arguments as you would to a normal constructor, e.g. restore_from_checkpoint("my_checkpoint.jld2", boundary_conditions=custom_bcs). Previous behavior was to pass a dictionary which was less user friendly.

Closed issues:

  • Update README and fix broken links (#608)
  • Clearer names for frequency and interval for diagnostics (#672)
  • Misleading documentation for JLD2OutputWriter (#827)
  • Typo: no such thing as "tradient" (#831)
  • IsotropicDiffusivity and AnisotropicDiffusivity are not exported by Oceananigans.jl (#835)
  • Flux boundary condition docstring should mention the sign convention (#837)
  • versioninfo_with_gpu util fails on machine with CUDA but running CPU models (#840)
  • NetCDFOutputWriter should recast the type of global_attributes into Dict{String,Any} (#841)

Merged pull requests: