ESMPy: A Python Package for High-Performance Grid Remapping Using the Earth System Modeling Framework

- Indicates paper has been withdrawn from meeting
- Indicates an Award Winner
Tuesday, 4 February 2014: 9:15 AM
Room C302 (The Georgia World Congress Center )
Ryan O'Kuinghttons, CIRES/Univ. of Colorado, Boulder, CO; and R. Oehmke, C. Deluca, G. Theurich, P. P. Li, and J. Jacob

The Earth System Modeling Framework (ESMF) Python interface (ESMPy) promotes fast prototyping of coupled Earth system modeling codes by providing access to a high-performance and scalable grid remapping package. ESMPy presents a major improvement over a previous prototype, ESMP, by providing a more Pythonic experience through callable objects, a distutils based installation, improved capabilities for reading grids from file, and the ability to incorporate other packages useful for Earth system modeling. The main feature of ESMPy, the ESMF regridding package, is mature and robust and allows for high-performance and scalable regridding between 2D and 3D logically rectangular and unstructured grids using a variety of methods and options.

At the present time, the ESMPy supports bilinear, finite element patch recovery and first-order conservative methods. There is also an option to ignore unmapped destination points and mask out points on either the source or destination. Regridding on the sphere takes place in 3D Cartesian space, so the pole problem is not an issue as it can be with other Earth system grid remapping software. The previous Python interface to ESMF regridding, called ESMP (2012), provided interfaces that looked and functioned in a manner very similar to those in the ESMF Fortran interface. In ESMP, the functionality to create logically rectangular and unstructured grid objects from file was only partially completed, and the build system was based on GNU Make and uses environment variables. The ESMP package is still supported but it is no longer under active development.

ESMPy (2013), which is intended to replace ESMP, is designed to function in a more Pythonic fashion. The installation is done with distutils using a standard Python approach. The ability to create logically rectangular and unstructured grids from NetCDF files based on proposed Climate and Forecast conventions (GridSpec and UGRID, respectively), is complete. Several new examples have been added to the website, and the module structure has been organized to allow for incorporation of other helpful packages for Earth system modeling.

ESMPy requires Python 2.6, numpy 1.6.1 (which contains ctypes) and an ESMF installation. Numpy arrays and callable objects are used to access and modify object data allocated from within the ESMF library. ESMPy is regression tested nightly, and is supported on Darwin, Linux and Cray systems with the GNU compiler suite and OpenMPI communications.

As part of the greater ESMF project, ESMPy is distinguished by its strong emphasis on open source and access, community governance, and distributed development. The user base has grown quickly, and the package is being incorporated into several other software tools and frameworks. These include the Ultrascale Visualization Climate Data Analysis Tools (UV-CDAT), Iris, PyFerret, and the Community Surface Dynamics Modeling System (CSDMS).

Upcoming development plans for ESMPy involve incorporation of the Open Climate Geographic Information Systems (OCGIS) package to handle data manipulation between GIS and climate data formats. Also, incorporation of a discretization type for observational data streams, a higher order conservative regridding method, parallel input of grids from file, and support for other ESMF utilities like time keeping and components is anticipated.