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.
- Removes backward compatibility for MAPL_FlapCLI and MAPL_FargparseCLI functions. Only accepts function usage in which the result is of MAPL_CapOptions type.
- Moved generic3g from using yafyaml to ESMF HConfig for yaml parsing
- Tests for wildcard field specification in History
- New generic3g directory intended to replace existing generic directory when completed.
- Modules there temporarily have
mapl3g_
as the prefix.
- Modules there temporarily have
- New command line switches for activating global time and memory
profiling. The default is off. Use
--enable_global_timeprof
and--enable_global_memprof
to activate. - New gauge for measuring memory allocation based upon mallinfo(). MAPL is now instrumented with this memory profiler and it produces reasonable results. Should nicely complement other tools that measure HWM.
- Replace ESMF_Attribute calls with ESMF_Info calls in MAPL_FieldCopyAttribute
- Profile reporting has been relocated into the
./profile
directory. - Improved diagnostic message for profiler imbalances at end of run. Now gives the name of the timer that has not been stopped when finalizing a profiler.
- Changed all ESMF_AttributeGet and ESMF_AttributeSet to ESMF_InfoGet and ESMF_InfoSet respectively as old calls will be deprecated soon.
- Updated
components.yaml
- ESMA_env v4.0.0 (Baselibs 7, new yaFyaml interfaces)
- Updated CI to use Baselibs 7
- Update executables using FLAP to use fArgParse
- Fixed failures to fully trap errors in
- History GC
- MemUtils
register_generic_entry_points
- Implemented workaround for NAG related to ArrayReference use in GriddedIO.
- Implemented workarounds to avoid needing
-dusty
for NAG. (Related PR in ESMA_CMake.) - Added constructor for DSO_SetServicesWrapper
- Trajectory sampler with Epoch time span
- Added utility to convert binary files used by MAPL_ReadForcing to NetCDF
- Allow a negative "update_offset" keyword in the sampling section of ExtData2G's input file by prepending the ISO time duration with a negative sign. I.E -PT12H for example
- Renamed "geom" subdir and library to "field_utils"
- Add call to initialize pFlogger layer for the unit tests.
- Update
components.yaml
- ESMA_cmake v3.31.1 (Fixes for NAG)
- Undoing previous workaround for NAG +
MAPL_Config.F90
in v2.40.1 which was a workaround was not portable to Linux. Instead, this uses changes in ESMA_cmake v3.31.1 for flags with NAG. - Updated
FindESMF.cmake
file to match that of ESMF v8.5.0
- Fixed missing TARGET attribute on dummy argument. NAG aggressively uses copy-in/copy-out which exposes these missing attributes. This fix probably did not find all - just the ones exercised by one failing test.
- Workaround for NAG which prevents reading values from ESMF Config files that have been set using
SetAttribute()
. The immediate issue appears to be due to a wrong CPP conditional on `ESMF_HAS_ACHAR_BUG', but it is not immediately clear if this is due to recent changes in ESMF or some change in NAG. Probably ESMF though. Once the ESMF core team analyzes we will potentially update this fix.
- Add ability of ExtData to fill variables on MAPL "tile" grids.
- Added print of regrid method during History initialization
- Added ability to use an
ESMF.rc
file to pass in pre-ESMF_Initialize
options to ESMF (see ESMF Docs for allowed flags.- NOTE: File must be called
ESMF.rc
- NOTE: File must be called
- Added ability to run ExtDataDriver.x on a MAPL "tile" grid
- Add ability to introduce a time-step delay in ExtDataDriver.x to simulate the timestep latency of a real model
- Added a MAPL_Sleep function, equivalent to some vendor supplied but non-standard sleep function
- sampling IODA file with trajectory sampler (step-1): make it run
- Convert ExtData to use ESMF HConfig for YAML parsing rather than YaFYAML
- Set required ESMF version to 8.5.0
- Add StationSamplerMod for station sampler
- Added ReplaceMetadata message and method to replace oserver's metadata
- Added field utilities to perform basic numeric operations on fields
- Update arithemetic parser to work with any rank and type of ESMF fields
- For ExtDataDriver.x only, added logging config to Tests/ExtDataDriverMod.F90 to enable Logger there
- Added new fill option and run mode for ExtDataDriver.x
- Updates to GFE library dependency
- Require gFTL v1.10.0
- Require gFTL-shared v1.6.1
- Require fArgParse v1.5.0
- Require pFlogger v1.9.5
- Removed yaFyaml as dependency
- Updated programs using FLAP for command line parsing to use fArgParse instead
- Updated
components.yaml
to use Baselibs 7.14.0- ESMA_env v4.9.1 → v4.19.0
- Baselibs 7.14.0
- esmf v8.5.0
- GFE v1.11.0
- curl 8.2.1
- HDF5 1.10.10
- netCDF-C 4.9.2
- netCDF-Fortran 4.6.1
- CDO 2.2.1
- NCO 5.1.7
- Move to MPT 2.28 at NAS, and other various changes for TOSS4 at NAS
- Remove Haswell from
build.csh
- Baselibs 7.14.0
- ESMA_cmake v3.28.0 → v3.31.0
- Clean up for TOSS4 changes at NAS
- Add
QUIET_DEBUG
flag - Suppress some common warnings with Intel Debug
- ESMA_env v4.9.1 → v4.19.0
- Make the GEOSadas CI build separate as it often fails due to race conditions in GSI
- Update CI to use BCs v11.1.0 and Baselibs 7.14.0
- Updates to support building MAPL with spack instead of Baselibs
- Add
FindESMF.cmake
file tocmake
directory (as it can't easily be found via spack) - Move
CMAKE_MODULE_PATH
append statement up to findFindESMF.cmake
before wefind_package(ESMF)
- Default
BUILD_WITH_FLAP
toOFF
as we don't build it in spack - Explicitly build GEOSadas in CI with
-DBUILD_WITH_FLAP=ON
as GEOSadas is still behind in moving to use fArgParse
- Add
- Created cubed-sphere grid factory with files split by face
- Removed unneeded and confusing default in History Grid Comp (see #2081)
- Fixes in CMake for fArgParse transition
- Deprecate the use of FLAP for command line parsing in favor of fArgParse. FLAP support will be removed in MAPL 3
- Fix a bug so that MultigroupServer does not allow a file written by multiple processes at the same time.
- Relaxed restriction in the tripolar grid factory so that grids can be made even when the decomposition deos not evenly divide the grid dimension so that the factory can be used in utilities where the core count makes such a condition impossible to satisfiy
- Fix a bug in
time_ave_util.x
so that it can work with files with no vertical coordinate
- Fixed logic in generating the names of the split fields. If the alias field in the History.rc has separators (;), each substring is used to name the resulting fields. If there are no separators, this will be the exact name of the first split field
- Added bug fix when using climatology option in ExtData2G under certain scenarios
- Fixed a bug when performing vertical regridding in History when the output grid cannot be decomposed so that every core has a DE
- Fix unintentional PFLOGGER requirements in geom and pfio
- Fixed the handling of ungridded dims for averaged collections. When the grid rank is 2, the code erroneously assigned vertical dimension to the ungridded dims
-
Added minimal support for NetCDF "groups".
getvar*
can now optionally specify agroup_name
and the data will be returned from the named group rather than the default group. -
New feature to allow for single component testing as code is refactored
- Created
Comp_Testing_Driver.F90
in Apps - Created
subset_fields.py
to grab a subset of columns - Created shell script to perform subsetting, run the driver, and evaluate differences
- Instructions for use can be viewed under Apps/Comp_Testing_Info.md
- Created
-
Added module to process datetime strings from NetCDF to ESMF_Time and ESMF_TimeInterval variables and vice versa
READ_RESTART_BY_FACE
has been fixed and now can read restarts from full CS grids as well as restarts that have been separated by face viaWRITE_RESTART_BY_FACE
. The current implementation requires that bothnum_readers
andnum_writers
must be multiple of 6.- 'config.py' has been fixed. python3 requires // for integer divides.
- Added new option "RUN_AT_INTERVAL_START:" so force component alarms ring at start of the interval, default still to ring at the end
- Printed time to write files to the disk in MultiGroupServer
- Added merge function to Filemetadata to merge two meta objects
- Added support for "DEPENDS_ON" and "DEPENDS_ON_CHILDREN" for export_specs. The typical usage on this feature is when the calculation of a variable involves other export variables, either from the same component (DEPENDS_ON specifies the list on such variables), or in the children (in this case the expectation is that all of the children have the SAME export). In both cases MAPL performs automatic allocation of these export variables.
- Added support for use of pFlogger simTime in logging (only if
-DBUILD_WITH_PFLOGGER=ON
)- Note: Due to bug in pFlogger v1.9.3 and older, you must specify a
dateFmt
in your logging configuration file in the formatter when usingsimTime
(see pFlogger issue #90). This is fixed in pFlogger v1.10.0
- Note: Due to bug in pFlogger v1.9.3 and older, you must specify a
- Add geom subdirectory and contents for MAPL Geom framework
- Add logic to GriddedIO class so that if an uninitialized time object is passed, the resulting file will not depend on time
- Make sure the pfio files are closed when the time and speed appear in logfile
- Enable more tests in CircleCI
- Move ioserver_profiler%stop call to the right place
- Caught an untrapped error condition when writing to NetCDF
- Fixed the handling of vector regridding for a subdomain with no-DE.
- Fixed the no-DE case related to vertical regridding.
- Pulled call MAPL_GridGetCorners out of the condition to avoid hang in MAPL_GetGlobalHorzIJIndex
- Various nonstandard uses of Fortran caught by NAG compiler
- Various workarounds for NAG 7.1.113 where the compiler is wrong.
- New feature in History to allow the accumulation in non-instantaneous collections to be reset independently of the writing frequency if requested.
- new macro
_RETURN_IF(cond)
to provide a succinct early return in procedures with return codes.
- Fixed message in _ASSERT statement in ESMFL_Mod.F90
- Fixed bug in CubedSphereGridFactory when constructing a grid from a file
- Cleaned up cubed-sphere grid factory and NCIO to produce files with consistent capitalization and types for the stretching factor
- Added config array overload to
MAPL_GetResource
- Implemented new generic XY grid factory to create regional grids on any input set of 2D lons and lats
- NOTE: This grid factory is experimental and the API may change or it might be superseded by another grid factory
- Updated
components.yaml
to match GEOSgcm v10.25.1- ESMA_env v4.8.0 → v4.9.1 (Move to Baselibs 7.8.1: ESMF v8.4.1)
- ESMA_cmake v3.24.0 → v3.28.0 (Detection of additional sites, updated Intel Fortran flags, updates for Python3 support)
- Converted files in
Python/MAPL
to Python 3.- NOTE 1: This will require changes to codes that call MAPL's Python layer.
- NOTE 2: If building with F2PY support, you will need to use ESMA_cmake v3.28.0 or later if using in a mixed Python 2/3 environment.
- Fixed bug in climatologies with ExtDataV2 when wrapping around the year
- Added Ford documentation
- Updated ExtData test case2 to handle a wider range of test times for more robust testing
- Fixed bug in climatology hanlding of data in ExtDataV2 that occurred depending on the start date of the application relative to the length of the application run time
- Fixed set_grid. The cf_root is not created when it is called. Instead, use config from CAP.rc
- Removed test case 2 for ExtDataV1 as there as an apparent bug in climatologies that has been fixed for ExtDataV2 but there appears to be a different but in ExtDataV1 that causes the extended case 2 to fail
- Fix issue when running with monthly history collections
- Added subroutines to read char type in Netcdf
- Added a subroutine add_variable to Netcdf4_Fileformatter
- Add a function to get the area of a spherical polygon to the spherical geometry module
- Created layout independent version of the "DownBit"/"pFIO_ShaveMantissa" routines when running in MPI codes
- Added subroutine
MAPL_SunGetLocalSolarHourAngle()
inbase/MAPL_sun_uc.F90
. This provides a convenient local solar hour angle diagnostic which will be used to detect local solar noon via theEXAMPLE OF USE
in the subroutine header. SeeDESCRIPTION
in code for more details. Provides the TRUE local solar hour angle (i.e., with equation of time included), but can also provide the MEAN value (without EOT) viaFORCE_MLSHA=.TRUE.
optional argument. - Add
shavemantissa
f2py code. This is used by AeroApps.- NOTE: If you do not have a need for this code, build with
-DUSE_F2PY=OFF
. Note that even if you try to build the f2py code, it might fail anyway due to issues with the Python stack on the machine. ESMA_cmake has code that "tests" if f2py works. If it doesn't, it should failover gracefully.
- NOTE: If you do not have a need for this code, build with
- Changed set_grid method so users have a chance to specify the grid type
- Renamed
get_regrid_method
andtranslate_regrid_method
toregrid_method_string_to_int
andregrid_method_int_to_string
respectively inRegridMethods.F90
. This was done so we could addget_regrid_method
to the AbstractRegridder. The new names more accurately reflect what the RegridMethods functions do. - Changed call to
MAPL_SunOrbitCreate()
insideMAPL_Generic.F90
to call to new functionMAPL_SunOrbitCreateFromConfig()
, the latter which get the orbital parameters from the MAPL state's Config. In this way no default orbital parameter values need appear inMAPL_Generic.F90
. Rather, these default values are encapsulated where they belong inSun_Mod
inbase/MAPL_sun_uc.F90
and are now explicitly named and commented on at the head of the module. This is a structural zero-diff change. - Created
MAPL.profiler
logger and moved throughput, per-component, and global timers to use it - Moved most of the MAPL_GetResource generic subroutine to a new module, MAPL_ResourceMod, in base. The specific subroutines remain in MAPL_GenericMod to maintain the interface in one module, but most of the functionality is in MAPL_ResourceMod now.
- Update "build like UFS" CI test
- Converted the History Gridded Component to use
_RC
and_STAT
macros
- Changed the type of output counters to INT64 for large file.
- Tested optional arguments arrdes in MAPL_WriteVars
- Added the correct values to halo corner of LatLon grid
- Fixed range in halo of LatLonGridFactory
- Corrected issue with native output having metadata saying it was bilinearly regridded. Now sets these files to have
regrid_method: identity
- Fix bug in
mapl_acg.cmake
that caused unnecessary rebuilds - Fixed error handling for refactored MAPL_GetResource
- Added test cases 28 and 29 to ExtData testing framework
- Fix bug in ExtData2G when used in "Replay" in the GEOSgcm
- Fixed bug with ExtDataDriver.x when enabling oserver on dedicated resources
- Fixed bug when writing 4D fields to checkpoint files with the PFIO server via the WRITE_RESTART_BY_OSERVER option
- Added
MAPL_find_bounds => find_bounds
andMAPL_Interval => Interval
toMAPL.F90
for use when doing component level OpenMP - Added requirement for ESMF 8.4.0 in
find_package()
call - Modified Apps/MAPL_GridCompSpecs_ACG.py to use the * capability for
LONG_NAME
likeSHORT_NAME
- Added CMake code to apply stricter debug flags when building MAPL as Debug
- Added subroutine MAPL_MethodAdd to MAPL_Generic.F90
- Added subroutines get_callbacks and copy_callbacks to OpenMP_Support.F90
- These added subroutines are to support "callback" procedures when inside OpenMP parallel region for mini states for component level threading.
- Added ability to expand "%d" in the long name when we split fields for History
- Update
components.yaml
- ESMA_cmake v3.24.0 (defines stricter debug flags for Intel, preliminary support for
ifx
)
- ESMA_cmake v3.24.0 (defines stricter debug flags for Intel, preliminary support for
- Reduced amount of CI tests to reduce cost
- Added
message
to label enforcer (requires v3) - Fixed the naming convention of the split field name (#1874)
- NOTE: This could change the name of any field in HISTORY using field splitting. The data will be the same, but the name will be different.
- Fixed procedure "find" in CFIOCollection.F90 that was missing a
_RETURN(_SUCCESS)
at the end
- Added new test case for ExtData2G to test multiple input files
- Fixed bug in tutorial case parent_no_children when attempting recommended exercises
- Implemented workaround for gfortran runtime issue with YafYaml when parsing multiple ExtData yaml files for ExtData2G
- Add fArgParse CLI argument parser
- Added subroutines for reading 4d integers in NetCDF4_FileFormatter
- Added new option to allow for gaps in datasets ingested by ExtDataNG
- Updated to ESMA_cmake v3.21.0
- Adds support for a generic
x86_64
processor for GNU
- Adds support for a generic
- Updated to ESMA_env v4.8.0
- Baselibs v7.7.0
- fArgParse v1.4.1
- pFUnit v4.6.1
- Baselibs v7.7.0
- Move to use GitHub Actions for label enforcement
- Fixed the subroutine that removes a variable from FileMetadata Object
- Defined real64 constants in consistent way
- Workarounds for NVIDIA compiler
- Added a function to remove a variable from FileMetadata object.
- Added assert to NetCDF4_get_var.H to print variable name if data retrieval fails
- Added to asserts in
NetCDF4_get_var.H
to print out file if there are error getting variables - Added capability to Automatic Code Generator to detect inconsistencies in spec files at build time
- Add support for netCDF quantize.
- Note this requires netCDF-C v4.9.0 and netCDF-Fortran v4.6.0, but our CMake does have a test
to make sure the netCDF library was compiled with support. This test uses
NETCDF_INCLUDE_DIRS
and as such within GEOS requires the use of ESMA_cmake v3.20.0 or later to (possibly) succeed.
- Note this requires netCDF-C v4.9.0 and netCDF-Fortran v4.6.0, but our CMake does have a test
to make sure the netCDF library was compiled with support. This test uses
- Added subroutine to calculate IJ indexes of given lats lons for cubed-sphere grid
- Updated to ESMA_cmake v3.20.0
- This is to support the
NETCDF_INCLUDE_DIRS
used in the quantize support test
- This is to support the
- Updated to ESMA_env v4.7.0
- This has many updates including moving to netCDF-C v4.9.0 and netCDF-Fortran v4.6.0. The other updates:
- Baselibs v7.6.0
- ESMF v8.4.0
- zlib 1.2.13
- curl 7.86.0
- netCDF-C 4.9.0
- netCDF-Fortran 4.6.0
- NCO 5.1.1
- CDO 2.1.0
- Baselibs v7.6.0
- This has many updates including moving to netCDF-C v4.9.0 and netCDF-Fortran v4.6.0. The other updates:
- Removed some unneeded
use
statements inExtDataGridCompNG.F90
. This seemed to let this new quantize support build with Intel - Changed
nbits
internally to benbits_to_keep
. Note that externally, you still usenbits:
inHISTORY.rc
- Fixed bug when writing fields in History with ungridded dimension when the split option is not requested
- When a grid is received from outside of MAPL (e.g., NOAA UFS), MAPL must provide a mechanism to specify a grid-type for internal processing. Add an option to set_grid to set GridType explicitly.
- Fix for building
time_ave_util.x
at NAS using MPT
- Introduced a new time averaging utility code to perform time averages of datasets
- Moved Regrid_Util.F90 to the Apps directory
- Add define for
-Dsys${CMAKE_SYSTEM_NAME}
to fix build issue with macOS and Intel (#1695) - Fix handling of return macros for programs and subroutines (#1194)
- Add Coupled MOM6 GCM run to CI (ifort only)
- Added ability to pass in extra options to FLAP CLI arguments
- Added option to pass vertical metadata to FieldBundleWriter class for output file
- Expose FileMetaUtilities class MAPL_VerticalDataMod via "use MAPL"
- Change argument arrdes of MAPL_Read and Write NC Var 3d to optional
- Error codes in
shared/MAPL_Error_Handling.F90
are now consistent with_FAILURE = 1
ininclude/MAPL_ErrLog.h
- Updated `components.yaml
- ESMA_env v4.4.0 → v4.5.0 (Update for GMI builds)
- ESMA_cmake v3.18.0 → v3.19.0 (Add
-save-temps
to GNU debug, check if install prefix is writable)
- Fix checkpoint
target_lon
andtarget_lat
to be in degrees rather than radians
- Implemented create from filemetdata for Tripolar Grid Factory and add corners to output when writing files on Tripolar grid
- Added
Dockerfile
and CircleCI workflow to build and push container to both Docker Hub and GitHub Container Registry on MAPL releases. Uses a GitHub Action to trigger CircleCI pipeline on releases.
- Removed URLs and emails from MAPL per request of NOAA.
- Changed the default
Contact:
in History Gridded Component to be blank. To keep metadata the same in History output, please setCONTACT:
in yourHISTORY.rc
file.
- Changed the default
- Reorganized the file
Tests/pfio_MAPL_demo.F90
to mimic the steps ofMAPL_Cap
. - Extend ACG
- Add options (
MAPL_DataSpec
) / columns (read_specs
) - Add constants for literals for uniformity (
CATEGORIES
,ALLOC
,DELIMITER
,TERMINATOR
) - Fix lookups in aliases (dict) to find key (alias) or value (alias target) to allow unaliased options are possible
- Add the
alloc
option toemit_get_pointers
- Update outdated comments
- Add options (
- Fixed a missing parentGC argument to addChildFromDSO
- Removed ESMFL_UnitsRadians from ESMFL_Mod.F90 and replaced it with MAPL_UnitsRadians in InternalConstants.F90. Did a global search/replace. This avoid the circular dependency build error when ESMF_UnitsRadians is used in MaplGrid.F90
- Changes consistent with MAPL for accessor functions to get number of threads and current thread
- Several changes to support component level hybrid MPI/OpenMP.
- See files OpenMP_Support.F90, EntryPointVector.F90, RunEntryPoint.F90, MaplGenericComponent.F90, MAPL_Generic.F90, and BaseProfiler.F90. The first three are new and the rest are modified.
- Implement ISO 8601 (Date/Time) support for MAPL
- Added ability to apply masks to expressions in ExtData2G
- Added a subroutine that adds all exports from a child
- Change the logic to check if the field is already connected to a valid grid. If yes, we bypass the checks for tilegrid (issue #1654)
- Removed unnecessary DSO extension assert
- Fixed bug that required a /dev/null ExtData entry to still have a file variable name
- Fixed bug with checking for duplicate alias in collection
- Added protection in History to only allow
instantaneous
ortime-averaged
modes - Check userRC after ESMF_GridCompInitialize in MAPL_GenericInitialize
- Added Ninja build of MAPL to CI tests
- Have
MAPL_AddChildFromDSO
callMAPL_AddChildFromDSOMeta
(#1598)
- Removed unused code from History GridComp
- Fix setting stretched grid target latitude and longitude from restart file metadata
- Added member function get_global_var to FileMetadata
- Added option to build source tarfile when building MAPL standalone. By default this is
OFF
, but can be enabled with-DINSTALL_SOURCE_TARFILE=ON
- Added
regrid_method
metadata to History output - Added an overloaded interface for MAPL_BalanceWork to handle both REAL32 and REAL64
- Updated
components.yaml
to match GEOSgcm v10.22.5 (actually a bit beyond)- ESMA_env v4.2.0 → v4.4.0 (Update to Intel 2022.1, Add TOSS4 Support at NAS)
- ESMA_cmake v3.17.0 → v3.18.0 (Updates to CPack and Provisional M2 Support)
- Removed
LatLonGridFactory_basic
factory constructor (dead code)
- Fix error trapping in bundleio test
- Add tutorials
- Check for duplicate entries in the History.rc file
- Check that a user-provided chunking in the History.rc is compatible with the output grid
- If a user requests CFIOasync in the History.rc, print warning and set to CFIO
- Added option allow writing to pre-existing files with History
- Replaced deprecated RC macro with _RC and remove unused code in ExtData2G
- Moved to
checkout@v3
action due to git safe directory issue - Added tutorials to CI
- Fixed the History file existence detection to only run for netCDF output. For still unknown reasons, this detection has an issue with binary output (see GEOS-ESM/GEOSldas#568)
- Fix GitHub Actions
- Check return codes for YAML files when parsing in ExtData2G
- Updated the ESMA_env version to v4.2.0 (Baselibs 7.5.0 → GFE v1.4.0)
- With this update, MAPL now requires these versions of GFE libraries
- yaFyaml v1.0.4 (if building with ExtData2G support)
- pFlogger v1.9.1 (if building with pFlogger support)
- With this update, MAPL now requires these versions of GFE libraries
- Update the CI for Baselibs 7.5.0, BCs version 10.22.3
- By pass the check of the missing value of Nan
- Update CI to work with latest GEOSadas
develop
(Uses a special branch of GEOSadas) - Fix bundleio tests
- HistoryGridComp now checks if a file exists already before writing and errors out if so
- Minor updates for FORD documentation testing
- Add
program
statements to some test programs - Remove
pfio/pfio_io_demo.F90
as dead code - Fix redefinition of
_RETURN
inpflogger_stub.F90
- Removed unused
Test_SimpleClient.pf
- Add
- Update CMake to require NetCDF C components and add
NetCDF::NetCDF_C
to pfio CMake
- Updated MAPL_CapGridComp to mark fields going to ExtData to not be checkpointed by components
- Add debug loggers for start/stop during stages in MAPL_Generic
- Handling for double precision input when retrieving single precision attributes
- Enable GCM run test in CircleCI (1-hour, no ExtData)
- Added monotonic regridding option
- Make availalbe to History and ExtData2G all supported regridding methods
- Add test cases for ExtData
- Add YAML validator GitHub Action
- This action makes sure all YAML files are valid (to a relaxed standard)
- Modified error messages in FileMetadataUtilities to be unique and print filename
- Updated the ESMA_env version to v3.14.0
- Updated the ESMA_cmake version to v3.17.0
- Updated GitHub Actions MAPL build tests
- Added assert for missing file with ExtData2G
- Re-enable bundleio tests in CI
- Updated CircleCI to use latest Baselibs
- Updates for Spack support
- Add
find_package(MPI)
for non-Baselibs builds - Add explicit interface dependence of
MPI
forESMF
target - Add
esmf
alias library forESMF
for compatibility
- Add
- Fixed bug in non cubed-sphere grid path in MAPL_GetHorzIJIndex
- Initialize
cap%lperp
inMAPL_CapGridComp.F90
(see Issue #1530)
- Adding missing _RETURN and _VERIFY macros in GriddedIO.F90
- Update CircleCI to work with latest GEOSadas
- Fixed incorrect legend when using PRINTSPEC option in MAPL Cap
- Fix ESMF errors exposed by monthly collections
- Added has_variable function to FileMetadata
- Added information about the container type for each item in state when using PRINTSPEC option
- Change many instances of
_ASSERT(.false.,"msg")
to_FAIL("msg")
- Extended format width for exclusive and inclusive times in profiler from
f9.2
tof10.2
(see #1420)
- Removed one redundant get_file_extension call
- Fix issue where ACG was called when no file had changed
- Add missing
rc=status
inMAPL_GetResourceFromMAPL_scalar
- Fixed bugs with next generation ExtData
- Fixed variable PTR40 declaration in GenericCplComp.F90
- Added support for 4d variables in the coupler. Intentionally decided not to support 4d in the coupler's ReadRestart and WriteRestart to catch errors
- Added ability to use multiple rules for different time periods in next generation ExtData
- Cleaned up a bit of old CMake
- Updated CircleCI config to use new orb
build
job - Updated
components.yaml
to match GEOSgcm v10.22.1- ESMA_env v3.13.0
- ESMA_cmake v3.12.0
- Provided workaround for GNU bug when defining file metadata in cubed-sphere grid factory (similar to Issue #1433 and its solution)
- Fix a bug deallocating a pointer potentially pointing to shared memory allocated by MAPL_Shmem
- Fixed duration of the clock to be the smaller of the user specified duration and (END_DATE - currTime)
- Fixes for compiling on M1 Macs (remove REAL128)
- Fix for CMake when
esmf
is already a target
- New cmake option USE_EXTDATA2G to enable the next generation of ExtData for development, by default uses 1st generation ExtData
- MAPL_ESMFFieldBundleRead/Write modules are now available in when using MAPL
- Replaced a wild card "*" in any position of a string in MAPL_GridCompSpecs_ACG.py
- Updated
MAPL_SunGetSolarConstantFromNRLFile
to open NRL Solar Table file only on root and broadcast the tables to all processes. Now all processes do interpolation. - Add voting interpolation method as optional argument to SimpleBundleRead method
- Fixed bug in 2.18.2 release when computing lats in degrees lat-lon grid factory
- Fixed GNU bug when defining file metadata in lat-lon grid factory
- Save copy of original lat/lons in degrees when creating lat-lon grid factory to use in file metadata to eliminate floating point conversion noise
- Fix build bug with NAG in
cub2latlon_regridder.F90
- Fixes DO_NOT_CONNECT errors when calling MAPL_TerminateAnyImport
- Fixed the alarms in the couplers to account if they are called before ESMF_ClockAdvance is called
- Reverted generic/VarSpec.F90 to hash b02e8ff (fix for #1410)
- Fixed issue in
CMakePresets.json
where Ninja presets were broken - Fixed io profiler report format
- Fixed issue on macOS where enabling memutils caused crash
- Option to force integer time variable in History output via the History.rc file (IntegerTime: .true./.false. default .false.) rather than the default float time variable if allowed by frequency of output
- Added mapl_StubComponent to MAPL package
- Updates to CircleCI
- Added GEOSadas CI ifort build test
- Add "like-UFS" build to CI. This is no FLAP and pFlogger, and static build
- Added new
_STAT
and_IOSTAT
macros a la_RC
- Changed the naming convention for the split name(s): we now take the entries from the field alias(es) without appending any digits. Also allowing the user to specify more entries in the alias, so that HISTORY.rc does not need to change when running GOCART with more wavelengths
- A small performance improvement. cycle => exit in MAPL_Generic.F90
- Made history global metadata configurable. This can be done in two ways
- Globally for all collections by setting
COMMENT:
,CONTACT:
,CONVENTIONS:
,INSTITUTION:
,REFERENCES:
, andSOURCE:
at the top ofHISTORY.rc
likeEXPDSC:
- On a per-collection bases by setting
collection.comment:
,collection.contact:
,collection.conventions:
,collection.institution:
,collection.references:
, andcollection.source:
- The default settings for these are to match that of MAPL 2.17.0
- Globally for all collections by setting
- Updated
components.yaml
. These changes are to support using Spack to build MAPL- ESMA_cmake v3.10.0 (add
FindESMF.cmake
from NOAA-EMC) - ecbuild geos/v1.2.0 (updat
FindNetCDF.cmake
to that from NOAA-EMC)
- ESMA_cmake v3.10.0 (add
- Improved file-not-found error handling in ExtData for non-templated filenames
- Fixes for Global Attributes to match FP 5.27
- Changed
lev
variablestandard_name
tomodel_layers
- Changed global attribute
Convention
toConventions
- Fill
Source
with a string " experiment_id: " where EXPSRC and EXPID are from theEXPSRC:
andEXPID:
lines in HISTORY.rc
- Changed
- Add explicit dependence of gFTL-v1 and -v2 whenever both are used (currently profiler and generic)
- io profiler is fixed due to the change of profiler finalize
- Files read by GriddedIOMod now respect the file defined _FillValue rather than assuming it is MAPL_UNDEF
- Fix bug so that fields with an ungridded dimension of size 1 can be written via History
- Updated
components.yaml
- ESMA_env v3.11.0 (Mainly updates for NAS)
- History initialization will display chunksize for any collections that are chunked
- Removed include of
ESMC_ReturnCodes.h
. Changed someESMC_RC
codes toESMF_RC
codes
- A bug in splitting the fields for History when an alias contains a single entry (#1296)
- Trap more errors in pFIO
- Free types and operation created by profiler
- Finalize profiler in MAPL_finalize call
- Fix how a retry-build is done in CI
- Fix issue with logger message and single quotes
- Fix bug with profiler reporting in programs
- Updated README.md
- Refactored MAPL_Generic.F90 - lots of changes.
- consistent indentation (emacs mode)
- extracted helper procedures in GenericInitialize
- Added new step to CircleCI to try and re-run build on failure.
- Updated CircleCI config to use new GEOS-ESM/circleci-tools orb
- Added Markdown rules to
.editorconfig
- Changes to make MAPL 2 History output match GEOS FP file spec
- Coordinate Variables
lon
andlat
are now 64-bit (double) in lat-lon History files rather than 32-bit (single)lons
,lats
,corner_lons
, andcorner_lats
are now 64-bit (double) in History files rather than 32-bit (single)
- Variable Metadata
- Added
fmissing_value
(equal to_FillValue
akaMAPL_UNDEF
) - Added
missing_value
(equal to_FillValue
akaMAPL_UNDEF
) - Added
vmin
(equal to-MAPL_UNDEF
) - Added
vmax
(equal to+MAPL_UNDEF
) - Added
add_offset
(equal to 0.0) - Added
scale_factor
(equal to 1.0) - Added
standard_name
(equal tolong_name
)
- Added
- Global Metadata
- Added
Title
,History
,Source
,Contact
,Convention
,Institution
,References
,Filename
,Comment
- These currently have hardcoded values roughly equivalent to the GEOS FP 5.27 output
- Added
- Coordinate Variables
- Free types and operation created by profiler
- Refactored MAPL_Generic.F90 - lots of changes.
- Make EXPID and EXPDSC optional. Default is empty string
- Updated
changelog-enforcer
to version 3 - Compress CircleCI artifacts
- Updated VarRead_2d_r8 interface to match VarRead_2d_r4 interface in NCIO module
- gfortran can not associate an allocated string. Such blocks are changed
- Updated
components.yaml
- ESMA_env v3.8.0 (Use Intel 2021.3)
- ESMA_cmake v3.8.0 (Use
-march=core-avx2
for Intel Fortran) - These are non-zero-diff for GEOS
- Updated the Intel CI image to Intel 2021.3
- Move out allocatable string from if condition block in
VarConn.F90
- Updates to
mapl_tree.py
to let it work in the git GEOS- Note that the interface has changed since the last time this worked, please see script help usage
- Disabled the
chname
style of running it as that does not work at the moment
- Refactored support for using DSO's for components. No change to interfaces.
- Updated MAPL to exclusively use new timers - with improved format.
- Legacy timer profiling
- An interface for
MAPL_AddChild
allowing specification of a DSO has been deprecated due to non-conventional ordering of its arguments. A new interface with conventional ordering has been introduced.
- Return 0 when there is no data for bit shave
- Removed tab characters from Fortran (and C) code
- MAPL_TimerOn/Off now invoke new timers as well as legacy timers.
- Add pfio_open_close.F90 file
- Add the i and j index as variables to use to generate synthetic data in ExtDataDriver.x
- Added ability to generate monthly checkpoints (fixes issue #1065)
- Changed the way how a writer is chosen. Previously, a writing processor is chosen as long as it is idle. Now, an idle processor is chosen from a node with the most idle processors.
- Changed error checking
_ASSERT
to use__RC__
macro and_VERIFY
for UserRC - Changed
_ASSERT
with.and.
conditional to separate_ASSERT
to improve error message - Changed usage of MAPL_IO subroutines in CubedSphere and LatLon Grid Factories to open command with newunit clause
- Updated
components.yaml
- ESMA_env v3.7.0 (Use MPT 2.25 at NAS on TOSS)
- ESMA_cmake v3.7.2 (Fixes FindBaselibs issue found by @sdrabenh, f2py order fix)
- Made the
MAPL_AddChildFromDSO
function system agnostic by using the CMake detected DSO suffix - Component level timer formatting is changed to provide more information.
- Fixes #1186. Fragile CMake logic for checking minimum version requirements for gFTL.
- Fixes #951. Adjusted the size for the internal write, which is compiler dependent. For reals: 15 for Inter, 16 for NAG and Portland group, 18 for gfortran.
- Fixed bug when comparing grid equality in the cubed-sphere factory
- Fixes handling of nested states in MAPL. Removed the requirement to specify horizontal or vertical grid specs for such states. Added a public method to retrieve rootGC
- Add find_package() calls to main
CMakeLists.txt
for all paths (Baselibs or not). Needed so these calls can be removed inFindBaselibs.cmake
in ESMA_cmake
- Relocated CapOptions related modules to
./gridcomps/Cap
. Also simplified the FLAP options layer. Had to introduce some minor naming kludges to keep high level GEOS interfaces working. FlapCLI.F90 and CapOptions.F90 changes that should be revisited in 3.0 has been commented for backward compatibility. This should be revisited under 3.0. - Updated to ESMA_cmake v3.7.0
- Removed MKL dependency in
Tests/
- Removed support for +/- option for restart names in MAPL_Generic.F90. Found to be unused, and kludgy.
- Fixed bug with MAPL_FindChild gfortran debug compilation
- Fixes #1115. NAG flagged several issues, related to how different derived type are brought in MAPL by different modules, which quite possibly are violation of the standard. Similarly, a procedure call was used as an argument with intent(INOUT).
- Fixed issues with NAG and Tests (#1106)
- Changed non-Fortran Standard
call exit
tostop
inExtDataDriver.F90
- Changed
kind=8
tokind=REAL64
inpfio_MAPL_demo.F90
- Reenabled build with NAG (works with NAG 7.0.7048)
- Changed non-Fortran Standard
- Added PFIO support for
NF90_STRING
(as opposed toNF90_CHAR
). This fixes use of some netCDF files.
- Added ability to regrid multiple files in one execution of Regrid_Util.x
- Removed last
NETCDF_LIBRARIES
reference from CMake - OOMPH: Lots of work to tease apart low level "specs" into separate
files/classes. At the same time new classes (mostly unused
as yet) are being introduced for nextgen specs.
Some details:
- Introduced new oomph subdirectory and namespace.
- Replaced some "manual containers" with gFTL Vectors.
- Updated some gFTL containers to v2 containers.
- Require gFTL v1.5.1
- Updated
components.yaml
to ESMA_env v3.5.0 (Baselibs 6.2.8) - Update CI images to Baselibs 6.2.8
- Updated
- Removed yaFyaml dependency when building with BUILD_WITH_PFLOGGER=NO
- Reduced runtime impact of communication barriers in Cap gridded component
- Exposed
TO_NAME
argument inMAPL_StateAddExportSpecFrmChld()
to allow renaming of EXPORTS. Needed for GOCART-2G.
- Added option to flip vertical orientation of checkpoint files from the provided orientation which is assumed to be down (TOA -> surface) as index increases. User can provide a per grid comp INTERNAL_CHECKPOINT_POSITIVE: and IMPORT_CHECKPOINT_POSITIVE: option with the default as down. If this is set to up 3D fields that are vlocationedge or vlocationcenter will be flipped on writing and positive in the lev variable will be up. Likewise restarts with positive up will be flipped relative to the orientation in the file.
- Added GEOSldas CI build test
- Added option to regrid to a regional lat-lon grid in the Regrid_Util.x utility
- Added scc badges to README
- Added Service-Services functionality. Components could advertise services they can provide, they can request services to be done to a list of variables, and current components could connect services.
- Added EditorConfig file
- 4 spaces for Python
- 2 spaces for CMake and YAML
- Preload available macros in CMake package configuration file.
- Moved newcfio modules from base into new griddedio directory
- Renamed newCFIO modules and routines to GriddedIO
- Refactored ExtData modules. Because of the dependencies, the following changes were also done:
- Moved Collection ExtData modules into griddedio directory. Removed the Ext prefix for collection modules and subroutines and types
- Moved BundleRead and BundleWrite modules from base to griddedio
- Moved Regrid_Util.F90 from base to griddedio due to griddedio dependency on base. Executable still generated in install/bin
- Updated
components.yaml
- ESMA_cmake v3.6.5 (Bug fix for NAG, support for mepo styles,
Release
flags are now vectorized, Fix forBASEDIR
) - ESMA_env v3.4.1 (Support for Cascade Lake, moves to Intel 2021.2)
- ESMA_cmake v3.6.5 (Bug fix for NAG, support for mepo styles,
- Refactored MAPL_IO by separating it into a Binary (BinIO.F90) and NetCDF (NCIO.F90) modules. Shared subroutines and types have been moved to FileIOShared.F90. MAPL_IO becomes a package module to hold these aforementioned three modules.
- Fixed #338. Added a workaround for a gfortran bug that handles end-of-file incorrectly (returns IOSTAT=5001).
- Fixed ESMF logging errors from MAPL_IO (#1032)
- Make
BUILD_WITH_PFLOGGER
a CMakeoption()
- MAPL finds yaFyaml in CMake through
PFLOGGER::pflogger
, so if you build the stub, specifically add it as a dependency - Fix annoying misspelling of FLAP
- Fixed a missing copy of the output after ESMF_FieldHalo (see #1090)
- Added a proper handling for new segment logic in History. This addressed issues #1064 and #1067
- Reverts the change in 2.8.7, #1069, as this caused bad History behavior (see #1074)
- Fixes #1064. This is bug has been in MAPL for a long time. It shows only when the user specifies a non-default duration, and the last step of the duration interval is written to a new, separate file
- Added the feature which can use nbits ( shave bit) in history binary output
- Added script to automatically make a complete, mepo'd tarball on release
- Refactored MAPL_Generic.F90 and MAPL_GenericCplComp.F90 from base to generic. This removes generic dependency from base
- Renamed MAPL_GenericCplComp.F90 to GenericCplComp.F90
- Moved MAPL_ExtDataGridCompMod.F90, MAPL_OrbGridCompMod.F90, and MAPL_OrbGridComp.rc from base to gridcomps subdirectories
- Renamed Base.F90, Base_implementation.F90, and MAPL_Mod.F90 to Base_Base.F90, Base_Base_implementation.F90, and Base.F90 respectively.
- Fixed issue #486. Empty state restarts will now be ignored (with warning) for writing (the code also protects reading, but the existing code already had a different protection)
- Added default
CMAKE_BUILD_TYPE
for MAPL standalone. Defaults toRelease
build if not set on command line
- Added missing recursive declaration to MAPL_GenericWrapper
- Added
esma_cpack
include for tarring ability
- Updated ESMA_cmake to v3.5.4
- Fix bug when restart name has a "-" at the beginning
- Removed Pandas dependency
- Removed unused functions from NominalOrbits Module
- Added error message to pFIO_NetCDF4_FileFormatterMod if nf90_open() fails.
- Add option to flip native level output in History relative to input
- Added
MAPL_AllocNodeArray_6DR8
andMAPL_DeAllocNodeArray_6DR8
to Shmem - Refactors Constants into its own library and consolidated mathematical/physical constants used throughout code to use those from library
- Added single precision Degrees to Radian Conversion
- Simplified implementation of MAPL_FieldCopyAttributes
- Updated
components.yaml
- ESMA_cmake v3.5.3
- Added npes for pfio_MAPL_demo.F90 when --npes_model is not specified in command line
- Fixed bug in ExtData when doing vector pairs
- Removed unneeded
.gitrepo
files
- Only check the restart grid compared to component if component grid is Cubed-Sphere. Other factories not yet supported.
- Removed MAPL_OldCubedShereGridFactory.F90 and consilidated with MAPL_CubedSphereGridFactory.F90
- Add stretch parameters to restarts and check the file grid compared to MAPL grid when reading restarts
- Add
CMakePresets.json
file- Note: requires CMake 3.21.0 to use
- Per CMake advice, add
CMakeUserPresets.json
to.gitignore
- Widened the throughput timer format
- Fixed bug with tripolar grids and restarts to not check the file grid matches the application grid if application grid is tripolar
- Unit tests can now use the
_RC
macro for checking results from calls to ESMF. The file must first CPP define eitherI_AM_PFUNIT
orI_AM_FUNIT
(serial) and then#include "MAPL_ErrLog.h"
.
- Activated ESMF logging for unit tests.
- Fixed problem in unit testing framework that results in "harmless" warnings/errors in the ESMF log.
- Update CMake to exclusively use GFE Namespace. This means that when building MAPL, users should use the latest versions of GFE libraries (gFTL, gFTL-Shared, pFlogger, fArgParse, yaFyaml, pFUnit)
- Update ESMA_cmake to v3.5.1 (macOS fix)
- Updated the CI to do both GNU and Intel builds of MAPL and GEOSgcm on CircleCI. (Note that for now the GEOSfvdycore build is turned off due to cost of CI)
- Updated the CI to store logfile artifacts from CircleCI builds
- Fix format for writing out large number
- Fixed CMAKE_Fortran_MODULE_DIRECTORY for some directories
- Update handling of file coordinates when creating grids from file. Now if identified as a standard grid compute coordinates. Option to allow this to be overrided and use file coordinates. Fixed issue if two files are identified as a standard grid but has very slightly different coordinates causing one or the other to be used depending on which file is used first.
- Fixed bug with corner case in the new logic to compute lons if matching one of our standard grids
- Fix for NAG Build
- Ensure grid coordinates are always provided in radians
- Add support for GNU Fortran 9.3.0
- Add more function in pfio_MAPL_demo.F90
- Add option BUILD_SHARED_MAPL to build shared or static library
- Regrid_Util.x now checks if file exsts and captures the units and long_name of the input for the output file
- Add
--with_esmf_moab
to enable MOAB Mesh in ESMF
- Set logical values in flap commmand line without true or false values
- Set required CMake Version to 3.17
- Updates to enable use of GFE namespaces (requires Baselibs v6.2.4 or higher)
- ESMA_cmake v3.5.0
- ESMA_env v3.3.0
- Update CI to use 6.2.4 CI images
- Allow MAPL to build if subrepos are cloned with any mepo style (prefix, postfix, naked)
- Add missing variable declaration preventing MAPL from building if H5_HAVE_PARALLEL is defined
- Protect against trying to flip 2D variable in ExtData if there are mixed 2D/3D in file
- Remove file
MAPL_FlapCapOptions.F90
- Added a file
MAPL_FlapCLI.F90
- Added a MAPL_CapOptions constructor
- Change FlapCapOptions to FlapCLI which is not a sub class of
MAPL_CapOptions any more. This update means code that before did:
now must do:
type (MAPL_Cap) :: cap type (MAPL_FlapCapOptions) :: cap_options cap_options = MAPL_FlapCapOptions(description = 'GEOS AGCM', & authors = 'GMAO')
This was changed to facilitate working with UFS.type (MAPL_FlapCLI) :: cli type (MAPL_CapOptions) :: cap_options cli = MAPL_FlapCLI(description = 'GEOS AGCM', & authors = 'GMAO') cap_options = MAPL_CapOptions(cli)
- Adopting Fortran submodules to improve compilation.
- Added a pfio demo for MAPL FLAP users
- Fixed pfio_MAPL_demo.F90
- Fixed mismatch of ESMF_Initialize() and ESMF_Finalize()
- Fixed bug in MAPL_Shmem causing infinite loop when relesing shared memory
- Moved down adding pflogger in CMakeLists.txt
- Added condition to find pflogger
- New interface to MAPL_GetResource to pass config rather than MAPL object
- Re-org subroutine finalize_io_clients_servers to avoid missing calls
- Use
ESMF_Finalize
instead ofMPI_Finalize
in Cap - Allow the NRL Solar Data table read function to skip commented lines
- Updated
components.yaml
to be in sync with GEOSgcm:- ESMA_env v3.2.1
- ESMA_cmake v3.4.0
- Added return code in start_global_profiler()
- Fixed during-run timer output for perpetual year runs
- Fixed bug prevent "little" cfio from reading new cubed sphere files
- Fixed bug in
SimpleCommSplitter.F90
- pFIO/KeywordEnforcer.F90 duplicated functionality now in shared/KeywordEnforcer.F90, and has been removed in favor of the other.
- A new flag to timestamp average collections at the beginning of the averaging interval
- Ability to run MultiGroupServer and model in a single node
- Add command line option --one_node_output
- Ability to split fields with ungridded dimensions (and not only 4d).
- Ability to add alias names to the split fields
- Added MAPL_SimpleBundleCreateEmpty procedure to MAPL_SimpleBundleCreate.
- Add MAPL_TransposeaRegridderMod to MAPL_Mod
- Nearest-neighbor interpolation option for ExtData (keyword: 'E')
- Added pflogger_stub directory. With
-DBUILD_WITH_PFLOGGER=OFF
, it is built and linked to replace pFlogger library. - Added new CI test using Intel oneAPI
- Add function to free communicators that is split by SimpleCommSplitter
- Add with_io_profiler option
- Changed the interface to TimeData to have an optional "funits" argument (defaults to "minutes")
- Changed time units to "days" for monthly collections
- Simplified the logic for timestamping offsets
- Setting and getting UNGRIDDED_DIMS attribute uses now single quoted string
- Do not output
cubed_sphere
andorientation
variables in native History output as pFIO at present does not handle string variables - Updated Python scripts to work with Python 2 or 3. Scripts were:
base/mapl_tree.py
base/mapl_vlist.py
Apps/MAPL_GridCompSpecs_ACG.py
- Nullified pointers for deactivated optional state elements for the grid compe spec code generator ACG.
- Updated
components.yaml
:- ESMA_env v3.2.0 (Baselibs 6.1.0 <==> ESMF 8.1.0)
- ESMA_cmake v3.3.9 (adds ability to see GFE namespace option,
BUILD_WITH_PFLOGGER
)
- Update CI images to 6.1.0
- Updated MAPL to have the ability to use the new GFE namespace in CMake. (
gftl
-->GFTL::gftl
).- The default in ESMA_cmake v3.3.8 is not enabled. To enable use
-DESMA_USE_GFE_NAMESPACE=ON
. - NOTE: This requires Baselibs 6.2.0 or higher when using Baselibs.
- The default in ESMA_cmake v3.3.8 is not enabled. To enable use
- Updated the non-PersistSolar branch of
MAPL_SunGetSolarConstantFromNRLFile
to use Solar Cycle 24 as we are now in Cycle 25.
- Add _RETURN(_SUCCESS) to MAPL_SimpleBundle routines
- Fixed possibly uninitialized values when handling members of Segment_T derived type. Helps on the Rome nodes.
- Fixed print diagnostics for monthly collections (proper reporting of frequency, duration, eliminated acc_interval)
- Fixed another bug related to the incorrect time increment for monthly averaged collections
- Fixed few memory leaks (average and stampOffset arrays were allocated twice)
- Fixed a bug related to incorrect time increment attribute for a monthly collection
- Fixed a bug related to the naming scheme for split fields when ungrid size is 1
- Fixed unset UNGRIDDED_DIMS attribute bug
- Fixes ESMF logging errors related to expressions in History
- Fixed error handling in profiler/BaseProfiler.F90
- Fix memory leak when using fast_oserver in write_restart_by_oserver
- Bumped cube version to 2.91 in global metadata
- Change calls to
system_clock()
to beINT64
(#511) - CMake updates to allow NAG Fortran build
- Converted some remaining
real*8
-type declarations to bereal(kind=REAL64)
-style - Eliminated (almost) all compiler warnings for Intel compiler
- Removed conditional around declaring pointers in code emitted by grid comp ACG.
- Fixed bugs in ESMFL and MAPL_CFIOReadParallel to support GEOSadas
- Remove some unnecessary MPI_Comm_dup calls. Some of those call are actually bugs
- Add support for multi-run-phase for root gridcomp
- Fixed spliiting the same field in multiple collections
- Fix out-of-bound access when printing pFIO message
- Removed program tstqsat.F90 from MAPL.base library. A followup should add cmake logic to create an executable or just delete the file.
- CMake workaround for macOS + Intel oneAPI FLAP bug (#644)
- Fixed size of unallocated array for gfortran
- Fixed counting of backend npes for assert
- Disable throughput reporting if an external clock is driving CapGridComp
- Comment out profiler in output server
- Add profiler for output server
- New overload for MAPL_ConfigSetAttribute to support array of integers
- New overload for MAPL_ConfigSetAttribute to support array of reals
- Add return code to constructor method for MAPL Cap gridded component to allow applications to fail gracefully if an error occurs
- Added ability to "attach" to the pfafstetter grid for land tiles for components running directly on the catchments
- Change to non-blocking send and receive from frontend to beckend in the class MultiGroupServer
- Change one sided mpi_put to mpi_send and receive pair in the class MultiGroupServer
- Change command line interface to --npes_backend_pernode to avoid confusion
- Remove self-defined-in-file MAPL macros
- Fix bug in HorzIJ routine to place geospatial points when the grid units are degrees
- Have CMake automatically gitignore build and install dirs
- Properly set return code for MAPL Cap methods
- Remove some GFORTRAN workarounds in MAPL_LocStreamMod (some still needed for GNU layout regression, #733)
- Fix issue with History when field names have "." in them
- Completed new capability to conseratively regrid horizontal fluxes Important constraint is that the input grid must be a refinement of the output grid.
- Improvement to ExtDataDriver when generating synthetic data
- Allow user to specify decomposition used by grids in History output, useful for testing
- Add %S as seconds token to grads style StringTemplate
- Add new bundle IO routines for non performance critical IO to eventually depreciate MAPL_CFIO and MAPL_cfio
- Fix MAPL_AddChildFromDSO
- Move to ESMA_cmake v3.3.6
- Remove requirement for HDF5 Fortran bindings in MAPL
- Fixes build of MAPL on non-Baselibs machines
- Add option to compute variance of tiles when doing T2G locstream transform
- Add option fast_oclient that waits before using oserver. It would not wait after done message are sent
- Added new
is_valid_date()
andis_valid_time()
functions to make sure invalid times and dates are not sent to MAPL
-
For MultiGroupServer, the backend and frontend share each node
-
Moved
MAPL_HistoryGridComp.F90
and related files togridcomps/History
-
Updated
Python/MAPL/constants.py
to have the same constants asMAPL_Constants.F90
-
Major refactoring related to MAPL generic capabilities
-
Created new subdirectory "generic"
-
Modified interface to MAPL_Get() to use ALLOCATABLE for GEX, GIM, GCS, and GCnamelist. Original interface assumed these are contiguous which will not be sustainable under the planned changes.
-
(Re)Introduce fundamental classes in generic subdir. Made MAPL_MetaComp an extension of AbstractComponentNode, and provided stub implementations for 3 methods. (Commenting out other interfaces in the abstract class for now.)
-
Activate get_parent(), add_child(), and num_children()
-
Introduced AbstractComposite and ConcreteComposite
These are isolate the responsibility for managing the component hierarchy. CompositeComponite then blends in ConcreteComposite into the AbstractFrameworkComponent class.
-
Extracted internal state from MAPL_MetaComp
-
Started moving derived types related to import/export specification and such. The goal will be to then refactor into proper classes with encapsulation.
-
Introducing Vector container for array of pointers to VarSpecType.
First brute force attempt resulted in run-time issues that were difficult to trace. So going gradually. Have introduced a StateSpecification type that hold the legacy array of pointers and a vector and methods that will enable keeping both representations consistent.
New representation is not used yet.
Various attempts to update use of MAPL_VarSpec based upon vectors were failing due to multiple pointer associations across objects.
The basic vector was modified to be MAPL_VarSpec instead of MAPL_VarSpecType, and now all works.
Wrapped new procedure with legacy interface.
HistoryGridComp uses the older interface in a way that is not immediately fixable.
-
MAPL_GenericGrid
- Created new module in generic for and renamed to MaplGrid
- moved component from MAPL_MetaComp to BaseFrameworkComponent
-
Moved 'lgr' component to baseFrameworkComponent.
- Add obsolete warning to deprecated interface
- Migrated some grid methods to new class.
- This necessitated moving some procedures from MAPL_Base into MAPL_Generic.
-
Prepping VarSpecMod for relocation.
- Removed dependencies on MAPL_IO and MAPL_comms. Used pflogger to replicate the functionality.
- Eliminated dependence of VarSpec on Base.
- Moved some parameters into new Enumerator module in ./shared. MAPL_Base still needs to republish them to avoid issues with external codes.
-
Introduced a MaplShared package to export everything from
-
Migrated VarSpec to ./generic.
-
Eliminated use of MAPL_Communicators in MAPL_CFIO.F90.
- Side benefit - eliminated lots of unused routines and logic associated with old and new o-server.
-
Lots of things related to MAPL_Communicators and old O-server were eliminated.
-
Kludgy relocation of component logger.
-
MAPL_Initialize is needed in each test layer so pulled it over to the pfunit directory.
-
- Fixes for allowing forked PRs to pass CI
- Fixes incorrect referrencing of R4 variables when reading R8 tile vars in base/MAPL_IO.F90
- Use integer to represent logical internally in pFIO utilities to avoid non-standard transfer
- Modified horizontal ij search algorithm in MAPL_Base.F90 to use general bisection search to fix capaibility issues with non-gmao created cubed sphere grids
- Added an
ExternalGridManager
, to allow MAPL to have knowledge of external grids (for NUOPC). - Added command line interface option
--isolate_nodes
. By default it is.true.
- Add stretching factors to file if applicable in cubed-sphere output via History and uptick to cube version 2.91
- Ability to register protoype (non-ESMF) regridders in NewRegridderManager
- Make the default clobber rather than no clobber in NetCDF formatter in PFIO
- Add basic check that the restart files match the application grid
- Add new
MAPL_AddChildFromDSO
module procedure forMAPL_AddChild
- Move MAPL_Cap, CapGridComp, and NUOPCwrapper to new directory in anticipation of refactored ExtData that will not live in base
- Convert
file(GLOB)
to explicit list - Moved modules into separate files.
- Updated various modules to use the standard
_ASSERT()
and_VERIFY()
macros instead of ad-hoc ones. - MAPL (sub-)libraries are now built as
TYPE SHARED
(needed for DSO work) - Updated
components.yaml
- ESMA_env v3.1.3
- ESMA_cmake v3.3.5
- Update CI image to use Baselibs v6.0.27
- Added ability to inject grid into root child GridComp (for NUOPC).
- Added ability to use external clock (for NUOPC).
- Enabled building and installing as a standalone library, using external dependencies.
- Change CI Image to 6.0.22.
- Updated
components.yaml
- Move to ESMA_env v3.1.0
- Move to ESMA_cmake v3.3.0 (REQUIRED due to Baselibs detection changes and
find_package(FLAP)
moved to MAPL)
- Bug in pfio tests when compiled with Debug flag
- Bug in injecting grid into root child GridComp (for NUOPC).
- Bug preventing components from advancing when an external clock is used
- Added an external grid and clock setter (for NUOPC).
- Fixed logic to allow proper termination of all imports except those specified
- Added fixture entry to
components.yaml
(requires mepo v1.23.0 or higher)
- Fixed integer overflow in memutils for big memory systems
- Fix bug with segment alarm when processing a monthly mean collection
- Increased the width of the
#-cycles
column in profiler output - Added Docker authentication to CI
- Updated mepo components to match GEOSgcm
- Fixed bug with reading in cubed-sphere files that have the corners
- Fix bug with using coarse grids in History and ExtData
- Fixed a bug in ExtData when extrapolating on a Leap Day (#563)
- Added a deflate and bit shaving option to Regrid_Util.x
- Updated Github Docker CI image
- Fixed bug in ExtData when using debug logger
- Add MultiComm, MultiGroupi and MultiLayer to include front ends and back ends in the oserver
- Added routine to finalize the ioservers so that it can be called by another application using cap, like JEDI
- Re-added CircleCI with FV3 standalone test
- Add ability to run multiple forward time integrations within one execution for JEDI (#529)
- Added mpeu
StrTemplate
replacement to MAPL
- Automate the server pool split and history work distribution when there are multiple oservers
- Moved more code to use pFlogger
- Update to ESMA_cmake v3.2.1 and ESMA_env v3.0.0
- Update GitHub Actions to use Ubuntu 20/GCC 10 image
- Updated CircleCI image to use 6.0.16 Baselibs
- Refactor the option WRITE_RESTART_BY_OSERVER
- Change the writing rank calculation in ServerThread.F90
- Cleanup of the NUOPC Wrapper's error handling using macros
- Removed non-standard OpenMP pragma
- Fixed problem with name mangling in ACG
- Fix MAPL comm bug with NUOPC
- Fixed pointer issue exposed by GNU
- Fixed ESMF logging errors with non-72-level runs (#480)
- Remove unneeded
use Env;
in stub generator - Fixed tripolar metadata output (#528)
- Fixed
MAPL_ErrLogMain.h
for use with GSI_App - Added MAPL_CFIOReadParallel change from Ricardo for TimeList
- Remove MAPL_ioClients.F90 and move some subroutines to ClientManager.F90
- Remove unneeded GNU make file
- Update to ESMA_env v2.1.6
- Fixed double timers from profiler (#472)
- Fix for the
_VERIFY()
macro (#464)
- Fix to
sun.H
to allow CFMIP SCM cases to run
- CMake option BUILD_WITH_FLAP which is default ON. When set to OFF, the build skips layers that require FLAP. (Supports GCHP)
- Updated Github Actions to not build GCM if trivial PR
- Fixed Python ACG to work with Python 2.x
- Added LLC grid factory
- Added support for wildcard expansions (using regex)
- Added "public" for 2 interfaces: ESMFL_Diff, and ESMFL_statistics
- Added support for sampling along a 1-D timeseries in History
- Introduced generic subdirectory
- String.F90 - encapsulates deferred length strings
- Added target "build-tests" that will build all tests. This will enable ctest to be more selective about which tests.
- Added ability of MAPL_GridCompGetFriendlies to recurse its children
- Added
esma_add_subdirectory(ESMA_env)
toCMakeLists.txt
to allow installation of various files to thebin
andetc
directories under install prefix - Added wildcard support for short name in automatic code generator for gridded components.
- Added new CI test for building GCM on pull request
-
Refactored aliases in python automatic code generator. Now aliases are tailored per column. This allows T/F to be safely used as aliases for .true./.false. without risking things like the short name of Temperature.
-
Move to use Baselibs 6.0.13
- Update CI to use Baselibs 6.0.13 (GCC 9.3.0)
- Update
components.yaml
- ESMA_env v2.1.5
- ESMA_cmake v3.0.3
-
Updates for JEDI/ecbuild compatibility
- Updates to CMake to use
NOINSTALL
- Update
components.yaml
to useNOINSTALL
- ESMA_cmake v3.0.6
- ecbuild geos/v1.0.5
- Updates to CMake to use
-
Renamed MAPL_Profiler executable demo.x to profiler.x
-
Renamed directories. Sub-libraries now named MAPL.
./MAPL_Base
=>./base
(MAPL.base
)./GMAO_pFIO
=>./pfio
./MAPL_Profiler
=>./profiler
./MAPL_Shared
=>./shared
-
Updated
components.yaml
to useESMA_env
andESMA_cmake
if building MAPL as standalone
- Removed duplicate
Python
directory - Removed CircleCI
- Updates for JEDI/ecbuild compatibility
- Updates to CMake to use
NOINSTALL
- Updates to
components.yaml
to support use ofNOINSTALL
- Updates to CMake to use
- Added MODE argument to MAPL_RecordAlarmIsNeeded. This is in sync with "yuri-s2s3-unstable-SLES12" CVS tag. Needed for "dual ocean"
- Fixed logger creation (similar fix was already applied to develop branch to fix issue #397)
- Initialize pFlogger in
Regrid_Util.x
- MAPL now requires Baselibs 6.0.12 (pFlogger v1.4.1)
- Update CI to use Baselibs 6.0.12
- Update
components.yaml
- ESMA_env v2.1.2
- ESMA_cmake v3.0.2
- Fix for
MPI_Finalize
error with Intel MPI - Fix
ArrDescrInit
routine - Fixes for ESMF logging (when run with MULTI)
- Remove
MPI_comm_set_errhandler
workaround
- Fixed bug when output fields on tripolar grid in History
- Fixed bug during replay when the refresh template in ExtData is a time interval
- Added a default initialization clause for pFlogger so that INFO messages go to console.
- Workaround for MPT 2.17 build bug with
MPI_Comm_set_errhandler
- Corrected handling of Equation of Time in orbit (off by default)
- Made ASSERT in ExtData more explicit in case of missing variables.
- (re) Introduced MAPL Profiling package
- Improved diagnostic message in HistoryGridComp for misspelled fields/bundles
- Removed CVS keywords
- Corrected Python code generator scripts for component import/export specs.
- Add directories to
.gitignore
for building withmepo
- Bug building with mixed Intel/GCC compilers
- Implemented workaround to cmake error that happens when building tests in parallel.
- Set correct ESMA_env tag in
components.yaml
- Updated
components.yaml
to be inline with GEOSgcm - Minor problem in GMAO_pFIO Cmakelists (consistency with PRIVATE)
- Removed support for
checkout_externals
and moved solely tomepo
- Removed
Externals.cfg
- Removed
checkout_externals
code inCMakeLists.txt
- Removed
-
Added record capabilites for the History restarts
-
Added configuration for CircleCI and Github Actions
- Builds MAPL using GCC 9.2.0 and Open MPI 4.0.2
- Builds and runs
pFIO_tests
andMAPL_Base_tests
-
Add precession of equinox (not on by default)
-
Imported Python/MAPL subdir (old, but never imported to GitHub)
-
Python automatic code generator for grid comp include files
-
Added support to use pFlogger for logging
- Command line option:
--logging_config=<file>
- Command line option:
-
Added ability for History to do monthly mean. This also involves reading and writing MAPL_GenericCpl checkpoints
- Added code to suppress (seemingly) spurious MPI_Finalize errors at end
of model run. Suppression does not happen if built with
-DCMAKE_BUILD_TYPE=Debug
- Fixes an issue with a too-large MPI tag.
- Fixes an issue when regridding thru the locstream in the history component.
- Fixed a logic bug in the MAPL Profilers that make affect certain runs when using NUOPC.
- Fix for handling coarse grids at high-resolution in ExtData
- Restoring functionality with the tripolar grid that was lost when the develop branch was merged into master for version 2.0.0
- New IO server implemented in PFIO library.
- New command line arguments to the MAPL_Cap to run multiple input and output servers on dedicated resources.
- Code that uses MAPL should now
use MAPL
instead ofuse MAPL_Mod
. - CMakeLists.txt using MAPL should now have dependencies to
MAPL
and notMAPL_Base
. - History and ExtData component use the PFIO IO server for all file access. Default mode is to run the IO servers on the same resources as the application.
- The ExtData and History components use ESMF regridding for all operations and replace the FV3 regridding routines used for bilinear regridding and the MAPL tiling regridder for conservative regridding.
- Correct handling of vector regridding in MAPL_CFIO.F90 layer
- Added
CHANGELOG.md
- Check status of round robin and make sure that the nodearray is allocated
- Allow per-cell counters to be properly reset (if they are needed)
- Must create file unit on all processors (
all_pes=.true.
) when writing binary History output
- Added the option to add a prefix to the name in
GetFriendlies
- Fix a bug with exact reply using binary files
- Make
MAPL_ESMFStateReadFromFile
routine public
- Add ability to change step size for average sun angle for LDAS
- Fixes for the EASE index
- Add support for LDAS ensembles
- Updates to allow MAPL to better support the tripolar grid
- Fixes made to
MAPL_TilingRegridder.F90
- Changes to correct for new pressure after horizontal regridding
- Moved to use ESMA_cmake v1.0.9
- Use the new
LATEX_FOUND
capability ofESMA_cmake
to determine if TeX processing can occur
- Added
CODEOWNERS
file
- Deleted unneeded GNUmakefiles
- Install Perl script missed in last release
- First commit of MAPL 1.x with semantic versioning on GitHub