Skip to content

MAPL 2.60.0

Choose a tag to compare

@mathomp4 mathomp4 released this 11 Sep 18:10
· 158 commits to main since this release
dff5b5a

DOI

This release of MAPL has fixes and updates. Among the fixes are ones for NRL solar constant reads (when cycling over Cycle24) and fixes for NVHPC builds.

There are also two major changes. First, the default VERSION for HISTORY.rc is now 1 instead of 0. Nearly all GEOS History RC files have had VERSION: 1 at the top for many years and rely on functionality from it (e.g., using GRID_LABELS to specify grids). However, it was found that when this was accidentally left off by a user, the resulting run behavior was confusing as the symptoms were not obvious.

The other change is an enhancement of the MAPL Automatic Code Generator (ACG) which also fixes a bug in the Python. However, this bugfix can have an effect if a gridded component had a StateSpecs file that could trigger the bug. The issue was one of the "columns" a StateSpecs file can have is for how to handle fields restarts. MAPL has options like MAPL_RestartOptional and MAPL_RestartSkip that tell MAPL if a field is optional (if not present, that's okay) or skippable (if not present, okay, and do not write).

The ACG has allowed two ways for users to specify these options. You could use OPT or MAPL_RestartOptional and SKIP or MAPL_RestartSkip. The bug was that if a user didn't use the abbreviated option, the ACG did not emit the corresponding line.

An exemplar StateSpecs would be:

category: INTERNAL
#----------------------------------------------------------------------------------------
#  VARIABLE                | DIMENSION        |          Additional Metadata
#----------------------------------------------------------------------------------------
  NAME | UNITS | DIMS | VLOC | UNGRIDDED | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME
#----------------------------------------------------------------------------------------
 SS              |kg kg-1| xyz  | C    | self%nbins | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sea Salt Mixing Ratio (bin %d)
 DEEP_LAKES_MASK |   1   | xy   | N    |            | MAPL_RestartSkip     | F |                           | Deep Lakes Mask

Here we have two fields one, SS is MAPL_RestartOptional, and DEEP_LAKES_MASK is MAPL_RestartSkip. The difference in emitted code between MAPL 2.59 (and earlier) and MAPL 2.60 is:

@@ -15,6 +15,7 @@
         & dims=MAPL_DimsHorzVert, &
         & vlocation=MAPL_VlocationCenter, &
         & ungridded_dims=[self%nbins], &
+        & restart=MAPL_RestartOptional, &
         & add2export=.true., &
         & friendlyto='DYNAMICS:TURBULENCE:MOIST', &
         & long_name='Sea Salt Mixing Ratio (bin %d)', &
@@ -26,6 +27,7 @@
         & units='1', &
         & dims=MAPL_DimsHorzOnly, &
         & vlocation=MAPL_VlocationNone, &
+        & restart=MAPL_RestartSkip, &
         & add2export=.false., &
         & long_name='Deep Lakes Mask', &
         & _RC)

MAPL 2.60 now correctly emits the restart= line. Now, for fields that use MAPL_RestartOptional instead of OPT the bug was a no-op. In MAPL, if there is no restart= line, the default to do is MAPL_RestartOptional. But the other MAPL_Restart* options would be affected.

For GEOSgcm, the only StateSpecs file that is affected is SS2G_StateSpecs.rc. So for GEOSgcm, when you compare a run with MAPL 2.59 to MAPL 2.60, the ss_internal_checkpoint will not have the DEEP_LAKES_MASK variable since it is now correctly skipped.

NOTE: The presence of DEEP_LAKES_MASK does not affect the state of the model. This mask is recomputed on each run and is constant.


This version of MAPL was tested with:

  • Intel Fortran Classic (ifort) 2021.6.0 and 2021.13
  • Intel Fortran (ifx) 2025.0
  • GCC 13.2.0 and 14.2.0
  • NAG 7.2

The libraries this version of MAPL is currently tested with are below.

  • Baselibs 8.18.0
    • netcdf-c 4.9.2
    • netcdf-fortran 4.6.1
    • ESMF 8.9.0 (Note: MAPL only requires 8.6.1 at the moment)
    • GFE 1.19.0
      • gFTL 1.15.2
      • gFTL-shared 1.10.0
      • pFUnit 4.11.1 (optional)
      • fArgParse 1.9.0 (if -DBUILD_WITH_FARGPARSE=YES, default=YES)
      • pFlogger 1.16.1 (if -DBUILD_WITH_PFLOGGER=YES, default=YES)
    • UDUNITS2 2.28.8

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

  • ESMA_cmake v3.64.0

We recommend most external users set -DUSE_F2PY=OFF

We also require CMake 3.24 or higher.


From CHANGELOG.md

Fixed

  • Fix NRL Solar Constant read routine for cycle-Cycle24 option
  • Change a few keyword names in sampler for consistency with HISTORY
  • Fixes for NVHPC: Move some subroutines in MAPL_MaskMod from submodule to module
  • Fix for NAG + macOS Arm which does not support IEEE halting properly

Changed

  • Updated the default VERSION in History to 1 (which has been the effective default in HISTORY.rc for some time)
  • Update components.yaml
    • ESMA_env v5.13.0
      • Update to Baselibs 8.18.0
        • ESMF 8.9.0
        • curl 8.15.0
        • NCO 5.3.4
        • CDO 2.5.3
        • nccmp 1.10.0.0
        • Removed szip, added libaec
          • Note: To use libaec correctly, users should use ESMA_cmake v3.63.0/v4.20.0 or higher
    • ESMA_cmake v3.64.0
      • Support for libaec
      • Add FindISSM.cmake
  • Update CI to use Baselibs 8.18.0
  • Allow row lookups to return key if key in values (ACG2)

What's Changed

Full Changelog: v2.59.0...v2.60.0