https://github.com/clima/climaocean.jl

🌎 Regional-to-global coupled ocean and sea ice simulations based on Oceananigans

https://github.com/clima/climaocean.jl

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • β—‹
    CITATION.cff file
  • βœ“
    codemeta.json file
    Found codemeta.json file
  • βœ“
    .zenodo.json file
    Found .zenodo.json file
  • βœ“
    DOI references
    Found 8 DOI reference(s) in README
  • βœ“
    Academic publication links
    Links to: arxiv.org, zenodo.org
  • β—‹
    Committers with academic emails
  • βœ“
    Institutional organization owner
    Organization clima has institutional domain (clima.caltech.edu)
  • β—‹
    JOSS paper metadata
  • β—‹
    Scientific vocabulary similarity
    Low similarity (11.3%) to scientific vocabulary

Keywords

climate-model fluid-dynamics fluid-dynamics-simulator machine-learning ocean-modelling

Keywords from Contributors

climate data-assimilation ocean pde climate-change oceanography ode biogeochemistry ocean-sciences earth-observation
Last synced: 6 months ago · JSON representation

Repository

🌎 Regional-to-global coupled ocean and sea ice simulations based on Oceananigans

Basic Info
Statistics
  • Stars: 50
  • Watchers: 10
  • Forks: 19
  • Open Issues: 111
  • Releases: 50
Topics
climate-model fluid-dynamics fluid-dynamics-simulator machine-learning ocean-modelling
Created over 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

ClimaOcean.jl

🌎 A framework for realistic ocean-only and coupled ocean + sea-ice simulations driven by prescribed atmospheres and based on Oceananigans and ClimaSeaIce.

DOI Build status Documentation Documentation

Installation

ClimaOcean is a registered package. To install from a Julia REPL:

```julia julia> using Pkg

julia> Pkg.add("ClimaOcean")

julia> Pkg.instantiate() ```

Use Pkg.add(url="https://github.com/CliMA/ClimaOcean.jl.git", rev="main") to install the latest version of ClimaOcean. For more information, see the documentation for Pkg.jl.

Why? What's the difference between ClimaOcean and Oceananigans?

Oceananigans is a general-purpose library for ocean-flavored fluid dynamics. ClimaOcean implements a framework for driving realistic Oceananigans simulations with prescribed atmospheres, and coupling them to prognostic sea ice simulations.

A core abstraction: ClimaOcean.OceanSeaIceModel

Our system for realistic modeling is anchored by ClimaOcean.OceanSeaIceModel, which encapsulates the ocean simulation, sea ice simulation, prescribed atmospheric state, and specifies how the three communicate. To illustrate how OceanSeaIceModel works we set up a simulation on a grid with 10 vertical levels and 1/4-degree horizontal resolution:

```julia using Oceananigans using Oceananigans.Units using Dates using CUDA import ClimaOcean

arch = GPU() grid = LatitudeLongitudeGrid(arch, size = (1440, 560, 10), halo = (7, 7, 7), longitude = (0, 360), latitude = (-70, 70), z = (-3000, 0))

bathymetry = ClimaOcean.regrid_bathymetry(grid) # builds gridded bathymetry based on ETOPO1 grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bathymetry))

Build an ocean simulation initialized to the ECCO state estimate version 2 on Jan 1, 1993

ocean = ClimaOcean.oceansimulation(grid) startdate = DateTime(1993, 1, 1) set!(ocean.model, T=ClimaOcean.Metadatum(:temperature; date=startdate, dataset=ClimaOcean.ECCO2Daily()), S=ClimaOcean.Metadatum(:salinity; date=startdate, dataset=ClimaOcean.ECCO2Daily()))

Build and run an OceanSeaIceModel (with no sea ice component) forced by JRA55 reanalysis

atmosphere = ClimaOcean.JRA55PrescribedAtmosphere(arch) coupledmodel = ClimaOcean.OceanSeaIceModel(ocean; atmosphere) simulation = Simulation(coupledmodel, Ξ”t=5minutes, stop_time=30days) run!(simulation) ```

The simulation above achieves approximately 8 simulated years per day of wall time on an Nvidia H100 GPU.

Since ocean.model is an Oceananigans.HydrostaticFreeSurfaceModel, we can leverage Oceananigans features in our scripts. For example, to plot the surface speed at the end of the simulation we write

```julia u, v, w = ocean.model.velocities speed = Field(sqrt(u^2 + v^2)) compute!(speed)

using GLMakie heatmap(view(speed, :, :, ocean.model.grid.Nz), colorrange=(0, 0.5), colormap=:magma, nan_color=:lightgray) ```

which produces

image

Additional features: a utility for ocean_simulations and data wrangling

A second core abstraction in ClimaOcean is ocean_simulation. ocean_simulation configures an Oceananigans model for realistic simulations including temperature and salinity, the TEOS-10 equation of state, boundary conditions to store computed air-sea fluxes, the automatically-calibrated turbulence closure CATKEVerticalDiffusivity, and the WENOVectorInvariant advection scheme for mesoscale-turbulence-resolving simulations.

ClimaOcean also provides convenience features for wrangling datasets of bathymetry, ocean temperature, salinity, ocean velocity fields, and prescribed atmospheric states.

ClimaOcean is built on top of Oceananigans and ClimaSeaIce, so it's important that ClimaOcean users become proficient with Oceananigans. Note that though ClimaOcean is currently focused on hydrostatic modeling with Oceananigans.HydrostaticFreeSurfaceModel, realistic nonhydrostatic modeling is also within the scope of this package.

