Releases: NOAA-GFDL/FMS
Releases · NOAA-GFDL/FMS
2021.02.01
[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
[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
andregister_restart_region_3d
were added to fms2_io’sregister_restart_field
interface andread_restart_bc
andwrite_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
andCT_restore_state_2/3d
to thecoupler_type_register_restarts
andcoupler_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
andget_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 toget_date_gregorian_old
andset_date_gregorian_old
and can be used by addingold_method=.true.
optional argument to set_date and get_date subroutine calls. This is the first step out of three to remove the memory-consumingcoded_date
anddate_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
andmissing_value
from thetime_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
andTime_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
[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
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
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
[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 ofget_grid_version_1
- FMS2_IO: A unit test was added to test the functionality of
get_valid
andis_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 insideif (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 callingget_dimension_size
to avoidFATAL: NetCDF: Invalid dimension ID or name
crashes
Tag Commit Hashes
2020.02.01
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
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
andregister_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
andread_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
#[2019.01.03] - 2020-07-17
Added
- Supports updated nesting without fms2_io
- Supports mpp_domains
Removed
- Bats files
Version 2020.02
[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
forreal32
, 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.