GFDL's Flexible Modeling System
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.
Diag Manager Rewrite:
flush_nc_files
and mix_snapshot_average_fields
nml options are not yet functional. The mix_snapshot_average_fields
option is planned to be deprecated (for the rewritten diag_manager only).scalar_axis
dimension will not be added to scalar variablesaverage_*
variables will no longer be added as they are non-standard conventionsdiag_field_add_attributes
in the old code were saved as NF90_FLOAT
regardless of precision, but will now be written as the precision that is passed inis_subregional = True
set for non-global history files.grid_type
and grid_tile
global attributes will no longer be added for all files, and some differences may be seen in the exact order of the associated_files
attributeDIAG_MANAGER: When using the do_diag_field_log
nml option, the output log file may be ovewritten if using a multiple root pe's
TESTS: test_mpp_gatscat.F90
fails to compile with the Intel Oneapi 2024.01's version of ifort
BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled.
use_modern_diag = .true.
to your diag_manager_nml
. The new diag manager also requires a call to diag_send_complete
after send_data
calls. New features include:
use_collective
flag in netcdf_io_mod
.is_multi_file
to be set to true to enable the feature, as well as prev_file_name
and next_file_name
to set to the names of the additional files. (#1408)mpp_get_domain_tile_commid
and mpp_get_domain_commid
in mpp_domains_mod
use_field_table_yaml
) to enable support for the yaml input.nearest_index
routineNO_QUAD_PRECISION
macro is no longer set by FMS, the ENABLE_QUAD_PRECISION
macro has replaced prior usage of NO_QUAD_PRECISION
. -DENABLE_QUAD_PRECISION
should be set if quad precision is to be used, otherwise FMS will not use quad precision reals where applicable.use_data_table_yaml
has been added to enable usage of the yaml format data_override tables. This allows an executable built with yaml support be able to accept either format.data
, unit
, and value
. This may affect usage of external code if argument names are explicitly used. Only required arguement names were changed to mitigate any breaking changes.MPI_LAUNCHER
environment variable override to work with any provided arguments.NO_QUAD_PRECISION
macro is no longer set by FMS, the ENABLE_QUAD_PRECISION
macro has replaced prior usage of NO_QUAD_PRECISION
. -DENABLE_QUAD_PRECISION
should be set if quad precision is to be used, otherwise FMS will not use quad precision reals where applicable.--enable-mixed-mode
option, which enabled similar functionality but was limited to certain directories and was not enabled by default. To facilitate easier testing of these code changes, the CMake precision options for default real size were left in (along with an equivalent --disable-r8-default
flag for autotools). The resulting libraries will support mixed-precision real kinds regardless of default real size. It should also be noted that many routines that accept real arguments have been moved to include files along with headers in order to be compiled with both kinds. Most module level variables were explicitly declared as r8_kind for these updates.coupler_nd_field_type
and coupler_nd_values_type
have been renamed to indicate real kind value: coupler_nd_real4/8_field_type
and coupler_nd_real4/8_values_type
. The bc
field within coupler_nd_bc_type
was modified to use r8_kind within the value and field types, and an additional field added bc_r4
to use r4_kind values.save_both_kinds
optional argument to tri_invert
.nest_domain_type
mpp_check_field
interpolator_end
no_4byte_reals
was removed and will not set any additional macros if used. no_8byte_integers
is still functional.NO_QUAD_PRECISION
was removed. It was conditionally set if ENABLE_QUAD_PRECISION was undefined. ENABLE_QUAD_PRECISION should be used in model components instead (logic is flipped)use_netCDF
was set by autotools previously but wasn't consistently used in the code. FMS should always be compiled with netcdf installed so this was removed with the exception of its use in deprecated IO modules.-Duse_drifters
CPP flag.fms
) meant to provide global access has been updated to include 'fms' and it's module/subdirectory name as prefixes for all names. This will only affect external codes that are already using the global module (via use fms
) and not individual modules.stable_mix
interface so that 1d calls the underlying implementation, and 2 and 3d call it on 1d slices of the data as opposed to passing in mismatched arrays.findloc
intrinsic function. This will result in an error saying 'findloc' has no IMPLICIT type
and can be resolved by compiling with gcc version 9.0 or greater.FMS2_IO: Performance changes for domain_reads_2d and domain_reads_3d:
FMS2_IO: Performance changes for compressed_writes_1d/2d/3d
FMS2_IO: Extended mpp_scatter and mpp_gather to work for int8; added a kludge for scatter since the data is assumed to be (x,y,z)
-fallow-argument-mismatch
is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).use_refactored_send
to true in the diag_manager_nml, and should mirror current behaviour.fms2_io_nml
. Also added functionality for registering dimensions as unlimited compressed.string
interface in fms_string_utils_mod to accept reals of 4 or 8 kind, as well as 1, 2, and 3 dimensional real arrayslog_diag_field_info
routine to allow for specifying seperatordiag_send_data
routine to fix class(*) related compiler issues from the refactor update-fallow-argument-mismatch
is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).-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.register_restart_field
-fallow-argument-mismatch
is included in the Fortran compiler flags(the flag will now be added automatically if building with autotools or CMake).fms_yaml_output_mod
module-fallow-argument-mismatch
is included in the Fortran compiler flagsfms_string_utils_mod
, for common string operations throughout FMSfms
module-DCONSTANTS=<GEOS|GFDL|GFS>