Skip to content

Releases: NOAA-GFDL/FMS

Version 2020.01

13 Mar 22:10
429085c
Compare
Choose a tag to compare

[2020.01] - 2020-03-13

Added

  • Adds the modules axis_utils2, mosaic2, and time_interp_external2 that use fms2_io
  • Adds unit tests for thread affinity in test_fms/affinity
  • Autotools unit tests are now run with srun, mpirun, or aprun (whichever is present on your system)
  • fms2_io provides three new derived types, which target the different I/O paradigms used in GFDL GCMs:
    • type(FmsNetcdfFile_t) - This type provides a thin wrapper over the netCDF4 library, but allows the user to assign a “pelist” to the file. If a pelist is assigned, only the first rank on the list directly interacts with the netCDF library, and performs broadcasts to relay the information to the rest of the ranks on the list. This derived type also allows the user to perform “compressed” reads/writes and restart variable “registration” (i.e. the ability to store pointers to user-defined/allocated buffers) and reads/writes in a manner similar to the existing calls in fms_io.
    • type(FmsNetcdfUnstructuredDomainFile_t) - This type extends the FmsNetcdfFile_t type to support “domain-decomposed” reads/writes on a user defined mpp_domains unstructured grid. Users are required to inform the FMS2_io module which dimensions correspond to the unstructured grid using the appropriate register_axis call before any domain-decomposed reads/writes can be performed.
    • type(FmsNetcdfDomainFile_t) - This type extends the FmsNetcdfFile_t type to support “domain-decomposed” reads/writes on a user-defined mpp_domains two-dimensional lon-lat or cubed-sphere grid. Users are required to inform the fms2_io module which dimensions (‘x’ or ‘y’) correspond to the two-dimensional grid using the appropriate register_axis calls before any domain-decomposed reads/writes can be performed.
  • fms2_io requires the user to manage objects of the types described above. Calls to open_file (close_file) act as constructors (destructors) for each of the objects, and must be explicitly made by the user. Each object must be constructed before any I/O can be performed. Examples describing how to use these new types are available in test_fms/fms2_io
  • fms2_io treats _FillValue attributes as valid_max or valid_min range specifiers if none of valid_range, valid_min, and valid_max are specified as described in these netcdf conventions

Changed

  • The diag_manager IO is handled by fms2_io instead of mpp_io. Default behavior assumes that the mpp_io namelist variable is set to cf_compliant = .true.
  • The user must specify the diagnostic attributes that they want to write to the output files. Example: If there is no units attribute, then the variable metadata will not include units, and it will not automatically add units = “none”.
  • Calls to register_diag_axis for an X or Y axis that is shifted from the CENTER position need to include the optional argument domain_position and should be equal to EAST or NORTH based on the position relative to the domain. EAST and NORTH are exposed through diag_manager_mod.
  • Changed the handling of average_T and time_bnds variables so that they are set to values that are sent in and are not manipulated as was the case in mpp_io.
  • interpolator, xgrid, data_override, and amip_interp now call fms2_io routines
  • Support for enabling/disabling quad-precision (used in certain calculations) has been changed to a hard on/off switch. Default behavior is quad-precision disabled. To enable, add the following CPP macro -DENABLE_QUAD_PRECISION. This change was necessary to remove guessing at the proper setting via a mix of compiler vendor and system-defined environment variables which resulted in different behaviors on machines unbeknownst to the user.

Deprecated

  • fms2_io does NOT use the scale_factor, add_offset, or other attributes to manipulate the data. The variable/data is returned to the caller as it appears in the file. All post-read data manipulations should be handled by the caller.

Removed

  • Removes the use of bats when running unit tests

Known Issues

  • Axis for regional diagnostics are not written correctly.

Version 2019.01.01

06 Jan 18:37
a722a24
Compare
Choose a tag to compare

Patch release 2019.01.01

Revert the default use of quad precision to pre-2019.01 behavior. To enable quad precision, the preprocessor macro ENABLE_QUAD_PRECISION must be defined at compile time. Defining ENABLE_QUAD_PRECISION will #undef NO_QUAD_PRECISION in platform.h.

Version 2019.01

26 Nov 19:47
708b8d5
Compare
Choose a tag to compare

What's New in Version 2019.01

  • switch from city versioning style to yyyy.<2_digit_version_number>[.<2-digit-patch number>] style
  • main development branch is master instead of dev/master
  • affinity handling moved to the affinity directory
  • support for building with autotools
  • include/fms_platform.h contains directives that support building on macOS
  • unit and build tests are available in the test_fms directory
  • updated fv3gfs/makefile for use with current EMC build system

Bug Fixes

  • Fixed time_interp_missing parameter in time_interp/time_interp_external.F90 to be within range when compiled in mixed-mode.
  • reverted QUAD_PRECISION behavior to pre-Xanadu behavior in include/fms_platform.h
  • Fixed a GNU compiler issue with the logical check to set the netCDF fill value in mpp_io_write by separating the logical .AND. into nested if statements.

Parallel netCDF Support

06 Mar 19:55
Compare
Choose a tag to compare

Implementation of parallel IO using netCDF.

Xanadu (24.0.0)

18 Mar 20:47
Compare
Choose a tag to compare

The Xanadu release of the FMS supports the GFDL ESM4 CMIP6 runs.

  • Updated the fms_platform.h include file to be more portable.
  • Updated coupler_types to simplify model component initialization.
  • Added support for MPI datatypes, an MPI_Alltoallw interface, and modifications to mpp_global_field to use these changes for select operations.
  • Added adjoint versions of the mpp communication routines.
  • Moved diag_integral and monin_obukhov here from atmos_param.
  • Fixed halo update when both x-direction and y-direction are wide halo.

Warsaw 201803 (23.3.0)

19 Mar 20:08
Compare
Choose a tag to compare

Enhancements

  • Can now be run in mixed 32/64 bit mode. Used for FV3GFS/fvGFS, not supported in GFDL models.
  • New fv3gfs directory was added which contains the makefile used by NCEP/EMC.
  • Created a single constants file which contains the FV3GFS/fvGFS constants and support for "small earth".
  • Licenses updated to LGPL in all files.
  • Documentation converted from html to Doxygen for interpolator.F90 and station_data.F90

Bug fixes

  • diag_manager - Corrected indexing error for CF sites on tiles 4 and 5.
  • diag_manager - Prevents calls to mpp_close for files that have not been opened.

Warsaw 201707 (23.1.0)

19 Mar 19:23
Compare
Choose a tag to compare
  • Fix error in diag_manager_mod to know if diagnostic file is for the ocean domain
  • Increase default value for diag_data_mod, max_field_attribute to 4 (from 2)
  • Improve the error messages from interpolator
  • Add additional overloaded coupler_type_copy routines in coupler_types_mod

Warsaw (23.0.0)

19 Mar 19:18
Compare
Choose a tag to compare
  • Added support for unstructured grid history data
  • Fixed interpolator_mod string comparison
  • Added ability to diag_manager_mod to check history file contains required fields
  • Added optional parameter mandatory to fms_io_mod::register_restart_region.
  • Changed diag_manager_nml variable conserve_water to flush_nc_files to better define what option does
  • Added support to horiz_interp_mod for a flipped latitude domain