Add MAPL3 vs MAPL2 differences documentation#4555
Add MAPL3 vs MAPL2 differences documentation#4555tclune wants to merge 16 commits intorelease/MAPL-v3from
Conversation
Adds docs/mapl3/diffs-from-mapl2.md as the primary migration reference for developers moving from MAPL2 to MAPL3. Adds a Documentation section to the v3.0.0 CHANGELOG entry pointing to this document. Closes #4554
- Rename [v3.0.0 - Development] to [v3.0.0-alpha-0] - Remove low-level changelog items from CHANGELOG.md - Append raw changelog items to diffs-from-mapl2.md Section 12 for peer review and triage - Use GitHub IDs (@atrayano, @bena-nasa) in review table
- Add per-component scheduling (timestep, reference_time, offset) - Add generic3g / mapl3g_ prefix / ESMF_CONTEXT_PARENT_VM detail - Expand unit conversion description in Connections section - Add ACG3 new columns table (ALIAS, add2export, RESTART enum) - Expand HConfig section with MAPL_GetResource detail - Expand History3G with time accumulation, vertical/ungridded dims, wildcard specs, and expression field extraction - Remove Section 12 (triage complete)
tclune
left a comment
There was a problem hiding this comment.
We should document a difference in how pFlogger is used.
In MAPL2, each user gridcomp had a logger that is identified by the "full" name of the component in the hierarchy. E.g., 'GCM.AGCM.PHYS.CHEM.GOCART2G.DU'. In MAPL3 we just use the "final" name 'DU'. This simplifies the resource file for logging, but makes it more difficult to change debug level for an entire hierarchy.
….md [skip ci] - Add docs/mapl3/api-changes.md: procedure-level reference of core framework API changes between MAPL2 and MAPL3 (stubbed V2 APIs, new framework entry points, lifecycle/child/field-spec/connectivity/resource/timer replacements) - Add See Also section and ToC cross-reference in diffs-from-mapl2.md - Update CHANGELOG [v3.0.0-alpha-0] entry to include api-changes.md
MAPL2 uses full hierarchical logger names (e.g. GCM.AGCM.PHYS.DU); MAPL3 uses only the short component name (e.g. DU). Documents the trade-offs and migration note for logging.yaml resource files.
| In MAPL2, connections are generally only supported between state items | ||
| that share the same grid, precision, and units. Mismatched items | ||
| cannot be automatically connected; the user is responsible for | ||
| ensuring compatibility. |
There was a problem hiding this comment.
V2 ignores units, so it is in not so much that they cannot be automatically connected as the results will be wrong for mismatched units. Users beware.
V2 also does not have any notion of requiring that an export provide certain user-defined attributes that make be required by an import. E.g., some children of GOCART2G require a "radius" attribute that is expected to come from the export. V3 provides a mechanism to specify and enforce such required attributes.
…and examples [skip ci] Replace the brief 'Shared Libraries' paragraph with a full treatment of the mapl: config section as the primary declarative composition mechanism. Covers geometry kinds, children/DSO schema, states/connections asides, and three worked examples (DYN, GOCART, AGCM). Update cross-references in the Resource Files caveat and the cap.yaml footnote.
tclune
left a comment
There was a problem hiding this comment.
Another V3 difference is that V3 provides a "universal" executable GEOS.x. Through the use of command line, ESMF config, and DSO's, GEOS.x should be able to run any GEOS configuration. So we no longer need separate executables elsewhere such as GEOSgcm.x etc.
Documents that GEOS.x replaces model-specific executables, its single cap.yaml argument, the four top-level config sections that drive a run, and how cap.mapl.children DSO entries make it configuration-universal. Adds REVIEW NEEDED marker for MAPL_Component_Driver.x deprecation.
Documents MAPL3's discouragement of global resolution parameters (IM_WORLD, JM_WORLD) in favour of geometry-based accessors (GeomGet/GridGet area). Notes planned min/max spacing/area accessors with reference to tracking issue #4570.
This reverts commit e5732d7.
Add docs/mapl3/gridcomp-template.md — a minimal Fortran template for a MAPL3 gridded component covering: - Fortran module structure with implicit none(type,external) and free setServices DSO wrapper - ACG spec file format (pipe-delimited table, all supported columns) - mapl_acg() CMake integration Also link the new file from the See Also section of diffs-from-mapl2.md, and fix a missing hconfig declaration in the Fortran template.
Types of change(s)
Description
Adds
docs/mapl3/diffs-from-mapl2.md— a comprehensive migration and reference document describing the architectural and user-facing differences between MAPL3 and MAPL2. This is a required deliverable for the MAPL v3.0.0 alpha release.A
### Documentationentry has been added to the[v3.0.0 - Development]section ofCHANGELOG.md, pointing to this document in lieu of a large number of individual changelog entries for the v3 release.Sections covered
.rc→.acgformat change)cap.yamlreference example, time advance now after History)tripolaris subsumed intoxyin MAPL3 (no separateclass: tripolar; useclass: xywithn_peri_dim: 1— see issue feat(geom): add n_peri_dim support to XYGeomSpec/XYGeomFactory for tripolar grids #4691)Outstanding items requiring peer review
SERVICE/SERVICE_PROVIDER/SERVICE_SUBSCRIBERreplace it in MAPL3.HISTORY.rc.Related Issue
Closes #4554
Related: #4691