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

Pace

A implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the GT4Py domain-specific language in Python.
https://github.com/ai2cm/pace

Category: Atmosphere
Sub Category: Atmospheric Composition and Dynamics

Keywords

climate-modeling hpc python

Keywords from Contributors

measuring transformations compose archives observation reporter water numeric sharing animations

Last synced: about 14 hours ago
JSON representation

Repository metadata

Implementation of the FV3GFS / SHiELD atmospheric model in Python

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).

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:

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.

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:

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:

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:

git submodule update --init --recursive

Then build the pace docker image at the top level.

make build

Run

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 metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 4 days ago

Total Commits: 1,118
Total Committers: 29
Avg Commits per committer: 38.552
Development Distribution Score (DDS): 0.847

Commits in past year: 1
Committers in past year: 1
Avg Commits per committer in past year: 1.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
rheacangeo 5****o 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
eddie-c-davis 2****s 60
Johann Dahm j****d@v****m 60
FlorianDeconinck d****n@g****m 52
Rhea George R****G@R****l 50
Jeremy McGibbon j****m@a****g 39
oelbert o****6@g****m 36
Johann Dahm j****m@g****m 36
Oliver Fuhrer o****r 36
Chris Kung c****g@n****v 31
dependabot[bot] 4****] 30
Christopher Kung 6****g 11
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
dependabot-preview[bot] 2****] 4
Spencer Clark s****k@g****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:


Issue and Pull Request metadata

Last synced: 1 day ago

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 request: 27
Bot issues: 0
Bot pull requests: 53

Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/ai2cm/pace

Top Issue Authors

  • jdahm (8)
  • elynnwu (4)
  • FlorianDeconinck (4)
  • mcgibbon (2)
  • brianhenn (2)
  • miaoneng (1)
  • twicki (1)

Top Pull Request Authors

  • dependabot[bot] (53)
  • elynnwu (9)
  • jdahm (9)
  • mcgibbon (7)
  • twicki (6)
  • FlorianDeconinck (6)
  • ajdas1 (1)
  • oelbert (1)

Top Issue Labels

  • refactor (6)
  • enhancement (5)
  • bug (3)
  • question (2)

Top Pull Request Labels

  • dependencies (53)
  • blocked (2)
  • duplicate (1)

Package metadata

pypi.org: pace-util

  • Homepage: https://github.com/ai2cm/pace
  • Documentation: https://pace-util.readthedocs.io/
  • Licenses: BSD license
  • Latest release: 0.9.0 (published almost 3 years ago)
  • Last Synced: 2025-04-25T12:09:41.726Z (1 day ago)
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 136 Last month
  • Rankings:
    • Dependent packages count: 7.31%
    • Downloads: 10.198%
    • Average: 10.255%
    • Forks count: 10.554%
    • Stargazers count: 11.417%
    • Dependent repos count: 11.798%
  • Maintainers (4)

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

Score: 12.383565898134155