Veros

The versatile ocean simulator, in pure Python, powered by JAX.
Alternatives To Veros
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Lightgbm15,71627857312 hours ago34September 12, 2023345mitC++
A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
Js2,52214 years ago2November 07, 20169mitJavaScript
turbo.js - perform massive parallel computations in your browser with GPGPU.
Futhark2,203
a day ago60iscHaskell
:boom::computer::boom: A data-parallel functional programming language
Gpu Io1,1282a month ago16November 04, 20234mitTypeScript
A GPU-accelerated computing library for running physics simulations and other GPGPU computations in a web browser.
Ilgpu9583162 days ago54September 13, 202336otherC#
ILGPU JIT Compiler for high-performance .Net GPU programs
Learn Cuda Programming630
8 months ago5mitCuda
Learn CUDA Programming, published by Packt
Libgrape Lite345
a day ago1January 05, 20224apache-2.0C++
🍇 A C++ library for parallel graph processing (GRAPE) 🍇
Alpaka302
2 days ago185mpl-2.0C++
Abstraction Library for Parallel Kernel Acceleration :llama:
Cudpp299
5 years ago54otherCuda
CUDA Data Parallel Primitives Library
Veros274
2 days ago20mitPython
The versatile ocean simulator, in pure Python, powered by JAX.
Alternatives To Veros
Select To Compare


Alternative Project Comparisons
Readme

Versatile Ocean Simulation in Pure Python

Documentation status Test status Code Coverage DOI

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?

0.250.25 high-resolution model spin-up

(0.250.25 high-resolution model spin-up, click for better quality)

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 = {Hfner, Dion and Jacobsen, Ren Lwe 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.

Popular Gpu Projects
Popular Parallel Projects
Popular Hardware Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Python
Gpu
Parallel
Multicore
Geophysics