Skip to content

Releases: NOAA-GFDL/FMS

2023.01

03 Apr 19:18
8a78fac
Compare
Choose a tag to compare

[2023.01] - 2023-04-03

Known Issues

  • If using GCC 10 or higher as well as MPICH, compilation errors will occur unless -fallow-argument-mismatch is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).
  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue is resolved in later GCC releases.
  • When outputting sub-region diagnostics, the current diag_manager does not add "tileX" to the filename when using a cube sphere. This leads to trouble when trying to combine the files and regrid them (if the region is in two different tiles)

Added

  • DIAG_MANAGER: Added code refactored as part of larger diag_manager rewrite for the send_data routines. The refactored code is disabled by default and enabled by setting use_refactored_send to true in the diag_manager_nml, and should mirror current behaviour.
  • FMS2_IO: Added the ability to set deflate_level and shuffle netcdf options in fms2_io_nml. Also added functionality for registering dimensions as unlimited compressed.
  • YAML_PARSER: Added support for emitting multiple tabbed section keys to allow diag manager yaml output

Changed

  • STRING_UTILS: Extended the string interface in fms_string_utils_mod to accept reals of 4 or 8 kind, as well as 1, 2, and 3 dimensional real arrays
  • DIAG_MANAGER: Changed the log_diag_field_info routine to allow for specifying seperator
  • INTERPOLATOR(s): In horiz_interp, amip_interp and interpolator, changed pointers arrays into allocatables

Fixed

  • TRIDIAGONAL: Added OMP directives to prevent race conditions
  • DIAG_MANAGER: Added diag_send_data routine to fix class(*) related compiler issues from the refactor update
  • SAT_VAPOR_PRES_K: Removed implied saves causing issues with class(*) type checking
  • TIME_INTERP: Fixed naming conflicts between module level and local variables
  • YAML_PARSER: Fixed typo in variable name, rename variables to avoid fortran keywords
  • DOCS: Fixed incorrect serial build instructions
  • COMPILER SUPPORT: Fixed compilation errors with Intel's llvm-based compiler and added support for the CMake build. Also fixed mpp_checksum unit test failures with openmpi and nvhpc compilation issues.
  • TIME_MANAGER: Fixed an bug from PR #1169 that was causing answer changes in land models

Tag Commit Hashes

2022.04

13 Oct 17:09
b21a5e8
Compare
Choose a tag to compare

[2022.04] - 2022-10-13

Known Issues

  • If using GCC 10 or higher as well as MPICH, compilation errors will occur unless -fallow-argument-mismatch is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).
  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue is resolved in later GCC releases.
  • When outputting sub-region diagnostics, the current diag_manager does not add "tileX" to the filename when using a cube sphere. This leads to trouble when trying to combine the files and regrid them (if the region is in two different tiles)

Added

  • FIELD MANAGER: Adds support for reading field tables in the yaml format (field_table.yaml).
    Yaml input only be used if compiled with -Duse_yaml preprocessor flag, otherwise it will default
    to previous behaviour. The converter script to convert current field tables to the new format is
    publicly available here, although the conversions will also be done automatically in FRE.
  • FMS2_IO: Adds options to enable data compression and chunking for netcdf output in register_restart_field

Changed

  • BUILD: Improves the configuration check for the MPICH/GCC 10+ argument mismatch bug by replacing it with a m4 compile test

Fixed

  • Compiler Support: allows for compilation via the Cray/HP CCE compilers by fixing string concatenation compilation errors

Tag Commit Hashes

2022.03

01 Aug 15:20
1640fde
Compare
Choose a tag to compare

[2022.03] - 2022-08-01

Known Issues

  • If using GCC 10 or higher as well as MPICH, compilation errors will occur unless -fallow-argument-mismatch is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).
  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue is resolved in later GCC releases.
  • When outputting sub-region diagnostics, the current diag_manager does not add "tileX" to the filename when using a cube sphere. This leads to trouble when trying to combine the files and regrid them (if the region is in two different tiles)

Added

  • BUILD: Adds checks to autotools and cmake build files to solve compilation issues with GCC 10 and greater. Also adds a debug build type for CMake to allow for overriding compiler flags, and individual override flags for mixed precision routines.
  • DOCS: Additional information added for building and testing FMS with the build systems; renamed and moved autotools build document.
  • YAML: Adds support for writing yaml files through the fms_yaml_output_mod module

Changed

  • MIXED MODE: Expands support for mixed precision reals to the constants files, diag_manager, sat_vapor_pres, time_manager, and tracer_manager
  • FMS_IO: Increased the character length for restart file names to allow for longer paths

Fixed

  • COUPLER: Fixes global checksum being written to stdout by every core instead of just the root
  • DOCS: Fixed parsing issues with include and header files, adds class diagrams and layout improvements

Tag Commit Hashes

2022.02

29 Apr 13:04
0721d59
Compare
Choose a tag to compare

[2022.02] - 2022-04-29

Known Issues

  • If using GCC 10 or higher as well as MPICH, compilation errors will occur unless -fallow-argument-mismatch is included in the Fortran compiler flags
  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue is resolved in later GCC releases.

