veros


Nameveros JSON
Version 1.5.1 PyPI version JSON
download
home_pagehttps://veros.readthedocs.io
SummaryThe versatile ocean simulator, in pure Python, powered by JAX.
upload_time2023-10-11 08:44:24
maintainer
docs_urlNone
authorDion Häfner (NBI Copenhagen)
requires_python>=3.8
licenseMIT
keywords oceanography python parallel numpy multi-core geophysics ocean-model mpi4py jax
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
<img src="doc/_images/veros-logo-400px.png?raw=true">
</p>

<p align="center">
<i>Versatile Ocean Simulation in Pure Python</i>
</p>

<p align="center">
  <a href="http://veros.readthedocs.io/?badge=latest">
    <img src="https://readthedocs.org/projects/veros/badge/?version=latest" alt="Documentation status">
  </a>
  <a href="https://github.com/team-ocean/veros/actions/workflows/test-all.yml">
    <img src="https://github.com/team-ocean/veros/actions/workflows/test-all.yml/badge.svg" alt="Test status">
  </a>
  <a href="https://codecov.io/gh/team-ocean/veros">
    <img src="https://codecov.io/gh/team-ocean/veros/branch/main/graph/badge.svg" alt="Code Coverage">
  </a>
  <a href="https://zenodo.org/badge/latestdoi/87419383">
    <img src="https://zenodo.org/badge/87419383.svg" alt="DOI">
  </a>
