https://github.com/clima/climaocean.jl
π Regional-to-global coupled ocean and sea ice simulations based on Oceananigans
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
Keywords from Contributors
Repository
π Regional-to-global coupled ocean and sea ice simulations based on Oceananigans
Basic Info
- Host: GitHub
- Owner: CliMA
- License: other
- Language: Julia
- Default Branch: main
- Homepage: https://clima.github.io/ClimaOceanDocumentation/stable/
- Size: 3.93 MB
Statistics
- Stars: 50
- Watchers: 10
- Forks: 19
- Open Issues: 111
- Releases: 50
Topics
Metadata Files
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.
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
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
- Website: https://clima.caltech.edu
- Repositories: 67
- Profile: https://github.com/CliMA
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
Top Committers
| Name | 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
Pull Request Labels
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
- Homepage: https://clima.github.io/ClimaOceanDocumentation/stable/
- Documentation: https://docs.juliahub.com/General/ClimaOcean/stable/
- License: MIT
-
Latest release: 0.8.3
published 7 months ago
Rankings
Dependencies
- julia-actions/setup-julia v1 composite
- actions/checkout v3 composite
- actions/checkout v3 composite
- julia-actions/setup-julia latest composite
- styfle/cancel-workflow-action 0.8.0 composite
- JuliaRegistries/TagBot v1 composite
- 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