Added

  • STRING_UTILS: Adds a module, fms_string_utils_mod, for common string operations throughout FMS
  • LIBFMS: makes recently added routines available through the global fms module
  • CMAKE: Adds build option for position independent code
  • CONSTANTS: Adds macros to load constants for different modeling systems/uses between GFDL, GEOS and GFS. Can be selected in cmake with -DCONSTANTS=<GEOS|GFDL|GFS>

Changed

  • STRING_UTILS: Refactored string routine definitions from fms_mod and fms2_io_mod to be located in fms_string_utils_mod
  • CONSTANTS: Makes fmsconstants.F90 contain the constant definitions, with constants_mod refactored to hold the same values
  • MOSAIC2: changes grid 'version' names and documentation to be more descriptive

Removed

  • FMS_MOD: Removes fms_c.c and fms_c.h files from the fms directory

Fixed

  • FMS2_IO: Fixed bug casuing non-root pe's to fail during the flush_file routine

Tag Commit Hashes

2022.01

25 Mar 16:41
0d05112
Compare
Choose a tag to compare

[2022.01] - 2022-03-25

Known Issues

  • The MPICH MPI implementation is unsupported when used alongside GCC 10 or 11 due to compilation issues with the mixed precision reals. MPICH can still be used to compile FMS with GCC 9 or earlier, or with other compilers.
  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue appears to be resolved in later GCC releases

Added

  • FMS2_IO: Added a macro MAX_NUM_RESTART_VARS_ to allow the max amount of restart variables to be set at compile time
  • TESTS: Adds a configure option, --enable-code-coverage, to build a code coverage report using intel's codecov via make check-code-coverage
  • AFFINITY: Adds an initialization check to fms_affinity_set, and updates test program with init/end routines
  • FMS2_IO: Adds an optional argument to ignore embedded checksum checks when reading restart files

Changed

  • TESTING: Changes the testing suite scripts for various improvements such improved output, tests with input files, and adding/fixing new tests
  • MPP: Change variable names in mpp to use more inclusive language
  • DOCS: Updates to correct branch name and doxygen guide for functions, and adds CI information page

Fixed

  • Fixes compilation warnings throughout the code, mainly for uninitialized or unused variables
  • Fixed any code not adhering to the projects style guide (mainly line length fixes) so that all future changes can be checked with a linter
  • MOSAIC2: Adds r8_kind casts to calls to C routines in order match precision of doubles
  • TESTS: Fixes crashes in fms2_io tests from namelist read errors

Tag Commit Hashes

2021.04

23 Dec 18:19
d6081f5
Compare
Choose a tag to compare

[2021.04] - 2021-12-23

Known Issues

  • GCC 11.1.0 is unsupported due to compilation issues with select type. The issue appears to be resolved in later GCC releases

Added

  • PARSER: Adds a parser using the libyaml C library to support yaml format input files.
    Currently implemented in data override and can be enabled with the configure option --with-yaml or with CMake option -DWITH_YAML
  • FMS: Adds an interface, fms_c2f_string, to convert C strings and C pointers to Fortran strings
  • MPP: Adds a routine mpp_shift_nest_domains and a field to nest_domain_type to allow for modifying the position of a given nest domain
  • FMS2_IO: Reintroduces the option to flush_nc_files with fms2_io

Changed

  • DIAG_MANAGER: Cleans up IO code and replaces any remaining dependencies to mpp_io with fms2_io
  • FMS_IO: Changes to allow for custom paths for namelists, field_table, and the INPUT directory
  • EXCHANGE: Changes real sizes in xgrid and gradient modules to be explicitly r8_kind to prevent runtime issues with mixed precision

Deprecated

  • MPP: get_unit has been deperecated in favor of the Fortran intrinsic newunit and will now generate a warning if used

Removed

  • TIME_MANAGER: Removes deprecated array-based gregorian calender calculations that were replaced in 2021.02

Fixed

  • DIAG_MANAGER: Fixes issues with 3D diurnal diagnostic output and removes a redundant write_data call
  • TIME_INTERP: Fixes load_record read_data call for 3d variables with fms2_io and eliminates redundant data loading and validity checking for on-grid interpolations.
  • MPP: Fixed a bug with non-blocking domain updates failing on GNU compilers from uninitialized values
  • MPP: Fixed issues with the mpp_type_free function causing errors and memory leaks when freeing the mpp_byte type

Tag Commit Hashes

2021.03.01

07 Sep 19:50
0404daa
Compare
Choose a tag to compare

[2021.03.01] - 2021-09-07

Fixed

  • TIME_INTERP: Fixes issue in load_record when reading 3d variables with fms2_io and elimates redundant loads and validity checks for on-grid interpolations

Changed

  • Changes configure script to only check for gcc 11.1.0, not any gcc 11 version

2021.03

16 Aug 14:31
9d25a1e
Compare
Choose a tag to compare

[2021.03] - 2021-08-16

Known Issues

  • DIAG_MANAGER: 3D diurnal diagnostic variables are not supported in this version of FMS

