Skip to content

Releases: NOAA-GFDL/FMS

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

2021.01

08 Mar 15:40
7dfa1c8
Compare
Choose a tag to compare

[2021.01] - 2021-03-08

Added

  • MPP: A counter for timers to report how many times a timer section is run
  • MPP: Adds missing interfaces to be consistent with interfaces that use the OVERLOAD and no_8byte_integer macros in order to allow building without MPI
  • MPP: Extends interfaces for read and write routines to include 32-bit and 64-bit real data arrays
  • MPP: Adds unit tests for mpp and mpp_io for all public routines with mixed-precision interfaces and expands on existing tests for mixed-precision
  • Adds an .editorconfig file with the project's preferred editor configuration
  • A variable MODDIR in configure.ac for use in Makefiles to find required Fortran module files
  • Adds FMS description web page as a markdown file

Changed

  • DOCS: Updates various modules to doxygen style comments and makes adjustments to correctly generate doxygen documentation through the build system
  • PLATFORM: changes usage of platform.h to platform_mod and it's associated data types
  • Changes all previous uses of flush subroutine calls to function calls
  • Changes travis CI to Github actions CI and removed all trailing whitespace

Fixed

  • MPP: Fixed a bug causing mpp_get_UG_domain_tile_pe_inf to seg fault from the incorrect assignment of an optional argument
  • FMS: Fixes issues with FMS unit tests failing from pointer allocations by reworking deallocate_unstruct_pass_type
  • An issue with the automake build system causing unnecessary rebuilds of source files
  • Fixes CMake build of the FMS library to install configuration files in the appropriate directories; and for OpenMP dependencies to be private

Tag Commit Hashes

2020.04.02

29 Jan 19:13
8c80666
Compare
Choose a tag to compare

Patch for the 2020.04.01 release

Fixed

  • CMAKE: Fixed a bug that caused the build to fail from incorrect source paths

2020.04.01

20 Jan 21:08
0707f2c
Compare
Choose a tag to compare

Patch for the 2020.04 release

Changed

  • FMS2_IO: Changed how nest file names are created to be consistent with mpp_io

Removed

  • MPP_IO: removed left over #ifdefs from backwards compatibility changes

Fixed

  • DIAG_MANAGER: Fixed a bug where files were getting written with redundant time_bounds data
  • Fixed a bug causing the cmake build to fail on latest versions of Ubuntu

2020.04

07 Dec 18:50
4f60c52
Compare
Choose a tag to compare

[2020.04] - 2020-12-07

Added

  • DIAG_MANAGER: A namelist flag called use_mpp_io if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • DIAG_MANAGER: A check is added before a time axis is registered to check if the time axis is registered as a variable
  • DIAG_MANAGER: A unit test was added to test the optional new_file_freq functionality
  • XGRID: A namelist flag called use_mpp_io if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • INTERPOLATOR: A namelist flag called use_mpp_io if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • AMIP_INTERP: A namelist flag called use_mpp_io if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • TOPOGRAPHY: A namelist flag called use_mpp_io if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • DATA_OVERRIDE: A namelist flag called use_mpp_bug if set to .true. will use mpp_io. The default is .false. and will use fms2_io.
  • DATA_OVERRIDE: A namelist flag called reproduce_null_char_bug_flag if set to .true. and fms2_io is being used, it will reproduce the mpp_io bug where the axis bounds were calculated instead of read. The default is .false.
    A unit test was added to test the functionality of get_grid_version_1
  • FMS2_IO: A unit test was added to test the functionality of get_valid and is_valid

Changed

  • The autotools build has been changed to copy each subdirectory module (.mod) files to a common .mod directory located at the top of the source directory. This change simplifies the include path specifications.
  • Use F90 module files for external libraries (MPI and NetCDF) for improved interface checking, thereby removing the reliance on library header include files.

Removed

  • LIBFMS: The flag -Duse_mpp_io should not be used and will cause a crash
  • LIBFMS: Macros and logic for interfacing to the Flexible File I/O library
  • LIBFMS: Macros for SGI MIPSpro compilers, including: mpp_node function and SGI Irix specific high resolution timer
  • LIBFMS: Macros for IBM AIX compilers
  • LIBFMS: Files in mpp supporting the CRAY SHMEM communications library
  • LIBFMS: Files in mpp for the SGI PSET approach for communication via GSM

Fixed

  • DATA_OVERRIDE: Fixed a bug in get_grid_version_1 where the variable_size calls were not correct
  • FMS2_IO: Fixed a bug in get_valid where the mpp_broadcast calls were done inside if (root_pe) blocks
    The fms2_io unit tests were modified so they can work with the AOCC compiler
  • XGRID: Fixed a bug in load_xgrid by checking if a dimension exists before calling get_dimension_size to avoid FATAL: NetCDF: Invalid dimension ID or name crashes

Tag Commit Hashes

2020.02.01

06 Nov 14:24
ebd0b41
Compare
Choose a tag to compare

This is a patch for 2020.02.

Fixed

- DIAG_MANAGER[2]: Fixes an issue where time_bnds was written incorrectly for the last time stamp in diagnostic files

2020.03

