Open Sustainable Technology
A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.
Browse accepted projects | Review proposed projects | Propose new project | Open Issues
Oceananigans.jl
Fast and friendly fluid dynamics on CPUs and GPUs.
https://github.com/clima/oceananigans.jl
climate climate-change data-assimilation fluid-dynamics gpu julia machine-learning ocean
Last synced: about 21 hours ago
JSON representation
Repository metadata
๐ Julia software for fast, friendly, flexible, ocean-flavored fluid dynamics on CPUs and GPUs
- Host: GitHub
- URL: https://github.com/clima/oceananigans.jl
- Owner: CliMA
- License: mit
- Created: 2018-10-13T14:15:44.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T11:15:48.000Z (11 days ago)
- Last Synced: 2024-05-01T13:27:37.324Z (11 days ago)
- Topics: climate, climate-change, data-assimilation, fluid-dynamics, gpu, julia, machine-learning, ocean
- Language: Julia
- Homepage: https://clima.github.io/OceananigansDocumentation/stable
- Size: 114 MB
- Stars: 878
- Watchers: 25
- Forks: 171
- Open Issues: 205
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Citation: CITATION.cff
README
Oceananigans.jl
๐ Fast and friendly ocean-flavored Julia software for simulating incompressible fluid dynamics in Cartesian and spherical shell domains on CPUs and GPUs. https://clima.github.io/OceananigansDocumentation/stableOceananigans is a fast, friendly, flexible software package for finite volume simulations of the nonhydrostatic
and hydrostatic Boussinesq equations on CPUs and GPUs.
It runs on GPUs (wow, [fast!](http://arxiv.org/abs/2309.06662)), though we believe Oceananigans makes the biggest waves
with its ultra-flexible user interface that makes simple simulations easy, and complex, creative simulations possible.Oceananigans.jl is developed by the [Climate Modeling Alliance](https://clima.caltech.edu) and heroic external collaborators.
## Contents
* [Installation instructions](#installation-instructions)
* [Running your first model](#running-your-first-model)
* [The Oceananigans knowledge base](#the-oceananigans-knowledge-base)
* [Citing](#citing)
* [Contributing](#contributing)
* [Movies](#movies)
* [Performance benchmarks](#performance-benchmarks)## Installation instructions
Oceananigans is a [registered Julia package](https://julialang.org/packages/). So to install it,
1. [Download Julia](https://julialang.org/downloads/) (version 1.9 or later).
2. Launch Julia and type
```julia
julia> using Pkgjulia> Pkg.add("Oceananigans")
```This installs the latest version that's _compatible with your current environment_.
Don't forget to *be careful* ๐ and check which Oceananigans you installed:```julia
julia> Pkg.status("Oceananigans")
```## Running your first model
Let's run a two-dimensional, horizontally-periodic simulation of turbulence using 128ยฒ finite volume cells for 4 non-dimensional time units:
```julia
using Oceananigans
grid = RectilinearGrid(CPU(), size=(128, 128), x=(0, 2ฯ), y=(0, 2ฯ), topology=(Periodic, Periodic, Flat))
model = NonhydrostaticModel(; grid, advection=WENO())
ฯต(x, y) = 2rand() - 1
set!(model, u=ฯต, v=ฯต)
simulation = Simulation(model; ฮt=0.01, stop_time=4)
run!(simulation)
```But there's more: changing `CPU()` to `GPU()` makes this code on a CUDA-enabled Nvidia GPU.
Dive into [the documentation](https://clima.github.io/OceananigansDocumentation/stable/) for more code examples and tutorials.
Below, you'll find movies from GPU simulations along with CPU and GPU [performance benchmarks](https://github.com/clima/Oceananigans.jl#performance-benchmarks).## The Oceananigans knowledge base
It's _deep_ and includes:
* [Documentation](https://clima.github.io/OceananigansDocumentation/stable) that provides
* example Oceananigans scripts,
* tutorials that describe key Oceananigans objects and functions,
* explanations of Oceananigans finite-volume-based numerical methods,
* details of the dynamical equations solved by Oceananigans models, and
* a library documenting all user-facing Oceananigans objects and functions.
* [Discussions on the Oceananigans github](https://github.com/CliMA/Oceananigans.jl/discussions), covering topics like
* ["Computational science"](https://github.com/CliMA/Oceananigans.jl/discussions/categories/computational-science), or how to science and set up numerical simulations in Oceananigans, and
* ["Experimental features"](https://github.com/CliMA/Oceananigans.jl/discussions?discussions_q=experimental+features), which covers new and sparsely-documented features for those who like to live dangerously.
If you've got a question or something, anything! to talk about, don't hesitate to [start a new discussion](https://github.com/CliMA/Oceananigans.jl/discussions/new?).
* The [Oceananigans wiki](https://github.com/CliMA/Oceananigans.jl/wiki) contains practical tips for [getting started with Julia](https://github.com/CliMA/Oceananigans.jl/wiki/Installation-and-getting-started-with-Oceananigans), [accessing and using GPUs](https://github.com/CliMA/Oceananigans.jl/wiki/Accessing-GPUs-and-using-Oceananigans-on-GPUs), and [productive workflows when using Oceananigans](https://github.com/CliMA/Oceananigans.jl/wiki/Productive-Oceananigans-workflows-and-Julia-environments).
* The `#oceananigans` channel on the [Julia Slack](https://julialang.org/slack/), which accesses "institutional knowledge" stored in the minds of the amazing Oceananigans community.
* [Issues](https://github.com/CliMA/Oceananigans.jl/issues) and [pull requests](https://github.com/CliMA/Oceananigans.jl/pulls) also contain lots of information about problems we've found, solutions we're trying to implement, and dreams we're dreaming to make tomorrow better ๐.## Citing
If you use Oceananigans.jl as part of your research, teaching, or other activities, we would be grateful if you could cite our work and mention Oceananigans.jl by name.
```bibtex
@article{OceananigansJOSS,
doi = {10.21105/joss.02018},
url = {https://doi.org/10.21105/joss.02018},
year = {2020},
publisher = {The Open Journal},
volume = {5},
number = {53},
pages = {2018},
author = {Ali Ramadhan and Gregory LeClaire Wagner and Chris Hill and Jean-Michel Campin and Valentin Churavy and Tim Besard and Andre Souza and Alan Edelman and Raffaele Ferrari and John Marshall},
title = {{Oceananigans.jl: Fast and friendly geophysical fluid dynamics on GPUs}},
journal = {Journal of Open Source Software}
}
```We also maintain a [list of publications using Oceananigans.jl](https://clima.github.io/OceananigansDocumentation/stable/#Papers-and-preprints-using-Oceananigans). If you have work using Oceananigans.jl that you would like to have listed there, please open a pull request to add it or let us know!
## Contributing
If you're interested in contributing to the development of Oceananigans we want your help no matter how big or small a contribution you make!
Cause we're all in this together.If you'd like to work on a new feature, or if you're new to open source and want to crowd-source neat projects that fit your interests, you should [start a discussion](https://github.com/CliMA/Oceananigans.jl/discussions/new?) right away.
For more information check out our [contributor's guide](https://clima.github.io/OceananigansDocumentation/stable/contributing/).
## Movies
### [Deep convection](https://www.youtube.com/watch?v=kpUrxnKKMjI)
[![Watch deep convection in action](https://raw.githubusercontent.com/ali-ramadhan/ali-ramadhan.Github.io/master/img/surface_temp_3d_00130_halfsize.png)](https://www.youtube.com/watch?v=kpUrxnKKMjI)
### [Free convection](https://www.youtube.com/watch?v=yq4op9h3xcU)
[![Watch free convection in action](https://raw.githubusercontent.com/ali-ramadhan/ali-ramadhan.Github.io/master/img/free_convection_0956.png)](https://www.youtube.com/watch?v=yq4op9h3xcU)
### [Winds blowing over the ocean](https://www.youtube.com/watch?v=IRncfbvuiy8)
[![Watch winds blowing over the ocean](https://raw.githubusercontent.com/ali-ramadhan/ali-ramadhan.Github.io/master/img/wind_stress_0400.png)](https://www.youtube.com/watch?v=IRncfbvuiy8)
### [Free convection with wind stress](https://www.youtube.com/watch?v=ob6OMQgPfI4)
[![Watch free convection with wind stress in action](https://raw.githubusercontent.com/ali-ramadhan/ali-ramadhan.Github.io/master/img/wind_stress_unstable_7500.png)](https://www.youtube.com/watch?v=ob6OMQgPfI4)
## Performance benchmarks
We've performed some preliminary performance benchmarks (see the [performance benchmarks](https://clima.github.io/OceananigansDocumentation/stable/appendix/benchmarks/) section of the documentation) by initializing models of various sizes and measuring the wall clock time taken per model iteration (or time step).
This is not really a fair comparison as we haven't parallelized across all the CPU's cores so we will revisit these benchmarks once Oceananigans.jl can run on multiple CPUs and GPUs.
To make full use of or fully saturate the computing power of a GPU such as an Nvidia Tesla V100 or
a Titan V, the model should have around ~10 million grid points or more.Sometimes counter-intuitively running with `Float32` is slower than `Float64`. This is likely due
to type mismatches causing slowdowns as floats have to be converted between 32-bit and 64-bit, an
issue that needs to be addressed meticulously. Due to other bottlenecks such as memory accesses and
GPU register pressure, `Float32` models may not provide much of a speedup so the main benefit becomes
lower memory costs (by around a factor of 2).![Performance benchmark plots](https://user-images.githubusercontent.com/20099589/89906791-d2c85b00-dbb9-11ea-969a-4b8db2c31680.png)
Citation (CITATION.cff)
cff-version: 1.2.0 preferred-citation: type: article authors: - family-names: "Ramadhan" given-names: "Ali" orcid: "https://orcid.org/0000-0003-1102-1520" - family-names: "Wagner" given-names: "Gregory LeClaire" orcid: "https://orcid.org/0000-0001-5317-2445" - family-names: "Hill" given-names: "Chris" - family-names: "Jean-Michel" given-names: "Campin" - family-names: "Churavy" given-names: "Valentin" orcid: "https://orcid.org/0000-0002-9033-165X" - family-names: "Souza" given-names: "Andre" - family-names: "Edelman" given-names: "Adam" orcid: "https://orcid.org/0000-0002-9033-165X" - family-names: "Ferrari" given-names: "Raffaele" orcid: "https://orcid.org/0000-0003-1895-4294" - family-names: "Marshall" given-names: "John" title: "Oceananigans.jl: Fast and friendly geophysical fluid dynamics on GPUs" journal: "Journal of Open Source Software" doi: "10.21105/joss.02018" volume: 5 issue: 53 start: 2018 year: 2020
Owner metadata
- Name: Climate Modeling Alliance
- Login: CliMA
- Email: [email protected]
- Kind: organization
- Description: An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling
- Website: https://clima.caltech.edu
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/43161188?v=4
- Repositories: 67
- Last ynced at: 2023-03-03T21:04:27.588Z
- Profile URL: https://github.com/CliMA
GitHub Events
Total
- Create event: 1752
- Commit comment event: 521
- Release event: 174
- Delete event: 1337
- Member event: 16
- Pull request event: 2921
- Fork event: 169
- Issues event: 1794
- Watch event: 680
- Issue comment event: 11663
- Push event: 12088
- Gollum event: 65
- Pull request review event: 6163
- Pull request review comment event: 4933
Last Year
- Commit comment event: 126
- Create event: 354
- Delete event: 236
- Fork event: 36
- Issue comment event: 2701
- Issues event: 367
- Member event: 6
- Pull request event: 562
- Pull request review comment event: 1556
- Pull request review event: 1756
- Push event: 3783
- Release event: 28
- Watch event: 124
Committers metadata
Last synced: 2 days ago
Total Commits: 10,508
Total Committers: 68
Avg Commits per committer: 154.529
Development Distribution Score (DDS): 0.669
Commits in past year: 211
Committers in past year: 22
Avg Commits per committer in past year: 9.591
Development Distribution Score (DDS) in past year: 0.592
Name | Commits | |
---|---|---|
ali-ramadhan | a****n@g****m | 3475 |
Gregory Wagner | w****g@g****m | 2299 |
Simone Silvestri | s****0@g****m | 1718 |
Navid C. Constantinou | n****y | 1685 |
tomchor | t****r@g****m | 582 |
francispoulin | f****n@u****a | 267 |
Elise Palethorpe | e****y@g****m | 78 |
sandreza | a****a@g****m | 73 |
suyashbire1 | s****9@g****m | 45 |
hennyg888 | h****2@h****m | 38 |
Victoria Whitley | w****v@a****t | 37 |
christophernhill | c****h@m****u | 29 |
Jago Strong-Wright | j****w@p****m | 26 |
github-actions[bot] | 4****] | 19 |
Jean-Michel Campin | j****c@m****u | 13 |
Valentin Churavy | v****y@g****m | 13 |
CompatHelper Julia | c****y@j****g | 10 |
Simone Silvestri | s****i@d****u | 9 |
Josef Bisits | j****s@g****m | 6 |
iury simoes-sousa | i****t@p****e | 5 |
Alex Cavaliere | a****e@s****m | 5 |
Keaton J. Burns | k****s@g****m | 4 |
Tim Besard | t****d@g****m | 4 |
Kamontat Chantrachirathumrong | g****b@k****t | 4 |
Markus E | m****t@m****e | 3 |
Mohan Sha | m****n@g****m | 3 |
Simone Silvestri | s****t@M****U | 3 |
Simone Silvestri | s****i@S****l | 3 |
Josuรฉ Martรญnez Moreno | j****o@g****m | 2 |
William Moses | g****h@w****m | 2 |
and 38 more... |
Committer domains:
- mit.edu: 4
- uwaterloo.ca: 1
- att.net: 1
- julialang.org: 1
- dhcp-10-29-66-48.dyn.mit.edu: 1
- pm.me: 1
- sharpnotions.com: 1
- kamontat.net: 1
- mail.de: 1
- wsmoses.com: 1
- caltech.edu: 1
- pop-os.localdomain: 1
- gmx.de: 1
- jling.dev: 1
- cedar5.cedar.computecanada.ca: 1
- uci.edu: 1
- protonmail.ch: 1
- mac-barker-5-2.mit.edu: 1
- anu.edu.au: 1
- ulg.ac.be: 1
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 1,416
Total pull requests: 1,979
Average time to close issues: 6 months
Average time to close pull requests: 18 days
Total issue authors: 89
Total pull request authors: 63
Average comments per issue: 4.99
Average comments per pull request: 4.42
Merged pull request: 1,609
Bot issues: 0
Bot pull requests: 78
Past year issues: 160
Past year pull requests: 302
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 13 days
Past year issue authors: 29
Past year pull request authors: 27
Past year average comments per issue: 5.34
Past year average comments per pull request: 5.26
Past year merged pull request: 206
Past year bot issues: 0
Past year bot pull requests: 9
Top Issue Authors
- ali-ramadhan (409)
- glwagner (387)
- navidcy (206)
- tomchor (125)
- francispoulin (69)
- simone-silvestri (28)
- jagoosw (15)
- iuryt (13)
- mukund-gupta (8)
- suyashbire1 (8)
- Sumanshekhar17 (8)
- sandreza (7)
- xkykai (6)
- christophernhill (5)
- raphaelouillon (5)
Top Pull Request Authors
- glwagner (555)
- navidcy (423)
- ali-ramadhan (414)
- simone-silvestri (140)
- tomchor (125)
- github-actions[bot] (77)
- francispoulin (51)
- jagoosw (29)
- christophernhill (16)
- siddharthabishnu (14)
- iuryt (9)
- suyashbire1 (8)
- sandreza (8)
- vchuravy (7)
- elise-palethorpe (6)
Top Issue Labels
- bug ๐ (200)
- documentation ๐ (171)
- cleanup ๐งน (148)
- question ๐ญ (133)
- feature ๐ (132)
- user interface/experience ๐ป (129)
- abstractions ๐จ (115)
- testing ๐งช (99)
- numerics ๐งฎ (91)
- performance ๐๏ธ (86)
- GPU ๐พ (80)
- science ๐ (60)
- output ๐พ (54)
- package ๐ฆ (43)
- help wanted ๐ฆฎ (39)
- good first issue ๐ค (39)
- grids ๐บ๏ธ (34)
- distributed ๐ธ๏ธ (22)
- immersed boundaries โฐ๏ธ (19)
- ๐จ high priority ๐จ (18)
- turbulence closures ๐ (15)
- cubed sphere ๐ง๐ (13)
- boundary conditions ๐ (12)
- models ๐งซ (10)
- duplicate ๐งฌ (9)
- simulation ๐ฎ (7)
- ๐ฒ bikeshedding (3)
- multithreading ๐งต (2)
- biogeochemistry ๐ฆ (1)
- parameterizations (1)
Top Pull Request Labels
- documentation ๐ (233)
- bug ๐ (128)
- package ๐ฆ (98)
- cleanup ๐งน (88)
- testing ๐งช (86)
- numerics ๐งฎ (78)
- feature ๐ (78)
- user interface/experience ๐ป (63)
- GPU ๐พ (61)
- science ๐ (49)
- performance ๐๏ธ (49)
- grids ๐บ๏ธ (33)
- ๐จ DO NOT MERGE ๐จ (32)
- abstractions ๐จ (28)
- turbulence closures ๐ (28)
- output ๐พ (26)
- immersed boundaries โฐ๏ธ (25)
- distributed ๐ธ๏ธ (21)
- cubed sphere ๐ง๐ (20)
- boundary conditions ๐ (12)
- validation scripts ๐ ๐ผ (6)
- extensions ๐งฌ (6)
- models ๐งซ (6)
- biogeochemistry ๐ฆ (4)
- ๐ฒ bikeshedding (4)
- ๐จ high priority ๐จ (3)
- help wanted ๐ฆฎ (3)
- simulation ๐ฎ (3)
- good first issue ๐ค (3)
- experimental feature ๐งช (2)
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 4
- Total dependent repositories: 0
- Total versions: 235
juliahub.com: Oceananigans
๐ Julia software for fast, friendly, flexible, ocean-flavored fluid dynamics on CPUs and GPUs
- Homepage: https://clima.github.io/OceananigansDocumentation/stable
- Documentation: https://docs.juliahub.com/Oceananigans/hU93i/
- Licenses: MIT
- Latest release: 0.91.0 (published 5 days ago)
- Last Synced: 2024-05-10T09:04:34.648Z (2 days ago)
- Versions: 235
- Dependent Packages: 4
- Dependent Repositories: 0
-
Rankings:
- Stargazers count: 0.386%
- Forks count: 0.421%
- Average: 5.957%
- Dependent repos count: 6.056%
- Dependent packages count: 16.965%
Dependencies
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- julia 1.9.3 build
Score: 12.593292313296988