Added

  • FMS2_IO: Documentation was added for FMS2_io to help users convert from fms_io/mpp_io

Changed

  • FMS2_IO: The error messages in FMS2_io were updated to give more useful information
  • TEST_FMS: The unit tests in mosaic, axis_utils, and time_interp_external were updated to use the FMS2_io version of these routines and are no longer skipped
  • DOCS: The doxygen generated documentation has been improved with more doxygen comments added and a more cohesive layout
  • TEST_FMS: Unit tests for time_manager were updated to use the new get/set_date_gregorian routines

Removed

  • MPP_IO: The namelist variable use_mpp_io was removed from interpolator, amip_interp, diag_manager, topography, xgrid, and data_override
  • MPP_IO: Any remaining fms_io/mpp_io calls from the source and test code were removed
  • FMS: Removes the hardcoded path for input.nml, path now may be specified in the call to fms_init

Fixed

  • MPP: Fixes algorithm used with nested grid updates to properly coalesce x-dir and y-dir pelists for vector quantities
  • CMAKE/AUTOTOOLS: Fixes for minor issues with filenames in both the CMake and autotools build systems
  • MPP: Restored deleted pset functionality needed by GFDL SCM by reinstating mpp_pset.F90
  • MPP: Fixed uninitialized variables for data domains in mpp domains broadcast routines
  • MPP: Minor memory leaks from deallocating domains
  • AXIS_UTILS: Fix PGI related error with string length sizes

Tag Commit Hashes

2021.02.01

09 Jul 15:17
879e883
Compare
Choose a tag to compare

[2021.02.01] - 2021-07-09

Fixed

  • MPP: Fixed uninitialized variables for data domains in mpp domain broadcast routines

Added

  • MPP: Restored deleted pset functionality needed by GFDL SCM by reinstating mpp_peset.F90

2021.02

20 May 17:46
b9fc651
Compare
Choose a tag to compare

[2021.02] - 2021-05-20

Known Issues

  • GCC: Version 11.1 of GNU's compilers are not currently supported due to new compilation issues

Added

  • FMS2_IO: Added fms2_io support for boundary condition restarts. register_restart_region_2d and register_restart_region_3d were added to fms2_io’s register_restart_field interface and read_restart_bc and write_restart_bc subroutines were added to read and write boundary conditions restarts. See test_fms/fms2_io/test_bc_restart.F90 for sample usage.
  • FMS2_IO: Added fms2_io’s version of set_filename_appendix. The string sent in will be appended to the filename of a restart/history file before the *.nc or before *.tile if tile is in the filename.
  • FMS2_IO: Added workarounds to get fms2_io code working with pgi
  • COUPLER_TYPES: Added fms2_io’s version of register_restarts_2/3d and CT_restore_state_2/3d to the coupler_type_register_restarts and coupler_type_restore_state interfaces in coupler_types. The fms_io’s versions were renamed as mpp_io_* and both versions may still be used. See test_fms/coupler/test_coupler_*d.F90 for sample usage.
  • MPP_DOMAINS: Added a subroutine mpp_create_super_grid_domain, which sets the indices of the input domain to match the supergrid domain.
  • MOSAIC2/GRID2: Added a version of grid.F90 that is suitable for use with fms2_io called grid2.F90, and moved it into the mosaic2 folder along with mosaic2.F90
  • FMS_MOD: Added grid_init and grid_end calls for use with grid2.F90
  • TIME_MANAGER: New set_date_gregorian and get_date_gregorian function/subroutine that do not use coded_date and date_to_day arrays are added and set as default. The original get_date_gregorian and set_date_gregorian have been renamed to get_date_gregorian_old and set_date_gregorian_old and can be used by adding old_method=.true. optional argument to set_date and get_date subroutine calls. This is the first step out of three to remove the memory-consuming coded_date and date_to_day arrays from the time_manager_mod.
  • FMS GLOBAL MODULE: Adds a new module (libFMS.F90) to be used as a global import for all supported routines/types/variables within FMS. Also adds a separate module (fmsconstants.F90) to be used for constant values from constants_mod.

Changed

  • FMS2_IO: Adds logic so that the domain decomposition variable attribute is only added if the io_layout is not 1,1.
  • FMS_IO: Moved get_great_circle_algorithm from fms_io to grid2.F90
  • FMS_IO: Moved routines and submodules that were not IO related to fms_mod

Removed

  • DIAG_MANAGER: Removed the variable attributes _FillValue and missing_value from the time_bounds variable to be cf compliant
  • FV3GFS: Removes the unused fv3gfs directory
  • MOSAIC/GRID: Removed references in grid.F90 to fms_mod(replaced with mpp_mod direct calls)
  • MOSAIC/GRID: Moved mosaic/mosaic2.F90 to mosaic2 folder

Fixed

  • DIAG_MANAGER: Fixed a bug where the variable type of Time and Time_bounds were different (float vs double) when compiling with 32 bit reals
  • FMS2_IO: Fixed a bug where the code was crashing when you were trying to read/write scalar variables with the domain decomposed fileobj

Tag Commit Hashes