08 Oct 23:49
cbca49f
Compare
Choose a tag to compare

Known Issues

  • Users must compile with the flag “-fallow-argument-mismatch” when compiling with GCC 10 (this will be addressed in 2020.04)
  • Fms2io: The fms2io unit tests crash with newer versions of netcdf (4. 7.4) because netcdf only supports writing int64 variable with NC_NETCDF4 file types
  • Mpp_io: bug reading *_bnds causes values to be calculated incorrectly when netcdf files have null characters in the string attributes

Added

FMS2_IO: 

Adds header_buffer_val to the fms2io namelist which sets the netcdf header size in bytes. The default value is 16kb. 

  • Adds netcdf_default_format to the fms2io namelist which allows the user to change the netcdf file type. The default value is 64bit. 
  • Adds support to read netcdf string global attributes
  • Adds an optional argument to open_file, dont_add_res_to_filename, which indicates that the filename should not be modified (default adds .res to restart file name)
  • Modifies the register_variable_attribute and register_global_attribute interfaces by adding str_len as an argument. This is a workaround to get fms2io to work with PGI because they don't support class () with len=.
  • Adds unit test that tests write_data and read_data when using a domain with a mask table 
  • Adds fms2io’s version of get_mosaic_tile_grid

MPP_IO

  • Adds -Duse_mpp_io compile option for data_override, interpolator, amip_interp, diag_manager, topography, and xgrid to select using mpp_io instead of fms2_io

MPP

  • Adds unit tests for routines/functions that are called in mpp_init

CMAKE

  • cmake build system now supported
  • tested for every PR via CI

Changed

##FMS2_IO

  • Improves performance of previous release by gathering the domain decomposed data into one global buffer and doing one write rather than doing multiple writes

DATA_OVERRIDE:

  • Changes a line in time_interp_external2 to enable 3D overrides

Deprecated

Removed

Fixed

Data_override

-Fixes a crash when doing ongrid data_override calls with a domain with halos

Diag_manager

  • Fixes an issue where time_bnds were written incorrectly for the last time stamp 
  • Regional diagnostics with a mask-table now work

Fms2io Unit Test

  • Includes fms2io_init call to improve functionality 
  • Mpp_domains2 Unit test works

Fms_io

  • Changes the logic in get_tile_string to fix bug where tile numbers 9 and 99 produce an inappropriate error

MPP

  • Fixes casting of 32-bit reals prior to generating a checksum value
  • BOZ literals used in parameter declarations are now properly converted to integers using the int() function

Version 2019.01.03

17 Jul 20:59
f61416f
Compare
Choose a tag to compare

#[2019.01.03] - 2020-07-17

Added

  • Supports updated nesting without fms2_io
  • Supports mpp_domains

Removed

  • Bats files

Version 2020.02

05 May 15:31
d34bb9f
Compare
Choose a tag to compare

[2020.02] - 2020-05-01

Added

  • FMS2_IO: An fms2_io_nml namelist has been created. It includes the variable ncchksz. This is the replacement for the environment variable NC_BLKSZ set in model run scripts and used by mpp_io. The default value is 64 KB. Any time a file is opened in fms2_io (nf90_open or nf90_create), the optional argument chunksize=ncchksz is passed to the NetCDF library. NetCDF attempts to use this value to control the blocksize utilized for reads and writes of data from the filesystem.
  • FMS2_IO: Adds support to compute_global_cheksum.inc for real32, assuming the flag -DOVERLOAD_R4 is used when compiling.

Changed

  • MPP_DOMAINS - nesting: The logic supporting nested domains for mosaic grids has been overhauled and extended. FMS now supports multiple nests and telescoping nests (nest embedded within a nest). The requirement for a nest to lie wholly within a single tile has been relaxed and a first-level nest may cross tile boundaries, but may not contain a tile corner. Communications for two-way nesting have also been improved. The 2019 December Public Release and 2020.02 GFDL Release within the [GFDL_atmos_cubed_sphere] (https://github.com/NOAA-GFDL/GFDL_atmos_cubed_sphere) have been updated and are compatible with this release of FMS.
  • FMS2_IO: The intent of fileobj is changed from (in) to (inout) in netcdf_restore_state_wrap, restore_domain_state, and netcdf_restore_state because the file object type has a pointer that is being reassigned in one of the routines lower in the call stack.

Deprecated

  • MPP_DOMAINS - nesting: The initial nesting implementation is no longer supported. Please see the Changed::MPP_DOMAINS sub-entry under.

Removed

  • GENERAL: References to the macro _ALLOCATABLE have been replaced with “allocatable”, _ALLOCATED has been replaced with “allocated”, and _NULL has been removed. It is now assumed that all compilers support the Fortran 2003 standard. The macros still exist in fms_platforms.h for compatibility within other components.
  • DIAG_MANAGER: “fms_platform.h” is no longer included in any of the diag_manager routines. Instead, fms_platform_mod is now being use-associated where necessary. This fixes an issue for debuggers not providing correct line numbers.

Known Issues

  • DIAG_MANAGER: The regional diagnostics are not reproducing old behavior of a mat table it used to write the output. Regional diagnostics without a mask table should reproduce.