Home

Awesome

fv3gfs-wrapper (import fv3gfs.wrapper), is a Python wrapper for the FV3GFS global climate model.

See the documentation for more detailed instructions.

This is currently alpha development software used for research. If you would like to contribute to or collaborate on the software, please get in touch with jeremym@vulcan.com or another developer.

Running the tests as they are currently written requires private credentials to google cloud services, as the data access is set to "requester pays". To run the tests and examples with your credentials, set an environment variable GOOGLE_APPLICATION_CREDENTIALS as a path to your JSON key file. (E.g., export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json) Note: your project will incur some data transfer charges if you run these tests or examples.

Checking out

This package uses submodules. After you check out the repository, you must run git submodule update --init --recursive in the root directory of this package.

Local Machine Installation

The Docker image can be built using make build-docker, or built and then tested using make test-docker (which will use the existing build if present). The first time you build, both ESMF and FMS will be built, taking up quite a lot of time. On subsequent builds, these may be retrieved from cached images, if you allow caching on your system.

The ESMF, FMS, MPICH, and Serialbox images can instead be retrieved from docker if you build with the flag BUILD_FROM_INTERMEDIATE=y make build-docker. This can greatly decrease build time.

On a host, the package can be built using make build, and then installed in development mode with pip install -e ..

This package only supports linux and Python 3.5 or greater.

Building Docs

Once the docker image is built, the documentation can be built and shown using:

make docs-docker

This will produce html documentation in docs/html.

Iterative development

When making changes to the Fortran source code, you may want to rebuild just part of the model, keeping build artifacts between rebuilds. You can do this by running the docker image with bind-mounts into your local filesystem. Just be sure to make clean when you're done to remove the build artifacts, or it may cause problems when you build the docker image.

With the image already built by make build-docker or pulled using docker pull us.gcr.io/vcm-ml/fv3gfs-wrapper:gnu7-mpich314-nocuda, run dev_docker.sh. This will bind-mount the fv3gfs, lib, tests, external, and templates directories into the docker image. Inside the docker image, you can build or re-build the model with make build inside the /fv3gfs-wrapper directory, and run the test suite with make test.

Re-building the model inside the image is necessary since your local filesystem won't already have the build artifacts necessary to build the compiled wrapper.

Usage

Example run scripts are included in examples/runfiles. These run scripts act as a drop-in replacement for fv3.exe, and get executed in the same way, using mpirun:

mpirun -np 6 python online_code.py

Running these files requires them to be placed inside a valid run directory. This is done automatically if you run them using fv3run, as is done in the Makefile in that directory.