Skip to content

Releases: NOAA-GFDL/FMS

2026.01

29 Jan 21:36
ddd2ccf

Choose a tag to compare

[2026.01] - 2026-01-29

Known Issues

  • INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The -check uninit flag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information.
  • Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Added

  • Modifed and added tests for future generalized indices updates (#1763)
  • OFFLOAD: Added a prototype for offloading io to a smaller set of PE's offloading_io_mod (#1774)

Changed

  • Legacy field_table and data_table ASCII formats are now deprecated and will output a warning if used (#1802)
  • MPP: Replaced point-to-point communication with collective mode in mpp_gather routines (#1775)
  • FMS2_IO: Refactored API for enabling MPI-IO support (#1789)
  • DIAG_MANAGER: The updated diag manager will now add the experiment title as a global attribute (#1817)

Fixed

  • Fixed multiple compiler warnings raised from GCC 15 (#1765)
  • Fixed GNU warnings with the -DPORTABLE_KINDS flag (#1792)
  • DIAG_MANAGER: Fixed issue with not getting correct output name when adding the cell_measure attribute (#1815)
  • DIAG_MANAGER: Fixed error when setting zbounds for more than one variable (#1813)
  • CMAKE: Fixed handling of libyaml dependency when using a r4/r8 option (#1822)

Removed

  • EXCHANGE: Removed cray pointer usage from xgrid.F90 (#1778)

Tag Commit Hashes

2025.04

29 Sep 21:26
3ac30e9

Choose a tag to compare

[2025.04] - 2025-09-29

Known Issues

  • INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The -check uninit flag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information.
  • Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Added

  • TIME_INTERP: Add conservative support in time_interp_external (#1773)
  • CMAKE: add unit testing information for cmake (#1772)
  • TIME_INTERP: 1D time_interp_external and time_interp_external_bridge (#1758)
  • FMS2_IO: Feature/mpp-gather-io-write-2d-3d (#1750)
  • DIAG_INTEGRAL: set the init time to a value in diag_integral test (#1730)
  • TEST_FMS: add fms_end call to test_grid2 (#1728)
  • FMS2_IO: add fms2_io generalized indices test (#1734)
  • ONEAPI: add checks for oneapi bug (#1712)
  • FMS2_IO: Add collective writes (#1733)
  • DATA_OVERRIDE: add a test to test the multi-file capability in data_override (#1745)

Changed

  • CMAKE: update cmake build for testing, build types and mixed precision (#1694)
  • LICENSE: update (#1721)
  • DIAG_MANAGER: Collective IO in modern diag manager (#1756)
  • MODERN_DIAG_MANAGER: Improvements to the diag_table.yaml format (#1731)
  • DOCS: update FMS codeowners to be default owners only (#1722)
  • DOCS: append dev to version number post-release (#1726)
  • DOCS: updates README for license update. (#1744)
  • FIELD_MANAGER: move the parse.inc in field_manager to include directory (#1740)

Fixed

  • CMAKE: builds for some stuff that broke with the cmake updates on Alpha tag(#1759)
  • HORIZ_INTERP: fixes the r4 tests to build properly(#1736)
  • DIAG_MANAGER: modern diag manager errors when looping through number of variables (#1761)

Removed

  • TIME_MANAGER: tests with set/get_date_gregorian_old (#1748)
  • FIELD_MANAGER: removed the path length variable (#1702)
  • INTERPOLATOR: remove fms2io_interpolator init (#1723)
  • DIAG_MANAGER: array bounds error in the old diag manager (#1751)
  • MOSAIC2: Grid2 mod Initialization Fix (#1742)

Tag Commit Hashes

2025.03

24 Jun 20:48
bd32c3b

Choose a tag to compare

[2025.03] - 2025-06-24

Known Issues

  • INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The -check uninit flag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information.
  • Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Added

  • LICENSE: added notice about the change to Apache license. (#1685)
  • DIAG_MANAGER: added standard name to diag manifest yaml (#1692)
  • FMS2_IO: added netcdf chunksizes argument to register_field routines (#1696)
  • DIAG_MANAGER: added more robust diag manager tests for when outputting data at every time step (#1688)
  • FM2_IO: added a test for collective netcdf mpi io (#1647)

Changed

  • DOCS: style guide update (#1642)
  • DOCS: updates to contributing guide to reflect modern FMS practices (#1708)
  • DOCS: fixed typos throughout the code (#1703)
  • DATA_OVERRIDE: simplify argument lists of subroutines in get_grid_version_mod (#1514)

Fixed

  • DIAG_MANAGER: fixed the time variable in instantaneous outputs from diag_manager in both openmp and non-openmp cases (#1690)
  • DIAG_MANAGER: fixed number of time levels in diag manifest yaml for subregional files. (#1698)
  • LIBFMS: fixed missed aliases in libFMS file (#1303)
  • DIAG_MANAGER: fixed new file and file duration in MODERN_DIAG_MANAGER (#1705)

Removed

  • FMS_IO/MPP_IO: removed fms_io/mpp_io modules (#1669)
  • AMIP_INTERP: removed the sst_anom and sst_ncep varaibles (#1695)

Tag Commit Hashes

2025.02.01

13 May 20:00
2bccfd9

Choose a tag to compare

[2025.02.01] - 2025-05-13

Known Issues

  • DIAG_MANAGER(legacy): When attempting to use 0 days frequency in the legacy diag manager and the data is send to diag manager from an openmp region, the Time dimension will not be correct.
  • INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The -check uninit flag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information.
  • Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Fixed

  • DIAG_MANAGER: add standard name to diag manifest and fix for subregional time levels (#1699)

2025.02

28 Apr 20:29
4dddd3f

Choose a tag to compare

[2025.02] - 2025-04-28

Known Issues

  • DIAG_MANAGER(legacy): When attempting to use 0 days frequency in the legacy diag manager and the data is send to diag manager from an openmp region, the Time dimension will not be correct.
  • INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error (#1680). The -check uninit flag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information.
  • Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Added

  • YAML SUPPORT: Messages indicating which table format being used (yaml or legacy) will now be output by the diag_manager, field_manager, and data_override modules. (#1676)
  • DIAG_MANAGER: Adds the number of tiles, number of distributed files, and number of time levels written for a given file to the output diag manifest yaml file. (#1661) + (#1648)
  • GENERIC_EXCHANGE: Adds a new "gex" module to the coupler subdirectory to provide a generic interface to pass (non-tracer) diagnostic fields across components. (#1637)

Changed

  • MPP: Optimized mpp_gather and mpp_scatter interfaces by leveraging native MPI collectives in mpp_pelist_scatter and mpp_gather_1D(_V) routines. (#1655)
  • DIAG_MANAGER: diag_out.yaml output file has been renamed to diag_manifest and will include the root PE number and ensemble number. ie: diag_manifest.yaml.0 or diag_manager.ens_01.yaml.0 when using an ensemble. (#1661) (#1654) (#1646)
  • EXCHANGE: Increased max number of fields for exchange grid from 80 to 100 (#1637)
  • DATA_OVERRIDE: Initializes both r4 and r8 versions of the module by default if no mode argument is given to specialize a specific real size.(#1638)

Fixed

  • MPP: Errors from unallocated data on non-root pes in mpp_scatter/gather routines. (#1672)
  • DIAG_MANAGER: Issue causing an extra unlimited dimension to be written out in history files when mixing static and non-static variables.(#1668)
  • CMAKE BUILD: Fixes missing "C" component for OpenMP libraries in FMS export configuration file (#1663)

Removed

  • FIELD_MANAGER: Removed public declarations for routines that are already included in public interfaces. (#1317)

Tag Commit Hashes

2025.01.02

06 Mar 16:44
80cf909

Choose a tag to compare

[2025.01.02] - 2025-03-06

Known Issues

  • Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so this differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.
  • INTEL: The -check uninit flag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the -check all flag, -check all,nouninit should be used instead.

Changed

  • DIAG_MANAGER: Change name of yaml output file to include the root PE number at the end in order to prevent overwrites (#1654)

2025.01.01

26 Feb 21:01
2480e11

Choose a tag to compare

[2025.01.01] - 2025-02-26

Known Issues

  • Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.
  • INTEL: The -check uninit flag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the -check all flag, -check all,nouninit should be used instead.

Changed

  • DIAG_MANAGER: Changed the name of the yaml output file from "diag_out.yaml" to "diag_manifest.yaml" (#1646)

Added

  • DIAG_MANAGER: Added field to the yaml output file to specify the number of time levels written to a given file (#1648)

2025.01

30 Jan 20:49
60f2c1a

Choose a tag to compare

[2025.01] - 2025-01-30

Known Issues

  • Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.
  • INTEL: The -check uninit flag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the -check all flag, -check all,nouninit should be used instead.

Added

  • ENSEMBLE YAML SUPPORT: Adds functionality to the diag_manager, field_manager, and data_override to support unique yaml tables for each member of an ensemble or nest. More information can be found in in the diag_manager and data_override README files (#1585)
  • BUILD: Adds options to set PORTABLE_KINDS macro in CMake and autotools builds (#1572)
  • BUILD(autotools): Adds check for cray compiler .mod file capitalization and will now run a previously added, but unused, m4 check for newunit support. (#1561)
  • BUILD(cmake): Adds CMake functionality to generate a pkgconfig file (#1565)
  • DIAG_MANAGER: Modifies diag_field_add_attribute to accept both r4 and r8 values (#1625)

Changed

  • MPP_IO/FMS_IO: A deprecation warning will now be output when using these modules or enabling the -Duse_deprecated_io flag via the build systems. Usage of these modules will be deprecated in the next release. (#1609)
  • DIAG_MANAGER: Made changes to the reduction routine to improve performance of loop and to reduce unnecessary calls if there isn't any new data to process (#1634)
  • MOSAIC/GRID_UTILS: The mosaic directory has been refactored and is now called grid_utils. (#1626) As part of these updates:
    • The create_xgrid.c/h files have been moved to the horiz_interp/include directory
    • Any any unused .c/.h files or functions from mosaic have been removed
    • C functions have been moved between the grid_utils.c, tree_utils.c and create_xgrid.c files depending on the functions usage
  • DIAG_MANAGER: Changes fms_diag_accept_data from a function to a subroutine (#1610)

Fixed

  • DIAG_MANAGER: Fixes functionality of the new_file_freq, start_time, and file_duration keys in the diag_manager. (#1633)
  • MOSAIC2: Fixes argument intent for calc_mosaic_grid_area and makes changes to the test to avoid divide-by-zero errors (#1597)
  • YAML_PARSER: Fixes incorrect argument type in c-binding causing type mismatch errors with the cray compiler (#1580)
  • BUILD(CMake): Removes usage of hardcoded lib directory path (#1589)
  • HORIZ_INTERP: Adds allocation checks before checking fields for horiz_interp_type_eq (#1584)
  • BUILD: Fixed syntax error in column_diagnostics Makefile.am (#1598)
  • DIAG_MANAGER: Adds a workaround for a cray compiler bug where the NULL() intrinsic causes a type mismatch when passed in as an argument (#1560)
  • LIBFMS: Adds missed f2c_string routine to libFMS.F90 (#1601)
  • BUILD(autotools): Fixes false ./configure failures when using intel compilers and the -warn flag (#1583)
  • BLOCK_CONTROL: Updates non-uniform block size warning to only output on the root pe (#1588)
  • FMS2_IO: Fixes z-axis domain reads when edge lengths and corners are specified (#1620)
  • MPP: Fixes temporary array compiler warning during mpp_init (#1628)
  • SAT_VAPOR_PRES: Fixes bad temperature output not printing on non-root pe's (#1619)
  • ASTRONOMY: Adds allocation checks for module variables before being deallocated in astronomy_end (#1629)
  • TESTS: Fixes multiple unit test failures, including any failing tests when compiled with GNU debug flags (#1575, #1595, #1579, #1607, #1622)
  • TESTS: Fixes multiple compilation and runtime errors from the unit tests when compiled with the cray compiler (#1599, #1602, #1603, #1604, #1605)
  • TESTS: Replaces usage of fms_platform.h includes with platform_mod in mpp unit tests (#1616)
  • TESTS: Add workaround for ifx failures in diag_integral and topography tests (#1606)

Tag Commit Hashes

2024.03

22 Aug 18:26
f703b82

Choose a tag to compare

[2024.03] - 2024-08-22

Known Issues

  • Diag Manager Rewrite: See the previous releases for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.
  • INTEL: The -check uninit flag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the -check all flag, -check all,nouninit should be used instead.

Added

  • DATA_OVERRIDE: Adds a namelist flag use_center_grid_points which, if true, enables reading the centroid values from the grid spec for ocean and ice models. This fixes issues with grid files that have longitudes ranges from 0:180 and then -180:0, but will cause answer changes if enabled. (#1566)
  • DATA_OVERRIDE: Adds support for reading external weight files. Currently only supported for fregrid generated files while using the bilinear interpolation method. Documentation for this feature can be found in data_override/README.md. (#1556)
  • PLATFORM: Adds two constants FMS_PATH_LEN and FMS_FILE_LEN and uses it across the code for any file path or file name character strings. They default to 1024 and 255 but can also be set by the FMS_MAX_PATH_LEN and FMS_MAX_FILE_LEN CPP macros. (#1567)
  • CMAKE: Adds Cmake option to support building shared libraries (#1559)

Changed

  • DIAG_MANAGER: Simplifies the diag_table.yaml format by allowing module, reduction, and kind to be set on a file level, with the ability to override for a specific field. (#1545)
  • FIELD_MANAGER: Updated and refactored the fm_yaml_mod module for a new table format to remove the subparams key. (#1547)
  • DATA_OVERRIDE: Updates the yaml format to be improve readablity and to be more consistent in key names. Additional documentation for the new format can be found in data_override/README.md. (#1556)

Fixed

  • PARSER: Adds error code checks to the yaml parser to prevent code from hanging on invalid yamls (#1563)
  • PARSER: Adds ability to read in generic blocks to support field_manager updates. (#1519)
  • CRAY COMPILER SUPPORT: Updated any multi-line string literals to be compatible with the cray compiler. (#1554)

Removed

  • DIAG_MANAGER: Removed diag_table schemas from FMS and moved them to the gfdl_msd_schemas repository, and updates the diag_manager documentation markdowns. (#1543)

Tag Commit Hashes

2024.02

11 Jul 18:49
8bf0739

Choose a tag to compare

[2024.02] - 2024-07-11

Known Issues

  • Diag Manager Rewrite: See 2024.01.02 for known output file differences regarding the new diag manager. The new diag_manager is disabled by default, so these differences will only be present if use_modern_diag is set to true in the diag_manager_nml.
  • BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
  • GCC: version 14.1.0 is unsupported due to a bug with strings that has come up previously in earlier versions. This will be caught by the configure script, but will cause compilation errors if using other build systems.

Added

  • TIME_INTERP: Enables use of verbose option in time_interp_external2 calls from data_override. The option is enabled in data_override_nml by setting debug_data_override to true. (#1516)
  • COUPLER: Adds optional argument to coupler_types_send_data routine that contains the return statuses for any calls made to the diag_manager's send_data routine. (#1530)
  • MPP: Adds a separate error log file warnfile.<root pe num>.out that only holds output from any mpp_error calls made during a run (#1544)

Changed

  • DIAG_MANAGER: The diag_field_log.out output file of all registered fields will now include the PE number of the root PE at the time of writing (ie. diag_field_log.out.0). This is to prevent overwritting the file in cases where the root PE may change. (#1497)

Fixed

  • CMAKE: Fixes real kind flags being overwritten when using the Debug release type (#1532)
  • HORIZ_INTERP: Fixes allocation issues when using method-specific horiz_interp_new routines (such as horiz_interp_bilinear_new) by setting is_allocated and the method_type during initialization for each method. (#1538)

Tag Commit Hashes