pace

Implementation of the FV3GFS / SHiELD atmospheric model in Python

https://github.com/ai2cm/pace

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 30 committers (10.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.1%) to scientific vocabulary

Keywords

climate-modeling hpc python

Keywords from Contributors

phase-transition climate physics fpga high-level-synthesis programming-language vivado-hls
Last synced: 6 months ago · JSON representation

Repository

Implementation of the FV3GFS / SHiELD atmospheric model in Python

Basic Info
Statistics
  • Stars: 38
  • Watchers: 6
  • Forks: 12
  • Open Issues: 21
  • Releases: 2
Topics
climate-modeling hpc python
Created over 4 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Changelog Contributing License

README.md

CircleCI Contributors Stargazers Issues Apache License

Pace

⚠️ READ-ONLY REPOSITORY ⚠️

Original development until v0.2 was executed under AI2 patronage. Maintenance and further development has been taken over by NOAA-GFDL and can be reached here.

Pace is an implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the GT4Py domain-specific language in Python. The model can be run on a laptop using Python-based backend or on thousands of heterogeneous compute nodes of a large supercomputer.

Full Sphinx documentation can be found at https://ai2cm.github.io/pace/.

Quickstart - bare metal

Build

Pace requires GCC > 9.2, MPI, and Python 3.8 on your system, and CUDA is required to run with a GPU backend. You will also need the headers of the boost libraries in your $PATH (boost itself does not need to be installed).

shell cd BOOST/ROOT wget https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz tar -xzf boost_1_79_0.tar.gz mkdir -p boost_1_79_0/include mv boost_1_79_0/boost boost_1_79_0/include/ export BOOST_ROOT=BOOST/ROOT/boost_1_79_0

When cloning Pace you will need to update the repository's submodules as well:

shell git clone --recursive https://github.com/ai2cm/pace.git

or if you have already cloned the repository:

git submodule update --init --recursive

We recommend creating a python venv or conda environment specifically for Pace.

shell python3 -m venv venv_name source venv_name/bin/activate

Inside of your pace venv or conda environment pip install the Python requirements, GT4Py, and Pace:

shell pip3 install -r requirements_dev.txt -c constraints.txt

Shell scripts to install Pace on specific machines such as Gaea can be found in examples/build_scripts/.

Run

With the environment activated, you can run an example baroclinic test case with the following command:

```shell mpirun -n 6 python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml

or with oversubscribe if you do not have at least 6 cores

mpirun -n 6 --oversubscribe python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml ```

After the run completes, you will see an output direcotry output.zarr. An example to visualize the output is provided in driver/examples/plot_output.py. See the driver example section for more details.

Quickstart - Docker

Build

While it is possible to install and build pace bare-metal, we can ensure all system libraries are installed with the correct versions by using a Docker container to test and develop pace.

First, you will need to update the git submodules so that any dependencies are cloned and at the correct version:

shell git submodule update --init --recursive

Then build the pace docker image at the top level.

shell make build

Run

shell make dev mpirun --mca btl_vader_single_copy_mechanism none -n 6 python3 -m pace.driver.run /pace/driver/examples/configs/baroclinic_c12.yaml

Running translate tests

See the translate tests section for more information.

Repository structure

The top-level directory contains the main components of pace such as the dynamical core, the physical parameterizations and utilities.

This git repository is laid out as a mono-repo, containing multiple independent projects. Because of this, it is important not to introduce unintended dependencies between projects. The graph below indicates a project depends on another by an arrow pointing from the parent project to its dependency. For example, the tests for fv3core should be able to run with only files contained under the fv3core and util projects, and should not access any files in the driver or physics packages. Only the top-level tests in Pace are allowed to read all files.

Graph of interdependencies of Pace modules, generated from dependences.dot

ML emulation

An example of integration of an ML model replacing the microphysics parametrization is available on the feature/microphysics-emulator branch.

Owner

  • Name: ai2cm
  • Login: ai2cm
  • Kind: organization
  • Location: Seattle WA, USA

AI2 Climate Modeling

GitHub Events

Total
  • Watch event: 1
  • Fork event: 1
