Coder Social home page Coder Social logo

oleksandr-pavlyk / veros Goto Github PK

View Code? Open in Web Editor NEW

This project forked from team-ocean/veros

0.0 0.0 0.0 28 MB

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

Home Page: https://veros.readthedocs.io

License: MIT License

Python 98.91% Cuda 0.42% C 0.04% Cython 0.63%

veros's Introduction

Documentation status Test status Code Coverage DOI

Veros is the versatile ocean simulator -- it aims to be a powerful tool that makes high-performance ocean modeling approachable and fun. Because Veros is a pure Python module, the days of struggling with complicated model setup workflows, ancient programming environments, and obscure legacy code are finally over.

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.

The underlying numerics are based on pyOM2, a Fortran ocean model developed at Institut für Meereskunde, Hamburg University.

Veros is currently being developed at Niels Bohr Institute, Copenhagen University.

How about a demonstration?

0.25×0.25° high-resolution model spin-up

(0.25×0.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 to choose from
  • 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 netCDF 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.

veros's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar dionhaefner avatar jrpedersen avatar kinow avatar madsbk avatar nutrik avatar rloewe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.