All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Re-export
PackedDateCreate,PackedTimeCreate,PackedDateTimeCreate(fromMAPL_PackedTimeMod) andStrTemplate(fromMAPL_StringTemplate) via themapl_mp_utilsAPI so they are accessible throughUSE MAPLwithout client code needing to reference internal submodules directly (fixes #4963).
-
Fix NVHPC compiler build failure in
superstructure/generic/OpenMP_Support.F90: replaceESMF_UserCompGetInternalStateandESMF_UserCompSetInternalStatewith their MAPL wrapper equivalents (MAPL_UserCompGetInternalState/MAPL_UserCompSetInternalState). -
Relaxed the comparison standard for grid_is_ok in case a grid is r4
-
Fix
mapl/MAPL.F90to usemapl_ErrorHandlingdirectly instead of the thinmapl_ErrorHandlingModwrapper, resolving anifxlinker issue with baremapl_return_thunks in client code. -
Fix vector component naming lifecycle in
superstructure/generic/specs/VariableSpec.F90andsuperstructure/generic/specs/VectorClassAspect.F90by using resolvedvector_component_nameswhen constructingVectorClassAspectand setting component field names during create-time rather than deferring in add-to-state (PR #4946). -
Fix client code in
gridcomps/andbase3g/broken by the Phase 9mapl3g_→mapl_rename: replace alluse mapl3g_*statements withuse MAPL(umbrella) oruse mapl_*(for symbols not yet re-exported by the umbrella). Affected files:ExtDataGridComp_private.F90,PrimaryExport.F90,ConfigurableGridComp.F90,StatisticsGridComp.F90,MAPL_OrbGridCompMod.F90,HistoryCollectionGridComp_private.F90,FileIOShared.F90,MAPL_LocStreamMod.F90,NCIO.F90,SimpleBundleMod.F90,StateItem.F90,FieldDictionaryConfig.F90, and associated test files ingridcomps/(#4944). -
Rename
mapl3g_TimeVariance,mapl3g_AbstractCovarianceKernel,mapl3g_ShiftedCovarianceKernel, andmapl3g_WelfordCovarianceKerneltomapl_prefix (modules added after Phase-9 branched from develop).
- Extended StatisticsGridComp to support variance of a single field.
- Extended
FieldBundleGetPointerToDatainterface with REAL64 pointer overloads for index/name and 2D/3D variants (PR #4948).
-
Rename all internal MAPL modules from
mapl_<Name>[Mod]tomapl_<Name>_modconvention (#4958). Affects 446 module definitions across 695 source files. Three thin-wrapper duplicate modules removed (mapl_ErrorHandlingMod,mapl_KeywordEnforcerMod,MAPL_ShmemMod). DuplicateVerticalAlignment.F90removed fromsuperstructure/generic/specs/(canonical copy remains ininfrastructure/vertical/vertical_grid/). Legacybase3g/Comms.F90retainsMAPL_CommsModname pending resolution of #4961.MAPL_Constantsretains its name as it functions as an umbrella module. -
Remove
MAPL_GridCompsModand enforce thatgridcomps/modulesuse MAPL(the umbrella module) rather than internal modules directly (#4959). -
Resolve Intel Fortran error #6450 (case-insensitive module/alias name collision) for 13 modules in
infrastructure/fields/whose module name matched their sole public symbol when renamed via USE aliases in the layer API modules. Fix: rename the internal module declarations by appendingImpl(e.g.mapl_FieldGet→mapl_FieldGetImpl,mapl_StateGet→mapl_StateGetImpl, etc.). The public API symbols (MAPL_FieldGet,MAPL_StateGet, etc.) and the API module names (mapl_Field_API,mapl_State_API, etc.) are unchanged. All internal consumers updated (#4944). Affected modules:mapl_FieldGet,mapl_FieldSet,mapl_FieldFill,mapl_FieldCreate,mapl_FieldBundleGet,mapl_FieldBundleSet,mapl_FieldBundleCopy,mapl_FieldBundleCreate,mapl_FieldBundleGetByIndex,mapl_FieldBundleGetPointer,mapl_StateGet,mapl_StateGetGeom,mapl_StateGetPointer,mapl_FieldBundleDestroy,mapl_StateDestroy,mapl_StateItem,mapl_StateAddMethod. -
Rename
mapl_GeomGet→mapl_GeomAccessorsandmapl_GridGet→mapl_GridAccessors(previously namedmapl_GeomQueries/mapl_GridQueriesin an earlier step) to resolve Intel Fortran error #6450. Also renamedmapl_GeomGetHorzIJIndexandmapl_GridGetHorzIJIndex(deprecated stub) intomapl_GeomAccessors. The*Accessorsnaming is consistent withmapl_FieldAccessorsand correctly describes modules that provide both read and write access to ESMF objects. All internal consumers updated. Public API symbols unchanged (#4944). -
Merge
mapl_GeomGetHorzIJIndexandmapl_GridGetHorzIJIndex(deprecated stub) intomapl_GeomGet(infrastructure/geom/geom/GeomGet.F90). All three were single-public-symbol modules causing Intel Fortran error #6450 (case-insensitive module/alias name collision ingeom/API.F90). Public names are nowmapl_GeomGet,mapl_GeomGetHorzIJIndex, andmapl_GridGetHorzIJIndexdirectly inmapl_GeomGet; unprefixed aliases retained for internal use.GeomGetHorzIJIndex.F90andGridGetHorzIJIndex.F90deleted (#4944). -
Consolidate
mapl_MaxMinandmapl_AreaMean(formerly inutils/arrays/) into a single modulemapl_ArrayReductionsinmp_utils/. Both are MPI-dependent parallel collective reductions and belong inMAPL.mp_utilsrather thanMAPL.utils. The public names are nowMAPL_MaxMinandMAPL_AreaMean(previouslyMaxMinandAreaMeanexposed via renaming aliases inmapl_Utilities). The old single-symbol modules caused Intel Fortran error #6450 (case-insensitive module name collision with USE rename aliases). Fixes build failure introduced in Phase 9 (#4944). -
Introduce
mp_utils/API.F90(module mapl_mp_utils) as the canonical layer-level re-export module forMAPL.mp_utils, following theAPI.F90pattern used bybase3g/,infrastructure/esmf/, etc. Replacesutils/utilities.F90(module mapl_Utilities) which was MPI-free in name but MPI-dependent in practice. The top-levelMAPLumbrella now usesmapl_mp_utilsinstead ofmapl_Utilities. Internal consumers updated. -
Phase 9 of MAPL v3 directory restructuring (#4905, closes #4944): rename all
mapl3g_module/submodule name prefixes tomapl_throughout the codebase (531 files, ~2400 substitutions). Themapl3g_prefix was a transitional namespace used during the MAPL2→MAPL3 migration; the two namespaces are now unified undermapl_. Client code should access all public symbols through the top-levelMAPLmodule rather thanuse-ing internalmapl_*modules directly. User-facing documentation indocs/updated to match. -
Dissolve
esmf_utils/stub: movecomms/(MAPL_Comms.F90, API.F90, and associated header files) intoinfrastructure/esmf/comms/; add sources toMAPL.esmftarget; removeadd_subdirectory(esmf_utils)from top-levelCMakeLists.txt. Part of the MAPL v3 directory restructuring (#4905). -
Dissolve
geom/stub: moveCMakeLists.txtbuild logic intoinfrastructure/geom/geom/CMakeLists.txt; removeadd_subdirectory(geom)from top-levelCMakeLists.txt.MAPL.geomtarget is now built entirely withininfrastructure/geom/. Part of the MAPL v3 directory restructuring (#4905). -
Create
infrastructure/esmf/(MAPL.esmf, Tier 3) consolidatingesmf_utils/,vm/,alarm/,hconfig/,hconfig_utils/, and ESMF-related files fromgeneric3g/. Backward-compatibility INTERFACE aliases provided for all five former library names. -
Phase 8 of MAPL v3 directory restructuring (#4905, closes #4942): lowercase remaining top-level directories:
mapl3g/→mapl/,Python/→python/,Tests/→tests/. Install paths updated to match (lib/Python→lib/python,${esma_include}/Tests→${esma_include}/tests). Dissolveshared/directory entirely:DownBit.F90moved tomp_utils/,ShaveMantissa.c/.hmoved toutils/,hinterp.F90deleted (dead code),MaplShared.F90deleted (umbrella module replaced by directuseof underlying modules in three consumers). Allshared/tests/pFUnit sources moved toutils/tests/and merged into itsCMakeLists.txt. A backward-compatibility INTERFACE aliasMAPL.shared → MAPL.mp_utilsis provided pending retirement of all internal consumers (tracked in #4942). -
Phase 7 of MAPL v3 directory restructuring (#4905, closes #4940): rename
Apps/→apps/; move pfio demo executables intopfio/programs/; renamemp_utils/profiler/demo/→mp_utils/profiler/examples/. -
Phase 6 of MAPL v3 directory restructuring (#4905, closes #4938): rename
gridcomps/subdirectories from legacy names to canonical lowercase names:cap3g/→cap/,History3G/→history/,ExtData3G/→extdata/,StatisticsGridComp/→statistics/,Orbit/→orbit/. CMake target names updated throughout:MAPL.cap3g→MAPL.cap,MAPL.history3g→MAPL.history,MAPL.extdata3g→MAPL.extdata,MAPL_StatisticsGridComp→MAPL.statistics. -
Phase 5 of MAPL v3 directory restructuring (#4905, closes #4930): consolidate
component/and the remainder ofgeneric3g/(after Phase 4 extractions) intosuperstructure/component/andsuperstructure/generic/respectively. Old top-level directories retained as stubs for backward compatibility. -
Phase 4 of MAPL v3 directory restructuring (#4905, closes #4925): consolidate
geom/,GeomIO/,regridder_mgr/,field/,field_bundle/,state/,vertical/,vertical_grid/, and ESMF-related sources intoinfrastructure/subdirectories. Several files frombase3g/moved tomp_utils/. Old top-level directories retained as stubs for backward compatibility. -
Create
utils/directory (MAPL.utils, Tier 1) as an MPI-free library consolidating serial-only sources fromshared/,utilities/, andgeneric3g/.MAPL.utilsdepends only on ESMF and OpenMP — no MPI. Part of the MAPL v3 directory restructuring (#4905, phase 2a, closes #4915). -
Remove direct MPI dependencies from
ErrorHandling.F90andMAPL_Throw.F90using a lazy-init procedure pointer pattern. Both modules now default to serialerror stopbehavior and are fully MPI-free. MPI-aware error handling (rank in error messages,MPI_Abort) is provided by the newMAPL_MpiErrorHandling.F90module; callMAPL_initialize_error_handling()once afterMPI_Initto register MPI-aware handlers. Serial and pFUnit programs require no changes.MAPL_ExceptionHandlingis now an alias defined inErrorHandling.F90rather than a separate file. Closes #4917, part of #4905. -
Create
enums/directory (MAPL.enums, Tier 0) and relocate 11 enum-like type definitions into it fromesmf_utils/,generic3g/, andcomponent/. No module names or interfaces changed; this is a pure file relocation. Part of the MAPL v3 directory restructuring (#4905, phase 1a, closes #4907). -
Several files were renamed, MAPL_InfoSet was replaced with ESMF_InfoSet.
-
Update
.mlc.tomlto ignore directories either brought in by mepo or created by opencode
- Add
docs/mapl3/diffs-from-mapl2.md— a comprehensive overview of the architectural and user-facing differences between MAPL v3 and MAPL v2. This document covers component structure, connections, field specifications, resource files, Cap/time-loop changes, History3G, ExtData, the new Statistics component, clocks, and build system changes. It is intended as the primary migration reference for developers and users moving from MAPL2 to MAPL3. - Add
docs/mapl3/api-changes.md— a procedure-level reference of core framework API changes: stubbed-out V2 procedures, new MAPL3 framework entry points (MAPL_initialize,MAPL_finalize,MaplFramework), and replacements for lifecycle, child management, field specs, connectivity, resource access, and timer APIs.
- Note to Developers: For MAPL v2 changes, please refer to the CHANGELOG.md for specific tags or for the [CHANGELOG.md in the
release/v2branch}(https://github.com/GEOS-ESM/MAPL/blob/release/v2/CHANGELOG.md). From now on, all MAPL v3 changes will be documented in this CHANGELOG.md file. Therelease/v2branch will continue to maintain its own CHANGELOG.md for v2-specific changes until the end of support for MAPL v2.