A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Veros

Powerful tool that makes high-performance ocean modeling approachable and fun.
https://github.com/team-ocean/veros

Category: Hydrosphere
Sub Category: Ocean Models

Keywords

climate distributed geophysics gpu jax multi-core oceanography parallel python

Keywords from Contributors

transformations measuring compose archives reporter numeric observation opencl parallel-computing tokenizer

Last synced: 16 minutes ago
JSON representation

Repository metadata

The versatile ocean simulator, in pure Python, powered by JAX.

README.md

Veros, the versatile ocean simulator, aims to be the swiss army knife of ocean modeling. It is a full-fledged primitive equation ocean model that supports anything between idealized toy models and realistic, high-resolution, global ocean simulations. And because Veros is written in pure Python, the days of struggling with complicated model setup workflows, ancient programming environments, and obscure legacy code are finally over.

In a nutshell, we want to enable high-performance ocean modelling with a clear focus on flexibility and usability.

Veros supports a NumPy backend for small-scale problems, and a
high-performance JAX backend
with CPU and GPU support. It is fully parallelized via MPI and supports
distributed execution on any number of nodes, including multi-GPU architectures (see also our benchmarks).

The dynamical core of Veros is based on pyOM2, an ocean model with a Fortran backend and Fortran and Python frontends.

To learn more about Veros, make sure to visit our documentation.

How about a demonstration?

Features

Veros provides

  • a fully staggered 3-D grid geometry (C-grid)
  • support for both idealized and realistic configurations in
    Cartesian or pseudo-spherical coordinates
  • several friction and advection schemes
  • isoneutral mixing, eddy-kinetic energy, turbulent kinetic energy,
    and internal wave energy parameterizations
  • several pre-implemented diagnostics such as energy fluxes,
    variable time averages, and a vertical overturning stream function
    (written to netCDF4 output)
  • pre-configured idealized and realistic set-ups that are ready to
    run and easy to adapt
  • accessibility and extensibility - thanks to the
    power of Python!

Veros for the impatient

A minimal example to install and run Veros:

$ pip install veros
$ veros copy-setup acc --to /tmp/acc
$ veros run /tmp/acc/acc.py

For more detailed installation instructions, have a look at our
documentation
.

Basic usage

To run Veros, you need to set up a model --- i.e., specify which settings
and model domain you want to use. This is done by subclassing the
VerosSetup base class in a setup script that is written in Python. You
should use the veros copy-setup command to copy one into your current
folder. A good place to start is the
ACC model:

$ veros copy-setup acc

After setting up your model, all you need to do is call the setup and
run methods on your setup class. The pre-implemented setups can all be
executed via veros run:

$ veros run acc.py

For more information on using Veros, have a look at our
documentation
.

Contributing

Contributions to Veros are always welcome, no matter if you spotted an
inaccuracy in the documentation, wrote a
new setup, fixed a bug, or even extended Veros' core mechanics. There
are 2 ways to contribute:

  1. If you want to report a bug or request a missing feature, please
    open an issue. If you
    are reporting a bug, make sure to include all relevant information
    for reproducing it (ideally through a minimal code sample).
  2. If you want to fix the issue yourself, or wrote an extension for
    Veros - great! You are welcome to submit your code for review by
    committing it to a repository and opening a pull
    request
    . However,
    before you do so, please check the contribution
    guide

    for some tips on testing and benchmarking, and to make sure that
    your modifications adhere with our style policies. Most importantly,
    please ensure that you follow the PEP8
    guidelines
    , use
    meaningful variable names, and document your code using
    Google-style
    docstrings
    .

How to cite

If you use Veros in scientific work, please consider citing the following publication:

