Communication

As mentioned when discussing State, each process or “rank” on a cubed sphere is responsible for a subset of the cubed sphere grid. In order to operate, the model needs to know how to partition that cubed sphere into parts for each rank, and to be able to communicate data between those ranks.

Partitioning is managed by so-called “Partitioner” objects. The fv3gfs.util.CubedSpherePartitioner manages the entire cubed sphere, while the fv3gfs.util.TilePartitioner manages one of the six faces of the cube, or a region on one of those faces. For communication, we similarly have fv3gfs.util.CubedSphereCommunicator and fv3gfs.util.TileCommunicator. Please see their API documentation for an up-to-date list of current communications routines.