</p>

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](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021MS002717). 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](https://github.com/google/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](https://veros.readthedocs.io/en/latest/more/benchmarks.html)).

The dynamical core of Veros is based on [pyOM2](https://wiki.cen.uni-hamburg.de/ifm/TO/pyOM2), an ocean model with a Fortran backend and Fortran and Python frontends.

To learn more about Veros, make sure to [visit our documentation](https://veros.readthedocs.io/en/latest/).

#### How about a demonstration?

<p align="center">
  <a href="https://vimeo.com/391237951">
      <img src="doc/_images/veros-preview.gif?raw=true" alt="0.25×0.25° high-resolution model spin-up">
  </a>
</p>

<p align="center">
(0.25×0.25° high-resolution model spin-up, click for better
quality)
</p>

## 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:

```bash
$ 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](https://veros.readthedocs.io).

## 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](https://github.com/team-ocean/veros/blob/main/veros/setups/acc/acc.py):

```bash
$ 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`:

```bash
$ veros run acc.py
```

For more information on using Veros, have a look at [our
documentation](http://veros.readthedocs.io).

## Contributing

Contributions to Veros are always welcome, no matter if you spotted an
inaccuracy in [the documentation](https://veros.readthedocs.io), 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](https://github.com/team-ocean/veros/issues). 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](https://github.com/team-ocean/veros/pulls). However,
    before you do so, please check [the contribution
    guide](http://veros.readthedocs.io/quickstart/get-started.html#enhancing-veros)
    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](https://www.python.org/dev/peps/pep-0008/), use
    *meaningful* variable names, and document your code using
    [Google-style
    docstrings](http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html).

## How to cite

If you use Veros in scientific work, please consider citing [the following publication](https://gmd.copernicus.org/articles/11/3299/2018/):

```bibtex
@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](https://veros.readthedocs.io/en/latest/more/publications.html)
for more publications involving Veros.

            

Raw data

            {
    "_id": null,
    "home_page": "https://veros.readthedocs.io",
    "name": "veros",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "oceanography python parallel numpy multi-core geophysics ocean-model mpi4py jax",
    "author": "Dion H\u00e4fner (NBI Copenhagen)",
    "author_email": "dion.haefner@nbi.ku.dk",
    "download_url": "https://files.pythonhosted.org/packages/06/f0/5f5986f773696a9fa058035047dc8b7da425991c5ec50b56293e6c4824d5/veros-1.5.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n<img src=\"doc/_images/veros-logo-400px.png?raw=true\">\n</p>\n\n<p align=\"center\">\n<i>Versatile Ocean Simulation in Pure Python</i>\n</p>\n\n<p align=\"center\">\n  <a href=\"http://veros.readthedocs.io/?badge=latest\">\n    <img src=\"https://readthedocs.org/projects/veros/badge/?version=latest\" alt=\"Documentation status\">\n  </a>\n  <a href=\"https://github.com/team-ocean/veros/actions/workflows/test-all.yml\">\n    <img src=\"https://github.com/team-ocean/veros/actions/workflows/test-all.yml/badge.svg\" alt=\"Test status\">\n  </a>\n  <a href=\"https://codecov.io/gh/team-ocean/veros\">\n    <img src=\"https://codecov.io/gh/team-ocean/veros/branch/main/graph/badge.svg\" alt=\"Code Coverage\">\n  </a>\n  <a href=\"https://zenodo.org/badge/latestdoi/87419383\">\n    <img src=\"https://zenodo.org/badge/87419383.svg\" alt=\"DOI\">\n  </a>\n</p>\n\nVeros, *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](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021MS002717). 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.\n\n*In a nutshell, we want to enable high-performance ocean modelling with a clear focus on flexibility and usability.*\n\nVeros supports a NumPy backend for small-scale problems, and a\nhigh-performance [JAX](https://github.com/google/jax) backend\nwith CPU and GPU support. It is fully parallelized via MPI and supports\ndistributed execution on any number of nodes, including multi-GPU architectures (see also [our benchmarks](https://veros.readthedocs.io/en/latest/more/benchmarks.html)).\n\nThe dynamical core of Veros is based on [pyOM2](https://wiki.cen.uni-hamburg.de/ifm/TO/pyOM2), an ocean model with a Fortran backend and Fortran and Python frontends.\n\nTo learn more about Veros, make sure to [visit our documentation](https://veros.readthedocs.io/en/latest/).\n\n#### How about a demonstration?\n\n<p align=\"center\">\n  <a href=\"https://vimeo.com/391237951\">\n      <img src=\"doc/_images/veros-preview.gif?raw=true\" alt=\"0.25\u00d70.25\u00b0 high-resolution model spin-up\">\n  </a>\n</p>\n\n<p align=\"center\">\n(0.25\u00d70.25\u00b0 high-resolution model spin-up, click for better\nquality)\n</p>\n\n## Features\n\nVeros provides\n\n-   a fully staggered **3-D grid geometry** (*C-grid*)\n-   support for both **idealized and realistic configurations** in\n    Cartesian or pseudo-spherical coordinates\n-   several **friction and advection schemes**\n-   isoneutral mixing, eddy-kinetic energy, turbulent kinetic energy,\n    and internal wave energy **parameterizations**\n-   several **pre-implemented diagnostics** such as energy fluxes,\n    variable time averages, and a vertical overturning stream function\n    (written to netCDF4 output)\n-   **pre-configured idealized and realistic set-ups** that are ready to\n    run and easy to adapt\n-   **accessibility and extensibility** - thanks to the\n    power of Python!\n\n## Veros for the impatient\n\nA minimal example to install and run Veros:\n\n```bash\n$ pip install veros\n$ veros copy-setup acc --to /tmp/acc\n$ veros run /tmp/acc/acc.py\n```\n\nFor more detailed installation instructions, have a look at [our\ndocumentation](https://veros.readthedocs.io).\n\n## Basic usage\n\nTo run Veros, you need to set up a model --- i.e., specify which settings\nand model domain you want to use. This is done by subclassing the\n`VerosSetup` base class in a *setup script* that is written in Python. You\nshould use the `veros copy-setup` command to copy one into your current\nfolder. A good place to start is the\n[ACC model](https://github.com/team-ocean/veros/blob/main/veros/setups/acc/acc.py):\n\n```bash\n$ veros copy-setup acc\n```\n\nAfter setting up your model, all you need to do is call the `setup` and\n`run` methods on your setup class. The pre-implemented setups can all be\nexecuted via `veros run`:\n\n```bash\n$ veros run acc.py\n```\n\nFor more information on using Veros, have a look at [our\ndocumentation](http://veros.readthedocs.io).\n\n## Contributing\n\nContributions to Veros are always welcome, no matter if you spotted an\ninaccuracy in [the documentation](https://veros.readthedocs.io), wrote a\nnew setup, fixed a bug, or even extended Veros\\' core mechanics. There\nare 2 ways to contribute:\n\n1.  If you want to report a bug or request a missing feature, please\n    [open an issue](https://github.com/team-ocean/veros/issues). If you\n    are reporting a bug, make sure to include all relevant information\n    for reproducing it (ideally through a *minimal* code sample).\n2.  If you want to fix the issue yourself, or wrote an extension for\n    Veros - great! You are welcome to submit your code for review by\n    committing it to a repository and opening a [pull\n    request](https://github.com/team-ocean/veros/pulls). However,\n    before you do so, please check [the contribution\n    guide](http://veros.readthedocs.io/quickstart/get-started.html#enhancing-veros)\n    for some tips on testing and benchmarking, and to make sure that\n    your modifications adhere with our style policies. Most importantly,\n    please ensure that you follow the [PEP8\n    guidelines](https://www.python.org/dev/peps/pep-0008/), use\n    *meaningful* variable names, and document your code using\n    [Google-style\n    docstrings](http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html).\n\n## How to cite\n\nIf you use Veros in scientific work, please consider citing [the following publication](https://gmd.copernicus.org/articles/11/3299/2018/):\n\n```bibtex\n@article{hafner_veros_2018,\n\ttitle = {Veros v0.1 \u2013 a fast and versatile ocean simulator in pure {Python}},\n\tvolume = {11},\n\tissn = {1991-959X},\n\turl = {https://gmd.copernicus.org/articles/11/3299/2018/},\n\tdoi = {10.5194/gmd-11-3299-2018},\n\tnumber = {8},\n\tjournal = {Geoscientific Model Development},\n\tauthor = {H\u00e4fner, Dion and Jacobsen, Ren\u00e9 L\u00f8we and Eden, Carsten and Kristensen, Mads R. B. and Jochum, Markus and Nuterman, Roman and Vinter, Brian},\n\tmonth = aug,\n\tyear = {2018},\n\tpages = {3299--3312},\n}\n```\n\nOr have a look at [our documentation](https://veros.readthedocs.io/en/latest/more/publications.html)\nfor more publications involving Veros.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "The versatile ocean simulator, in pure Python, powered by JAX.",
    "version": "1.5.1",
    "project_urls": {
        "Homepage": "https://veros.readthedocs.io"
    },
    "split_keywords": [
        "oceanography",
        "python",
        "parallel",
        "numpy",
        "multi-core",
        "geophysics",
        "ocean-model",
        "mpi4py",
        "jax"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "06f05f5986f773696a9fa058035047dc8b7da425991c5ec50b56293e6c4824d5",
                "md5": "8beb7816439a6afc57222bf5534a1108",
                "sha256": "67cb1b8917b16c3df8fb0574c08b10be813546df9d9e6ec3475e864da26ec6c1"
            },
            "downloads": -1,
            "filename": "veros-1.5.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8beb7816439a6afc57222bf5534a1108",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 329667,
            "upload_time": "2023-10-11T08:44:24",
            "upload_time_iso_8601": "2023-10-11T08:44:24.775660Z",
            "url": "https://files.pythonhosted.org/packages/06/f0/5f5986f773696a9fa058035047dc8b7da425991c5ec50b56293e6c4824d5/veros-1.5.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-11 08:44:24",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "veros"
}
        
Elapsed time: 1.97186s