FAQ: Frequently Asked Questions
- When did ESMF begin and will it end?
- Is ESMF being used in any real codes?
- What platforms does ESMF run on?
- What's the performance overhead of using ESMF?
- What geophysical models does ESMF come with?
- What's the best way to get started?
- How does my code need to change to adopt ESMF?
- What are my download options?
- What does it mean to be ESMF compliant?
- How do I join the ESMF mailing lists?
- I have sent an email to esmf_support but have not heard back from anyone, what should I do?
- How often are tutorials conducted?
- Is there support forum so that I can talk to other users?
- How do I make a software contribution?
- How do I ask for a new feature?
- How do I find out if a method has been tested?
- How do I tell which beta snapshot I have downloaded?
- Does ESMF have Python bindings?
- How can I get ESMP?
- What do I need to use ESMP?
- Are there examples of what I can do with ESMP?
- How do I get help with ESMP?
The ESMF project started in early 2002 and has ongoing funding from NASA, the Department of Defense, NOAA, and NSF. We expect ESMF to be around for a long time!
Yes, ESMF is being used by the Community Earth System Model, the National Weather Service Global Forecast System and NOAA Environmental Modeling System at the National Centers for Environmental Prediction, by the GEOS atmospheric general circulation model at NASA Goddard, the coupled HYbrid Coordinate Ocean Model and CICE sea ice model at the Naval Research Laboratory, and many more. Overall there are more than seventy-five ESMF-ized components in the community.
It's typical to see a few percent overhead in adopting the ESMF superstructure. Many see no discernible increase in execution time. There are many detailed reports on ESMF performance.
We have used these steps as a working definition of ESMF compliance. However, the introduction of the National Unified Operational Prediction Capability (NUOPC) Layer, which includes conventions and tools that increase the interoperability of ESMF components, formalizes that definition for codes that use it. NUOPC also provides a compliance checker that can be linked in at run-time. The NUOPC code is still in development, but is bundled with the ESMF distribution 5.2.0r and later. If you have questions or would like to try the NUOPC code, please write ESMF support and we can get you started.
ESMF runs on virtually all high performance computing platforms. Since platforms change frequently, not all versions of ESMF run on every platform.
ESMF does not come with any numerical models. We work in a distributed model where groups create their own ESMF components and link to the ESMF software. ESMF tries to keep track of but does not provide the source code for these components.
If you're a modeler and have a specific model or model segment that you're interested in turning into an ESMF component, write to us at email@example.com. We can talk about what ESMF can do for you, how to partition a system into components, and steps in the adoption process. If you're a technical person and would like to participate in (or just listen in on) ESMF development discussions, join the ESMF Joint Specification Team (JST) mailing list, firstname.lastname@example.org. We occasionally have a telecon that is announced on the JST mailing list. If you would just like highlights from time to time on how ESMF is doing, join the email@example.com list.ESMF User's Guide: How to Adapt Applications for ESMF. That's an overview that should help get you started.
Latest Public Release
The latest public release is always available from our download page.
All releases are available under the download tab. Select "View all Releases" on the left navigation menu.
Beta snapshots via the Git repository
Checking out a tarball and untarring it in a single step:
|git archive --remote=git://esmf.git.sourceforge.net/gitroot/esmf/esmf --format=tar --prefix=esmf/ <TAG> | tar xf -|
<TAG> is the git tag (e.g. ESMF_X_Y_Z_beta_snapshot_01)
Click on the links below for the three primary ESMF mailing lists.
|firstname.lastname@example.org||ESMF Progress and Events|
|email@example.com||Joint Specification Technical Team Discussion|
Your support emails are very important to us, and we try to respond to them quickly even if it is just to let you know that we have received your request. The esmf_support mailing list is protected, however, and only those people who have downloaded the software, or who have been manually added are allowed to post. We check for pending posts on a weekly basis. If you have been waiting more than a week, please submit your post again, it is likely that it was not received.
Tutorials are conducted on an as needed basis. If you are interested in a tutorial, please send an email to firstname.lastname@example.org.
ESMF currently does not have a user forum. We have been considering such a feature. If a user forum would be useful to you, please drop us a line at email@example.com
Write to firstname.lastname@example.org and let us know what you're interested in contributing. We strongly encourage you to do this before you get started! We can point you to the processes and conventions you need to follow in order to get your software into the ESMF source code smoothly. Details are included in the ESMF Developer's Guide.
Write to email@example.com. If you'd like to talk with ESMF developers and other users about your feature request, writing support is a good starting point. We also have quarterly Change Review Board (CRB) telecons during which people can advocate that their feature be considered for inclusion on the development schedule. Let us know if you want to do that and we can get you on the agenda.
These lists are automatically generated on a weekly basis.
Once you have downloaded a beta snapshot via the Git command shown in this FAQ, there is no easy way to later determine which beta snapshot tag was used. However, we recommend that you include the tag name in the specified --prefix to help identify what was downloaded.
Yes, ESMF does have a prototype Python package, it is called ESMP. ESMF has a robust, parallel and scalable remapping package, used to generate remapping weights. It can handle a wide variety of grids and options: logically rectangular grids and unstructured meshes; regional or global grids; 2D or 3D; and pole and masking options. ESMP supports a single-tile logically rectangular discretization type called ESMP_Grid and an unstructured discretization type called ESMP_Mesh (ESMF also supports observational data streams). ESMP supports bilinear, finite element patch recovery and first-order conservative regridding. 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. Grid and Mesh objects can be created in 2D or 3D space, and 3D first-order conservative regridding is fully supported. Future plans for ESMP involve the incorporation of observational data streams.
Tarballs are available here.
You need Python 2.6 or higher, with ctypes and numpy. You also need a current ESMF installation, the 5.3.0 release is a good place to start. ESMP has been tested on Linux, Macintosh, and Cray systems with the GNU compilers. There is more information on ESMP dependencies and limitations in the documentation. There is more information on how to build an ESMF installation in the ESMF user's guide.
Certainly, see the tutorials.
You can get help with ESMP through the same channels as with ESMF, just write to firstname.lastname@example.org.