Citing

If you use ClimaOcean for your research, teaching, or fun 🀩, everyone in our community will be grateful if you give credit by citing the corresponding Zenodo record, e.g.,

Wagner, G. L. et al. (2025). CliMA/ClimaOcean.jl: v0.8.1 (v0.8.1). Zenodo. https://doi.org/10.5281/zenodo.7677442

and also the recent preprint submitted to the Journal of Advances in Modeling Earth Systems that presents an overview of all the things that make Oceananigans unique:

"High-level, high-resolution ocean modeling at all scales with Oceananigans"

by Gregory L. Wagner, Simone Silvestri, Navid C. Constantinou, Ali Ramadhan, Jean-Michel Campin, Chris Hill, Tomas Chor, Jago Strong-Wright, Xin Kai Lee, Francis Poulin, Andre Souza, Keaton J. Burns, John Marshall, Raffaele Ferrari

submitted to the Journal of Advances in Modeling Earth Systems, arXiv 2502.14148

bibtex
@article{Oceananigans-overview-paper-2025,
  title = {{High-level, high-resolution ocean modeling at all scales with Oceananigans}},
  author = {G. L. Wagner and S. Silvestri and N. C. Constantinou and A. Ramadhan and J.-M. Campin and C. Hill and T. Chor and J. Strong-Wright and X. K. Lee and F. Poulin and A. Souza and K. J. Burns and J. Marshall and R. Ferrari},
  journal = {arXiv preprint},
  year = {2025},
  archivePrefix = {arXiv},
  eprint = {2502.14148},
  doi = {10.48550/arXiv.2502.14148},
  notes = {submitted to the Journal of Advances in Modeling Earth Systems},
}

Owner

  • Name: Climate Modeling Alliance
  • Login: CliMA
  • Kind: organization
  • Email: clima@caltech.edu

An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 219
  • Total Committers: 5
  • Avg Commits per committer: 43.8
  • Development Distribution Score (DDS): 0.37
Past Year
  • Commits: 146
  • Committers: 5
  • Avg Commits per committer: 29.2
  • Development Distribution Score (DDS): 0.384
Top Committers
Name Email Commits
Gregory Wagner w****g@g****m 138
simone-silvestri s****0@g****m 36
Navid C. Constantinou n****y 32
CompatHelper Julia c****y@j****g 7
Simon Byrne s****e@g****m 6
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 170
  • Total pull requests: 634
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 17 days
  • Total issue authors: 18
  • Total pull request authors: 21
  • Average comments per issue: 2.04
  • Average comments per pull request: 3.17
  • Merged pull requests: 427
  • Bot issues: 0
  • Bot pull requests: 50
Past Year
  • Issues: 118
  • Pull requests: 501
  • Average time to close issues: 14 days
  • Average time to close pull requests: 6 days
  • Issue authors: 16
  • Pull request authors: 19
  • Average comments per issue: 2.08
  • Average comments per pull request: 3.01
  • Merged pull requests: 338
  • Bot issues: 0
  • Bot pull requests: 20
Top Authors
Issue Authors
  • glwagner (69)
  • navidcy (36)
  • simone-silvestri (24)
  • taimoorsohail (8)
  • francispoulin (8)
  • waywardpidgeon (7)
  • NoraLoose (3)
  • Sbozzolo (3)
  • sb4233 (2)
  • xkykai (2)
  • JuliaTagBot (1)
  • ffrancesco94 (1)
  • kevinbroughan (1)
  • michel2323 (1)
  • seamanticscience (1)
Pull Request Authors
  • simone-silvestri (213)
  • glwagner (201)
  • navidcy (105)
  • github-actions[bot] (48)
  • taimoorsohail (17)
  • Sbozzolo (8)
  • giordano (6)
  • seamanticscience (4)
  • michel2323 (4)
  • francispoulin (4)
  • waywardpidgeon (3)
  • NoraLoose (3)
  • vtamsitt (3)
  • jagoosw (2)
  • wsmoses (2)
Top Labels
Issue Labels
data wrangling (14) bug (13) documentation (10) question (7) bathymetry ⛰️ (6) user interface (6) tests (5) global simulations 🌎 (3) enhancement (3) performance (2) atmosphere-ocean coupling ⛅️ 🌊 (1) cleanup 🧹 (1) extensions 🧬 (1) SDI (1) sea ice 🧊 (1)
Pull Request Labels
build docs (72) documentation (39) data wrangling (23) bug (18) cleanup 🧹 (9) enhancement (9) Built Docs (8) Run examples (8) atmosphere-ocean coupling ⛅️ 🌊 (8) user interface (8) bathymetry ⛰️ (8) tests (7) 🚨 DO NOT MERGE 🚨 (6) dependencies (4) output πŸ’Ύ (3) extensions 🧬 (3) github_actions (2) ice-ocean coupling🧊 🌊 (1) global simulations 🌎 (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 84 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 48
juliahub.com: ClimaOcean

🌎 Regional-to-global coupled ocean and sea ice simulations based on Oceananigans

  • Versions: 48
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 84 Total
Rankings
Dependent repos count: 9.6%
Average: 24.1%
Dependent packages count: 38.6%
Last synced: 6 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/DocPreviewCleanup.yml actions
  • actions/checkout v3 composite
.github/workflows/Documenter.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
  • styfle/cancel-workflow-action 0.8.0 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • codecov/codecov-action v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia latest composite