@article{hafner_veros_2018,
	title = {Veros v0.1 – a fast and versatile ocean simulator in pure {Python}},
	volume = {11},
	issn = {1991-959X},
	url = {https://gmd.copernicus.org/articles/11/3299/2018/},
	doi = {10.5194/gmd-11-3299-2018},
	number = {8},
	journal = {Geoscientific Model Development},
	author = {Häfner, Dion and Jacobsen, René Løwe and Eden, Carsten and Kristensen, Mads R. B. and Jochum, Markus and Nuterman, Roman and Vinter, Brian},
	month = aug,
	year = {2018},
	pages = {3299--3312},
}

Or have a look at our documentation
for more publications involving Veros.

Citation (CITATION.cff)

authors:
  - family-names: Häfner
    given-names: Dion
  - family-names: Jacobsen
    given-names: René Løwe
  - family-names: Nuterman
    given-names: Roman
  - family-names: Jochum
    given-names: Markus
cff-version: 1.2.0
message: "If you use this software, please cite the article from preferred-citation."
title: Veros
url: "https://github.com/team-ocean/veros"
preferred-citation:
  type: article
  title: "Veros v0.1 – a fast and versatile ocean simulator in pure Python"
  authors:
    - family-names: Häfner
      given-names: Dion
    - family-names: Jacobsen
      given-names: René Løwe
    - family-names: Eden
      given-names: Carsten
    - family-names: Kristensen
      given-names: Mads R. B.
    - family-names: Jochum
      given-names: Markus
    - family-names: Nuterman
      given-names: Roman
    - family-names: Vinter
      given-names: Brian
  year: 2018
  journal: "Geoscientific Model Development"
  volume: 11
  issue: 8
  pages: "3299-3312"
  doi: "10.5194/gmd-11-3299-2018"
  url: "https://gmd.copernicus.org/articles/11/3299/2018/"

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 5 days ago

Total Commits: 1,550
Total Committers: 17
Avg Commits per committer: 91.176
Development Distribution Score (DDS): 0.415

Commits in past year: 101
Committers in past year: 2
Avg Commits per committer in past year: 50.5
Development Distribution Score (DDS) in past year: 0.05

Name Email Commits
Dion Häfner m****l@d****e 907
dependabot[bot] 4****] 479
René Løwe Jacobsen r****j@r****t 54
Roman Nuterman n****n@n****k 33
dependabot-preview[bot] 2****] 24
Jonas la Cour j****r@J****l 15
Jonas la Cour j****1@g****m 10
Jonas la Cour j****r@J****m 7
Roman Nuterman n****k@R****l 7
Roman Nuterman n****k@d****k 7
Bruno P. Kinoshita b****k@y****r 1
Jesper Pedersen 3****n 1
Mads R. B. Kristensen m****k@g****m 1
Tomas Chor t****r@g****m 1
Jonas Dornonville de la Cour j****r@m****r 1
Dion Häfner d****r@w****e 1
iury simoes-sousa i****t@p****e 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 77
Total pull requests: 644
Average time to close issues: 9 months
Average time to close pull requests: 3 days
Total issue authors: 23
Total pull request authors: 9
Average comments per issue: 3.18
Average comments per pull request: 0.82
Merged pull request: 601
Bot issues: 0
Bot pull requests: 539

Past year issues: 10
Past year pull requests: 116
Past year average time to close issues: 19 days
Past year average time to close pull requests: 2 days
Past year issue authors: 6
Past year pull request authors: 2
Past year average comments per issue: 5.2
Past year average comments per pull request: 0.16
Past year merged pull request: 101
Past year bot issues: 0
Past year bot pull requests: 111

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/team-ocean/veros

Top Issue Authors

  • dionhaefner (30)
  • Sougata18 (10)
  • nutrik (7)
  • AminMoradiXL (3)
  • jklymak (3)
  • jonnyhtw (2)
  • sb4233 (2)
  • HY11111111 (2)
  • Titouan-Moulin (2)
  • fabien-roquet (2)
  • HuangLianghong (2)
  • RasmusRanumHansen (1)
  • mapirooznia (1)
  • devyani2509 (1)
  • tomchor (1)

Top Pull Request Authors

  • dependabot[bot] (513)
  • dionhaefner (88)
  • dependabot-preview[bot] (26)
  • nutrik (12)
  • jrpedersen (1)
  • tomchor (1)
  • jklymak (1)
  • iuryt (1)
  • kinow (1)

Top Issue Labels

  • enhancement (15)
  • bug (6)
  • help wanted (3)
  • good first issue (2)

Top Pull Request Labels

  • dependencies (539)
  • python (6)
  • enhancement (1)

Package metadata

pypi.org: veros

The versatile ocean simulator, in pure Python, powered by JAX.

  • Homepage: https://veros.readthedocs.io
  • Documentation: https://veros.readthedocs.io/
  • Licenses: MIT
  • Latest release: 1.5.2 (published 3 months ago)
  • Last Synced: 2025-04-26T06:02:26.389Z (1 day ago)
  • Versions: 20
  • Dependent Packages: 0
  • Dependent Repositories: 4
  • Downloads: 537 Last month
  • Rankings:
    • Dependent repos count: 7.484%
    • Dependent packages count: 10.119%
    • Average: 14.252%
    • Downloads: 25.151%
  • Maintainers (1)

Dependencies

doc/requirements.txt pypi
  • Pillow ==9.2.0
  • Sphinx ==5.0.2
  • click ==8.1.3
  • cmocean ==2.0
  • entrypoints ==0.4
  • ipython ==8.4.0
  • matplotlib ==3.5.2
  • netCDF4 ==1.6.0
  • sphinx-rtd-theme ==1.0.0
  • xarray ==2022.3.0
requirements.txt pypi
  • click ==8.1.3
  • entrypoints ==0.4
  • h5netcdf ==1.0.1
  • h5py ==3.7.0
  • loguru ==0.6.0
  • numpy ==1.23.1
  • pillow ==9.2.0
  • requests ==2.28.1
  • scipy ==1.8.1
  • tqdm ==4.64.0
requirements_jax.txt pypi
  • jax ==0.3.14
  • jaxlib *
.github/workflows/build-docs.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/deploy.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/pre-commit.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • pre-commit/action v2.0.0 composite
.github/workflows/test-all.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • codecov/codecov-action v1 composite
.github/workflows/test-conda.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/test-install.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite

Score: 15.039275989536389