Last Year
  • Watch event: 1
  • Fork event: 1

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 1,118
  • Total Committers: 30
  • Avg Commits per committer: 37.267
  • Development Distribution Score (DDS): 0.847
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
rheacangeo 5****o@u****m 171
Jeremy McGibbon j****m@v****m 156
Elynn Wu e****0@g****m 146
Jeremy McGibbon m****n@u****u 87
Tobias Wicky w****b@g****m 64
Johann Dahm j****d@v****m 60
eddie-c-davis 2****s@u****m 60
FlorianDeconinck d****n@g****m 52
Rhea George R****G@R****l 50
Jeremy McGibbon j****m@a****g 39
Johann Dahm j****m@g****m 36
oelbert o****6@g****m 36
Chris Kung c****g@n****v 31
dependabot[bot] 4****]@u****m 30
Oliver Fuhrer o****r@u****m 27
Christopher Kung 6****g@u****m 11
Oliver Fuhrer o****i@g****h 9
ajdas1 a****1@g****m 9
Rhea George r****g@v****m 8
Noah D Brenowitz n****2@g****m 6
Oliver Watt-Meyer o****m@v****m 5
Mark Cheeseman M****C@v****m 5
Rhea George r****g@a****g 4
Spencer Clark s****k@g****m 4
dependabot-preview[bot] 2****]@u****m 4
Brian Henn b****n@a****g 3
Eddie Davis e****d@v****m 2
Anna Kwa a****k@v****m 1
brianhenn b****n@g****m 1
yniederm y****n@s****h 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 22
  • Total pull requests: 92
  • Average time to close issues: 3 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 7
  • Total pull request authors: 8
  • Average comments per issue: 1.5
  • Average comments per pull request: 1.53
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 53
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • jdahm (8)
  • elynnwu (4)
  • FlorianDeconinck (4)
  • mcgibbon (2)
  • brianhenn (2)
  • miaoneng (1)
  • twicki (1)
Pull Request Authors
  • dependabot[bot] (51)
  • elynnwu (9)
  • jdahm (9)
  • mcgibbon (7)
  • FlorianDeconinck (7)
  • twicki (6)
  • ajdas1 (1)
  • oelbert (1)
Top Labels
Issue Labels
refactor (6) enhancement (5) bug (3) question (2)
Pull Request Labels
dependencies (51) blocked (2) duplicate (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 40 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 5
  • Total maintainers: 4
proxy.golang.org: github.com/ai2cm/pace
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
pypi.org: pace-util
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 40 Last month
Rankings
Dependent packages count: 7.3%
Downloads: 10.2%
Average: 10.3%
Forks count: 10.6%
Stargazers count: 11.4%
Dependent repos count: 11.8%
Maintainers (4)
Last synced: 6 months ago

Dependencies

Dockerfile docker
  • python 3.8.13-bullseye@sha256 build
examples/Dockerfile docker
  • ubuntu 20.04@sha256 build
requirements_dev.txt pypi
  • cftime * development
  • dace >=0.14 development
  • dask >=2021.10.0 development
  • f90nml >=1.1.0 development
  • fv3config >=0.9.0 development
  • mpi4py * development
  • nbmake * development
  • netCDF4 * development
  • numpy >=1.15 development
  • pytest * development
  • pytest-cov * development
  • pytest-profiling * development
  • pytest-regressions * development
  • pytest-subtests * development
  • xarray * development
  • zarr * development
requirements_docs.txt pypi
  • recommonmark *
  • sphinx >=1.4
  • sphinx-argparse *
  • sphinx-gallery *
  • sphinx_rtd_theme *
requirements_lint.txt pypi
  • pre-commit *
util/requirements.txt pypi
  • appdirs >=1.4.0
  • bump2version *
  • coverage *
  • dask >=2021.10.0
  • f90nml >=1.1.0
  • flake8 ==3.8.4
  • gcsfs >=0.7.0
  • google-cloud-storage *
  • h5netcdf *
  • h5py >=2.10.0
  • mypy ==0.790
  • numcodecs >=0.7.2
  • numpy >=1.15.
  • pytest-cov *
  • pytest-subtests *
  • sphinx_rtd_theme *
  • toolz *
  • tox *
  • wheel *
driver/setup.py pypi
dsl/setup.py pypi
fv3core/setup.py pypi
physics/setup.py pypi
pyproject.toml pypi
stencils/setup.py pypi
util/setup.py pypi