Skip to content

MAPL 2.44.0

Compare
Choose a tag to compare
@mathomp4 mathomp4 released this 09 Feb 14:21
· 290 commits to main since this release
b09ae30

DOI

This release of MAPL has many new features and fixes. Among the new features and fixes are:

  • Various improvements to History "Samplers" that sample model data at geolocations of simulated instruments. These include support for both trajectories (time dependent lat/lon) and swaths (time-dependent scans)
  • Added memory utility, MAPL_MemReport that can be used in any code linking MAPL
  • Added capability in the MAPL ESMF regridding wrapper to apply a destination mask if the destination grid contains a mask
  • Updates for using MAPL with GEOS in a hybrid MPI+OpenMP paradigm
  • Various fixes for NVHPC work

Also, with this version of MAPL, we now require ESMF 8.6.0 as MAPL now uses functionality only supported in that version. Moreover, all references to ESMF as a CMake target are now done as ESMF::ESMF. This is supported in Baselibs build with ESMA_cmake v3.40.0 (required for Baselibs builds) and for non-Baselibs builds (i.e., spack) via a newer FindESMF.cmake file (currently from ESMF develop and will be in ESMF 8.6.1+).

Note though that builds using MAPL and using Baselibs (aka as GEOSgcm is currently run) are not required to move to the ESMF::ESMF target everywhere. ESMA_cmake adds aliases so that esmf, ESMF and ESMF::ESMF are all supported. The change to ESMF::ESMF was for external users who found that MAPL was bringing in ESMF as a target, but ESMF was not available so CMake was then added -lESMF to link lines which caused failures.


MAPL is currently tested with:

  • Intel Fortran Classic 2021.6.0 (Classic 2021.10.0 seems to work, ifx does not yet work)
  • GCC 12.3.0 (13 not supported)
  • NAG 7.1

The libraries this version of MAPL is currently tested with are below. NOTE: Changes here from MAPL 2.43 and earlier, namely ESMF and GFE

  • Baselibs 7.17.2
    • netcdf-c 4.9.2
    • netcdf-fortran 4.6.1
    • ESMF 8.6.0 (required)
    • GFE 1.12.0
      • gFTL 1.11.0
      • gFTL-shared 1.7.0
      • pFUnit 4.8.0 (optional)
      • fArgParse 1.6.0 (if -DBUILD_WITH_FARGPARSE=YES, default=YES)
      • pFlogger 1.11.0 (if -DBUILD_WITH_PFLOGGER=YES, default=YES)
      • FLAP geos/v1.10.0 (if -DBUILD_WITH_FLAP=YES, default=NO)

Also, if you build with Baselibs and/or -DUSE_F2PY=ON, you should use:

  • ESMA_cmake v3.40.0

We recommend most external users set -DUSE_F2PY=OFF


From CHANGELOG.md

Added

  • Added nf90 interface to read and write 1d string
  • Convert from ABI Fixed Grid to lon/lat coordinates used in MAPL_XYGridFactory (supporting geostationary GOES-R series)
  • Modify trajectory sampler for a collection with multiple platforms: P3B (air craft) + FIREX
  • Modify swath sampler to handle two Epoch swath grids
  • Handle regrid accumulate for time step (1 sec) during which no obs exists
  • Use IntState%stampoffset(n) to adjust filenames for an epoch time
  • parse "GOCART::CO2" from 'geovals_fields' entry in PLATFORM
  • Add call MAPL_InitializeShmem to ExtDataDriverGridComp.F90
  • Read swath data on root, call MAPL_CommsBcast [which sends data to Shmem (when Shmem initialized) or to MAPL_comm otherwise]. This approach avoids race in reading nc files [e.g. 37 files for 3 hr swath data]
  • Added memory utility, MAPL_MemReport that can be used in any code linking MAPL
  • Added capability in XY grid factory to add a mask to the grid any points are missing needed for geostationary input data
  • Added capability in the MAPL ESMF regridding wrapper to apply a destination mask if the destination grid contains a mask
  • Added INSTALL.md file to provide instructions on how to install MAPL

Changed

  • Updated ESMF required version to 8.6.0
  • Allocate gridded fields to use the pinflag option needed for the Single System Image (SSI) capability.
  • Made changes to allocate fields to use farray instead of farrayPtr. This allows explicit specification of indexflag required by the new MAPL field split functionality. This functionality allows a clean way to create a new field from an exiting field where the new field is a 'slice' of the existing field with the slicing index being that of the trailing ungiridded dim of the existing field.
  • Replaced RC=STATUS plus _VERIFY(RC) in Base_Base_implementation.F90 with just _RC in line with our new convention.
  • Updated CI to use Open MPI 5.0.0 for GNU
  • Enable Ninja for CI builds of MAPL
  • Removed use of ESMF_HAS_ACHAR_BUG CMake option and code use in MAPL_Config.F90. Testing has shown that with ESMF 8.6 (which is
    now required), NAG no longer needs this workaround.
  • Refactor the CircleCI workflows for more flexibility
  • Fix field utils issue - add npes argument to test subroutine decorators.
  • Change MAPL CMake to use ESMF::ESMF target instead of esmf or ESMF as the imported target name
    • Updated FindESMF.cmake to match that of ESMF develop as of commit da8f410. This will be in ESMF 8.6.1+
    • Requires ESMA_cmake 3.40.0 or later as this adds the ESMF::ESMF target ALIAS for Baselibs and non-Baselibs builds
  • Changed CMakePresets.json
    • Updated to version 7 and required CMake 3.27.0 (the minimum version that supports CMakePresets.json v7)
    • Changed build style on NCCS machines to by default put build and install directories in a user-specified directory so as not to
      pollute swdev

Fixed

  • Restore missing submodule interfaces
  • Explictly use some iso_c_binding types previously pulled in through ESMF. This is fixed in future ESMF versions (8.7+) and so
    we anticipate this here
  • Add explicit Fortran_MODULE_DIRECTORY to CMakeLists.txt in benchmarks to avoid race condition in Ninja builds
  • Add check to make sure ESMF was not built as mpiuni
  • Fixed failing tests for field_utils.
  • Various fixes for NVHPC work

What's Changed

Full Changelog: v2.43.2...v2.44.0