MAPL 2.60.0
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_MaskModfrom submodule to module - Fix for NAG + macOS Arm which does not support IEEE halting properly
Changed
- Updated the default
VERSIONin History to1(which has been the effective default inHISTORY.rcfor some time) - Update
components.yamlESMA_envv5.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_cmakev3.63.0/v4.20.0 or higher
- Note: To use libaec correctly, users should use
- Update to Baselibs 8.18.0
ESMA_cmakev3.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
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #3977
- Sampler code: change a few variable names by @metdyn in #3985
- Bump devops-infra/action-pull-request from 0.6.0 to 0.6.1 by @dependabot[bot] in #3986
- v2: Fix for NAG halting on macOS Arm by @mathomp4 in #4007
- v2: Update to ESMA_env 5.13.0, ESMA_cmake 3.64.0 by @mathomp4 in #4028
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #4035
- Bump actions/stale from 9 to 10 by @dependabot[bot] in #4036
- v2: Update Spack CI by @mathomp4 in #4039
- Allow lookups to return as value by @darianboggs in #4040
- Closes #4024. Change History to default VERSION: 1 by @mathomp4 in #4025
- Fixes #2623. Use modulo math for off-table Cycle24 recycling by @mathomp4 in #3972
- v2: Fixes for NVHPC Build by @mathomp4 in #3989
- v2: Prepare for 2.60 release by @mathomp4 in #4048
- GitFlow: Merge develop into main for 2.60 release by @mathomp4 in #4051
Full Changelog: v2.59.0...v2.60.0