Transition to ESMF-5

Revision as of 07:13, 27 March 2013 by Mathomp4 (talk | contribs) (Important Interface Changes)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

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