Transition to ESMF-5
Why ESMF-5?
- Version 5.2.0rp2 is the last public release from the ESMF core team
- More stable interfaces (standardization)
- Better performance
- Supports faster regridding (Ben’s testing)
- Conservative regridding
- Interoperability with other modeling groups
- Native methods for I/O methods for Fields and FieldBundles (read and write netCDF in parallel)
- Internal releases (6.1.0 released in November, 6.1.1 January 2013, 6.2.0 coming soon): no code changes are required!
- Next public release anticipated in the fall of 2013
Changes Between ESMF-4.0.0rp2 and ESMF-5.2.0.rp2
- Interface Changes between ESMF-4.0.0rp2 and ESMF-5.0.0
- Interface Changes between ESMF-5.0.0 and ESMF-5.1.0
- Interface Changes between ESMF-5.1.0 and ESMF-5.2.0 (PDF)
- Interface Changes between ESMF-5.1.0 and ESMF-5.2.0 (PDF)
- Interface Changes between ESMF-5.2.0 and ESMF-5.2.0r (PDF)
- Interface Changes between ESMF-5.2.0r and ESMF-5.2.0rp1 (PDF)
- There were no Interface Changes between ESMF-5.2.0rp1 and ESMF-5.2.0rp2
Key Differences
- use ESMF_Mod -> use ESMF
- keyword arguments are now required for all optional arguments
- Argument name changes
- Ordering of items in container classes (ESMF_State and ESMF_FieldBundle)
Important Interface Changes
- ESMF_Initialize
- Add logKindFlag=ESMF_LOGKIND_NONE
- ESMF_GridCompSetEntryPoint (and MAPL_GridCompSetEntryPoint):
- ESMF_SETINIT -> ESMF_METHOD_INITIALIZE
- ESMF_SETRUN -> ESMF_METHOD_RUN
- ESMF_SETFINAL -> ESMF_METHOD_FINALIZE
- ESMF_StateAdd
- ESMF_FieldBundleAdd
- Both calls now require a list (vector!) of fields, or fieldBundles.
We suggest to use MAPL wrappers:
- MAPL_StateAdd
- MAPL_FieldBundleAdd
Status of the Transition
- Ganymed-3_0 just released
- Zero diffs for restarts and history output
- Ability to read/write netCDF restarts
- Switch to MVAPICH2 (from Intel MPI 3)
- Switch to Intel 13 real soon
- Note that the order of variable in netCDF output in now alphabetical and comparison with previous output is more involved
- SI team plans to convert:
- DAS
- Coupled Model
- MAPL Tutorials
Known Issues
- Better garbage collection by VM_Finalize
- This might cause crashes inside ESMF_Finalize
- Workaround: call MPI_Finalize instead
Summary
- Do not rely on order inside ESMF_State or ESMF_FieldBundle
- Make use of MAPL
- If you have issues with converting your code, see any SI team member