Recent Releases of FMS
FMS - 2025.03
[2025.03] - 2025-06-24
Known Issues
- INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The
-check uninitflag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information. - Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
Added
- LICENSE: added notice about the change to Apache license. (#1685)
- DIAG_MANAGER: added standard name to diag manifest yaml (#1692)
- FMS2IO: added netcdf chunksizes argument to registerfield routines (#1696)
- DIAG_MANAGER: added more robust diag manager tests for when outputting data at every time step (#1688)
- FM2_IO: added a test for collective netcdf mpi io (#1647)
Changed
- DOCS: style guide update (#1642)
- DOCS: updates to contributing guide to reflect modern FMS practices (#1708)
- DOCS: fixed typos throughout the code (#1703)
- DATAOVERRIDE: simplify argument lists of subroutines in getgridversionmod (#1514)
Fixed
- DIAGMANAGER: fixed the time variable in instantaneous outputs from diagmanager in both openmp and non-openmp cases (#1690)
- DIAG_MANAGER: fixed number of time levels in diag manifest yaml for subregional files. (#1698)
- LIBFMS: fixed missed aliases in libFMS file (#1303)
- DIAGMANAGER: fixed new file and file duration in MODERNDIAG_MANAGER (#1705)
Removed
- FMSIO/MPPIO: removed fmsio/mppio modules (#1669)
- AMIPINTERP: removed the sstanom and sst_ncep varaibles (#1695)
Tag Commit Hashes
- 2025.03-beta1 96e97c0e271167dd42700b5ed28fb1fe85d7ecce
- 2025.03-alpha1 44f182dc459c6a60d3b3f4257cf379c8bd71e797
- Fortran
Published by vithikashah001 8 months ago
FMS - 2025.02.01
[2025.02.01] - 2025-05-13
Known Issues
- DIAG_MANAGER(legacy): When attempting to use 0 days frequency in the legacy diag manager and the data is send to diag manager from an openmp region, the Time dimension will not be correct.
- INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error. The
-check uninitflag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information. - Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
Fixed
- DIAG_MANAGER: add standard name to diag manifest and fix for subregional time levels (#1699)
- Fortran
Published by vithikashah001 9 months ago
FMS - 2025.02
[2025.02] - 2025-04-28
Known Issues
- DIAG_MANAGER(legacy): When attempting to use 0 days frequency in the legacy diag manager and the data is send to diag manager from an openmp region, the Time dimension will not be correct.
- INTEL: Oneapi 2025.1 is currently unsupported due to an internal compiler error (#1680). The
-check uninitflag for intel's LLVM compilers(ifx/icx) is also unsupported, see prior release for more information. - Diag Manager Rewrite: See below for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
Added
- YAML SUPPORT: Messages indicating which table format being used (yaml or legacy) will now be output by the
diag_manager,field_manager, anddata_overridemodules. (#1676) - DIAG_MANAGER: Adds the number of tiles, number of distributed files, and number of time levels written for a given file to the output diag manifest yaml file. (#1661) + (#1648)
- GENERIC_EXCHANGE: Adds a new "gex" module to the
couplersubdirectory to provide a generic interface to pass (non-tracer) diagnostic fields across components. (#1637)
Changed
- MPP: Optimized
mpp_gatherandmpp_scatterinterfaces by leveraging native MPI collectives inmpp_pelist_scatterandmpp_gather_1D(_V)routines. (#1655) - DIAGMANAGER: `diagout.yaml
output file has been renamed todiagmanifestand will include the root PE number and ensemble number. ie:diagmanifest.yaml.0ordiagmanager.ens01.yaml.0` when using an ensemble. (#1661) (#1654) (#1646) - EXCHANGE: Increased max number of fields for exchange grid from 80 to 100 (#1637)
- DATA_OVERRIDE: Initializes both r4 and r8 versions of the module by default if no
modeargument is given to specialize a specific real size.(#1638)
Fixed
- MPP: Errors from unallocated data on non-root pes in mpp_scatter/gather routines. (#1672)
- DIAG_MANAGER: Issue causing an extra unlimited dimension to be written out in history files when mixing static and non-static variables.(#1668)
- CMAKE BUILD: Fixes missing "C" component for OpenMP libraries in FMS export configuration file (#1663)
Removed
- FIELD_MANAGER: Removed public declarations for routines that are already included in public interfaces. (#1317)
Tag Commit Hashes
- 2025.02-beta2 e8b8c19c5d67b35440acc10b3180f535e3c6e7d6
- 2025.02-beta1 2df70639e371ab8d11edbbfed937951ad4e97c9d
- 2025.02-alpha1 71957e9d79fbd832c4e25ee452eb211669e0df1d
- Fortran
Published by rem1776 10 months ago
FMS - 2025.01.02
[2025.01.02] - 2025-03-06
Known Issues
- Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so this differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
- INTEL: The
-check uninitflag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the-check allflag,-check all,nouninitshould be used instead.
Changed
- DIAG_MANAGER: Change name of yaml output file to include the root PE number at the end in order to prevent overwrites (#1654)
- Fortran
Published by rem1776 12 months ago
FMS - 2025.01.01
[2025.01.01] - 2025-02-26
Known Issues
- Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
- INTEL: The
-check uninitflag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the-check allflag,-check all,nouninitshould be used instead.
Changed
- DIAGMANAGER: Changed the name of the yaml output file from "diagout.yaml" to "diag_manifest.yaml" (#1646)
Added
- DIAG_MANAGER: Added field to the yaml output file to specify the number of time levels written to a given file (#1648)
- Fortran
Published by rem1776 12 months ago
FMS - 2025.01
[2025.01] - 2025-01-30
Known Issues
- Diag Manager Rewrite: See the changelog for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
- INTEL: The
-check uninitflag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the-check allflag,-check all,nouninitshould be used instead.
Added
- ENSEMBLE YAML SUPPORT: Adds functionality to the diagmanager, fieldmanager, and data_override to support unique yaml tables for each member of an ensemble or nest. More information can be found in in the diag_manager and data_override README files (#1585)
- BUILD: Adds options to set
PORTABLE_KINDSmacro in CMake and autotools builds (#1572) - BUILD(autotools): Adds check for cray compiler .mod file capitalization and will now run a previously added, but unused, m4 check for
newunitsupport. (#1561) - BUILD(cmake): Adds CMake functionality to generate a pkgconfig file (#1565)
- DIAGMANAGER: Modifies `diagfieldaddattribute` to accept both r4 and r8 values (#1625)
Changed
- MPPIO/FMSIO: A deprecation warning will now be output when using these modules or enabling the
-Duse_deprecated_ioflag via the build systems. Usage of these modules will be deprecated in the next release. (#1609) - DIAG_MANAGER: Made changes to the reduction routine to improve performance of loop and to reduce unnecessary calls if there isn't any new data to process (#1634)
- MOSAIC/GRIDUTILS: The
mosaicdirectory has been refactored and is now called `gridutils`. (#1626) As part of these updates:- The
create_xgrid.c/hfiles have been moved to thehoriz_interp/includedirectory - Any any unused
.c/.hfiles or functions frommosaichave been removed - C functions have been moved between the
grid_utils.c,tree_utils.candcreate_xgrid.cfiles depending on the functions usage
- The
- DIAGMANAGER: Changes `fmsdiagacceptdata` from a function to a subroutine (#1610)
Fixed
- DIAGMANAGER: Fixes functionality of the `newfilefreq
,starttime, andfileduration` keys in the diagmanager. (#1633) - MOSAIC2: Fixes argument intent for
calc_mosaic_grid_areaand makes changes to the test to avoid divide-by-zero errors (#1597) - YAML_PARSER: Fixes incorrect argument type in c-binding causing type mismatch errors with the cray compiler (#1580)
- BUILD(CMake): Removes usage of hardcoded
libdirectory path (#1589) - HORIZINTERP: Adds allocation checks before checking fields for `horizinterptypeeq` (#1584)
- BUILD: Fixed syntax error in
column_diagnosticsMakefile.am (#1598) - DIAG_MANAGER: Adds a workaround for a cray compiler bug where the
NULL()intrinsic causes a type mismatch when passed in as an argument (#1560) - LIBFMS: Adds missed
f2c_stringroutine to libFMS.F90 (#1601) - BUILD(autotools): Fixes false
./configurefailures when using intel compilers and the-warnflag (#1583) - BLOCK_CONTROL: Updates non-uniform block size warning to only output on the root pe (#1588)
- FMS2_IO: Fixes z-axis domain reads when edge lengths and corners are specified (#1620)
- MPP: Fixes temporary array compiler warning during
mpp_init(#1628) - SATVAPORPRES: Fixes bad temperature output not printing on non-root pe's (#1619)
- ASTRONOMY: Adds allocation checks for module variables before being deallocated in
astronomy_end(#1629) - TESTS: Fixes multiple unit test failures, including any failing tests when compiled with GNU debug flags (#1575, #1595, #1579, #1607, #1622)
- TESTS: Fixes multiple compilation and runtime errors from the unit tests when compiled with the cray compiler (#1599, #1602, #1603, #1604, #1605)
- TESTS: Replaces usage of
fms_platform.hincludes withplatform_modin mpp unit tests (#1616) - TESTS: Add workaround for ifx failures in
diag_integralandtopographytests (#1606)
Tag Commit Hashes
- 2025.01-beta1 15ec0c735cba2780d3da37f4e1e3b5d4a969b4ff
- 2025.01-alpha1 95c02333387e673c33ec66e9e78042ef4772cf3a
- Fortran
Published by rem1776 about 1 year ago
FMS - 2024.03
[2024.03] - 2024-08-22
Known Issues
- Diag Manager Rewrite: See the previous releases for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
- INTEL: The
-check uninitflag for the Intel Oneapi Fortran compiler (ifx) is unsupported due to a bug causing false positives when using external libraries. If using the-check allflag,-check all,nouninitshould be used instead.
Added
- DATAOVERRIDE: Adds a namelist flag `usecentergridpoints` which, if true, enables reading the centroid values from the grid spec for ocean and ice models. This fixes issues with grid files that have longitudes ranges from 0:180 and then -180:0, but will cause answer changes if enabled. (#1566)
- DATAOVERRIDE: Adds support for reading external weight files. Currently only supported for fregrid generated files while using the bilinear interpolation method. Documentation for this feature can be found in `dataoverride/README.md`. (#1556)
- PLATFORM: Adds two constants
FMS_PATH_LENandFMS_FILE_LENand uses it across the code for any file path or file name character strings. They default to 1024 and 255 but can also be set by theFMS_MAX_PATH_LENandFMS_MAX_FILE_LENCPP macros. (#1567) - CMAKE: Adds Cmake option to support building shared libraries (#1559)
Changed
- DIAGMANAGER: Simplifies the diagtable.yaml format by allowing
module,reduction, andkindto be set on a file level, with the ability to override for a specific field. (#1545) - FIELDMANAGER: Updated and refactored the `fmyaml_mod
module for a new table format to remove thesubparams` key. (#1547) - DATAOVERRIDE: Updates the yaml format to be improve readablity and to be more consistent in key names. Additional documentation for the new format can be found in `dataoverride/README.md`. (#1556)
Fixed
- PARSER: Adds error code checks to the yaml parser to prevent code from hanging on invalid yamls (#1563)
- PARSER: Adds ability to read in generic blocks to support
field_managerupdates. (#1519) - CRAY COMPILER SUPPORT: Updated any multi-line string literals to be compatible with the cray compiler. (#1554)
Removed
- DIAGMANAGER: Removed diagtable schemas from FMS and moved them to the
gfdl_msd_schemasrepository, and updates thediag_managerdocumentation markdowns. (#1543)
Tag Commit Hashes
- 2024.03-beta1 a5de6a54abeb00be2443db4cf07aa267b7faa724
- Fortran
Published by rem1776 over 1 year ago
FMS - 2024.02
[2024.02] - 2024-07-11
Known Issues
- Diag Manager Rewrite: See 2024.01.02 for known output file differences regarding the new diag manager. The new diagmanager is disabled by default, so these differences will only be present if `usemoderndiag
is set to true in thediagmanager_nml`. - BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled. FPE traps are turned on when using the debug target in mkmf.
- 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.
Added
- TIMEINTERP: Enables use of
verboseoption in `timeinterpexternal2calls fromdataoverride. The option is enabled indataoverridenmlby settingdebugdataoverride` to true. (#1516) - COUPLER: Adds optional argument to
coupler_types_send_dataroutine that contains the return statuses for any calls made to the diagmanager's `senddata` routine. (#1530) - MPP: Adds a separate error log file
warnfile.<root pe num>.outthat only holds output from anympp_errorcalls made during a run (#1544)
Changed
- DIAGMANAGER: The `diagfieldlog.out` output file of all registered fields will now include the PE number of the root PE at the time of writing (ie. diagfield_log.out.0). This is to prevent overwritting the file in cases where the root PE may change. (#1497)
Fixed
- CMAKE: Fixes real kind flags being overwritten when using the Debug release type (#1532)
- HORIZINTERP: Fixes allocation issues when using method-specific horizinterpnew routines (such as `horizinterpbilinearnew
) by settingisallocatedand themethodtype` during initialization for each method. (#1538)
Tag Commit Hashes
- 2024.02-alpha1 5757c7813f1170efd28f5a4206395534894095b4
- 2024.02-alpha2 5757c7813f1170efd28f5a4206395534894095b4
- 2024.02-beta1 ca592ef8f47c246f4dc56d348d62235bd0ceaa9d
- 2024.02-beta2 ca592ef8f47c246f4dc56d348d62235bd0ceaa9d
- Fortran
Published by rem1776 over 1 year ago
FMS - 2024.01.02
[2024.01.02] - 2024-06-14
Known Issues
Diag Manager Rewrite:
- Expected output file changes:
- If the model run time is less than the output frequency, old diagmanager would write a specific value (9.96921e+36). The new diagmanager will not, so only fill values will be present.
- A
scalar_axisdimension will not be added to scalar variables - The
average_*variables will no longer be added as they are non-standard conventions - Attributes added via
diag_field_add_attributesin the old code were saved asNF90_FLOATregardless of precision, but will now be written as the precision that is passed in - Subregional output will have a global attribute
is_subregional = Trueset for non-global history files. - The
grid_typeandgrid_tileglobal attributes will no longer be added for all files, and some differences may be seen in the exact order of theassociated_filesattribute
- Expected output file changes:
DIAGMANAGER: When using the `dodiagfieldlog` nml option, the output log file may be ovewritten if using a multiple root pe's
BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled.
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.
Fixed
- DIAG_MANAGER: Fixes incorrect dates being appended to static file names
- Fortran
Published by rem1776 over 1 year ago
FMS - 2024.01.01
[2024.01.01] - 2024-05-30
Known Issues
Diag Manager Rewrite:
- Expected output file changes:
- If the model run time is less than the output frequency, old diagmanager would write a specific value (9.96921e+36). The new diagmanager will not, so only fill values will be present.
- A
scalar_axisdimension will not be added to scalar variables - The
average_*variables will no longer be added as they are non-standard conventions - Attributes added via
diag_field_add_attributesin the old code were saved asNF90_FLOATregardless of precision, but will now be written as the precision that is passed in - Subregional output will have a global attribute
is_subregional = Trueset for non-global history files. - The
grid_typeandgrid_tileglobal attributes will no longer be added for all files, and some differences may be seen in the exact order of theassociated_filesattribute
- Expected output file changes:
DIAGMANAGER: When using the `dodiagfieldlog` nml option, the output log file may be ovewritten if using a multiple root pe's
BUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled.
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.
Added
- DIAGMANAGER: Implements `flushncfiles` functionality from legacy diagmanager.
Changed
- FMS2IO: Changed `registerunlimitedcompressedaxis` to use a collective gather rather than send and recieves to improve efficiency when reading in iceberg restarts.
Fixed
- DIAGMANAGER: Fixes 0 day output frequencies causing error stating a timestep was skipped. Also adds checks to crash if averaged fields have -1 or 0 day frequencies or if mixing averaged and non-averaged fields in the same file.
- DIAG_MANAGER: Fixes issue with the weight argument not getting passed through to reduction methods.
- DIAG_MANAGER: Allocation errors when using two empty files.
- DIAGMANAGER:
timeand `timebnds` being larger than expected when running for 1 day and using daily data. - DIAG_MANAGER: Allows for mixing static and non-static fields when frequency is 0 days.
- TESTS: Fixes compile failure with ifort 2024.01 from testmppgatscat.F90.
Removed
- DIAGMANAGER: The `mixsnapshotaveragefields` option is deprecated for the rewritten diag_manager only.
Tag Commit Hashes
- 2024.01.01-beta2 c00367fa810960e87610162f0f012c5da724c5a9
- 2024.01.01-beta1 42f8506512e1b5b43982320f5b9d4ca1ca9cbebd
- Fortran
Published by rem1776 over 1 year ago
FMS - 2024.01
[2024.01] - 2024-05-03
Known Issues
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:
- If two empty files are present in the diag_table.yaml file the code will crash with a allocation error (#1506)
- Setting an output frequency of '0 days' does not work as expected and may cause an error stating a time_step has been skipped (#1502)
- The
flush_nc_filesandmix_snapshot_average_fieldsnml options are not yet functional. Themix_snapshot_average_fieldsoption is planned to be deprecated (for the rewritten diag_manager only). - Expected output file changes:
- If the model run time is less than the output frequency, old diagmanager would write a specific value (9.96921e+36). The new diagmanager will not, so only fill values will be present.
- A
scalar_axisdimension will not be added to scalar variables - The
average_*variables will no longer be added as they are non-standard conventions - Attributes added via
diag_field_add_attributesin the old code were saved asNF90_FLOATregardless of precision, but will now be written as the precision that is passed in - Subregional output will have a global attribute
is_subregional = Trueset for non-global history files. - The
grid_typeandgrid_tileglobal attributes will no longer be added for all files, and some differences may be seen in the exact order of theassociated_filesattribute
DIAGMANAGER: When using the `dodiagfieldlog` nml option, the output log file may be ovewritten if using a multiple root pe's
TESTS:
test_mpp_gatscat.F90fails to compile with the Intel Oneapi 2024.01's version of ifortBUILD(HDF5): HDF5 version 1.14.3 generates floating point exceptions, and will cause errors if FMS is built with FPE traps enabled.
Added
- DIAGMANAGER: The diag manager has been rewritten with a object oriented design. The old diagmanager code has been kept intact and will be used by default. The rewritten diag manager can be enabled via
use_modern_diag = .true.to yourdiag_manager_nml. The new diag manager also requires a call todiag_send_completeaftersend_datacalls. New features include:- Self-describing YAML formatting for diag_tables
- Allows 4d variables
- Support defining subregions with indices
- More flexibility when adding metadata and defining output frequency
- Updated math and buffer handling for better support when send_data is called in a threaded region
- FMS2IO: Adds support for collective parallel reads to improve model startup time. The collective reads are disabled by default and enabled via the `usecollective
flag innetcdfiomod`. - DATAOVERRIDE: Adds multifile support for using 3 input netcdf files instead of one. Three keys have been added to the datatable:
is_multi_fileto be set to true to enable the feature, as well asprev_file_nameandnext_file_nameto set to the names of the additional files. (#1408) - INTERPOLATOR: Adds support for yearly/annual data
- DATA_OVERRIDE: Adds support for monotonically increasing/decreasing arrays (#1388)
- DOCS: Add documentation for the exchange grid (xgrid_mod) and update the contribution guide to add a section on code reviews
- MPP: MPI sub-communicators for domains are now accessible via
mpp_get_domain_tile_commidandmpp_get_domain_commidinmpp_domains_mod
Changed
- DATAOVERRIDE: Changes behavior to crash if both datatable and data_table.yaml are present and adds error checking when reading in yaml files
- FIELDMANAGER: Changes behavior to crash if both fieldtable and fieldtable.yaml are present as well as adds a namelist flag (`usefieldtableyaml`) to enable support for the yaml input.
Fixed
- DATA_OVERRIDE: Fixes allocation error with scalar routine and replaces pointers with allocatables
- INTERPOLATOR: Increase max string size for file paths
- AXISUTILS: Improves performance of `nearestindex` routine
- CMAKE: Fixes macOS linking issues with OpenMP
Tag Commit Hashes
- 2024.01-beta5 d3bab5a84b6a51eddd46ab6fb65eaa532830c6c7
- 2024.01-beta4 ac363ddfd3075637cecae30ddfbae7a78751197b
- 2024.01-alpha6 2ace94564a08aec4d7ab7eca0e57c0289e52d5b1
- 2024.01-alpha5 5ed0bd373cc59a9681052fa837cb83a67169d102
- 2024.01-alpha4 8dd90d72b58f0de3632dc62920f8adfb996b2265
- 2024.01-beta3 f71405a075102aef42f5811dc09e239ddd002637
- 2024.01-beta2 bb6de937f70a08a440f5e63b8553b047c1921509
- 2024.01-beta1 913f8aaecca374d5e10280056de862d5e4a7a668
- 2024.01-alpha3 085c6bfc945a6f1c586b842ca6268fca442884d8
- 2024.01-alpha2 38bfde30e1cb8bf5222410a9c37e71529567bf69
- 2024.01-alpha1 ac0d086296ea8b9196552463655cb9a848db39fe
- Fortran
Published by rem1776 almost 2 years ago
FMS - 2023.04
[2023.04] - 2023-12-04
Known Issues
- GCC 9 and below as well as GCC 11.1.0 are unsupported due to compilation issues. See prior releases for more details.
NO_QUAD_PRECISIONmacro is no longer set by FMS, theENABLE_QUAD_PRECISIONmacro has replaced prior usage ofNO_QUAD_PRECISION.-DENABLE_QUAD_PRECISIONshould be set if quad precision is to be used, otherwise FMS will not use quad precision reals where applicable.
Added
- DATAOVERRIDE: A new namelist flag `usedatatableyaml` 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.
Changed
- RESERVED KEYWORD CHANGES: Various routines in FMS have been updated to not use fortran keywords for variable names. The names changed were:
data,unit, andvalue. This may affect usage of external code if argument names are explicitly used. Only required arguement names were changed to mitigate any breaking changes. - TESTS: Changes the testing scripts to allow for the
MPI_LAUNCHERenvironment variable override to work with any provided arguments.
Fixed
- CMAKE: Fixed build issue with CMake where precision default flags were being overwritten when using GNU and MPICH.
- AUTOTOOLS: Fixes issue affecting installs where the global libFMS.F90 module was not being installed correctly and adds post-install message.
- DIAGMANAGER: Fixes issue with incorrect starttime functionality (from the 2023.02.01 patch)
Tag Commit Hashes
- 2023.04-beta1 be1856c45accfe2fb15953c5f51e0d58a8816882
- Fortran
Published by rem1776 about 2 years ago
FMS - 2023.03
[2023.03] - 2023-10-27
Known Issues
- GCC 9 and below as well as GCC 11.1.0 are unsupported due to compilation issues. See prior releases for more details.
NO_QUAD_PRECISIONmacro is no longer set by FMS, theENABLE_QUAD_PRECISIONmacro has replaced prior usage ofNO_QUAD_PRECISION.-DENABLE_QUAD_PRECISIONshould be set if quad precision is to be used, otherwise FMS will not use quad precision reals where applicable.
Added
- UNIT_TESTS: New unit tests have been created or and existing ones expanded on for any modules utilizing mixed precision support.
Changed
- MIXED PRECISION: Most subroutines and functions in FMS have been updated to simultaneously accept both 4 byte and 8 byte reals as arguments. This deprecates the
--enable-mixed-modeoption, 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-defaultflag 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. - Some type/module changes were made to facilitate mixed precision support. They are intended to have minimal impact to other codebases:
- COUPLERTYPES: In couplertypes.F90,
coupler_nd_field_typeandcoupler_nd_values_typehave been renamed to indicate real kind value:coupler_nd_real4/8_field_typeandcoupler_nd_real4/8_values_type. Thebcfield withincoupler_nd_bc_typewas modified to use r8kind within the value and field types, and an additional field added `bcr4` to use r4_kind values. - TRIDIAGONAL: Module state between r4 and r8 calls are distinct (ie. subsequent calls will only be affected by calls of the same precision). This behaviour can be changed via the
save_both_kindsoptional argument totri_invert.
- COUPLERTYPES: In couplertypes.F90,
- CODE_STYLE: has been updated to reflect the formatting used for the mixed precision support updates.
Fixed
- DIAG_MANAGER: Tile number (ie. tileX) will now be added to filenames for sub-regional diagnostics.
- MPP: Bug affecting non-intel compilers coming from uninitialized pointer in the
nest_domain_type - MPP: Bug fix for unallocated field causing seg faults in
mpp_check_field - FMS2IO: Fixed segfault occuring from use of cray pointer remapping along with mppscatter/gather
- TESTFMS: Added various fixes for different compilers within test programs for fms2io, mpp, diagmanager, parser, and satvapor_pres.
- INTERPOLATOR: Deallocates fields in the type that were previously left out in
interpolator_end
Removed
- CPP MACROS:
no_4byte_realswas removed and will not set any additional macros if used.no_8byte_integersis still functional.NO_QUAD_PRECISIONwas removed. It was conditionally set if ENABLEQUADPRECISION was undefined. ENABLEQUADPRECISION should be used in model components instead (logic is flipped)use_netCDFwas 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.
- DRIFTERS: The drifters subdirectory has been deprecated. It will only be compiled if using the
-Duse_driftersCPP flag.
Tag Commit Hashes
- 2023.03-beta1 06b94a7f574e7794684b8584391744ded68e2989
- 2023.03-alpha3 b25a7c52a27dfd52edc10bc0ebe12776af0f03df
- 2023.03-alpha2 9983ce308e62e9f7215b04c227cebd30fd75e784
- 2023.03-alpha1 a46bd94fd8dd1f6f021501e29179003ff28180ec
- Fortran
Published by rem1776 over 2 years ago
FMS - 2023.02.01
[2023.02.01] - 2023-10-13
Fixed
- DIAGMANAGER: Fixes issue with incorrect starttime functionality
- Fortran
Published by rem1776 over 2 years ago
FMS - 2023.02
[2023.02] - 2023-07-28
Known Issues
- 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)
- GCC 10 and greater causing io issues when compiled using O2 optimization flags
- GNU compilers prior to the GCC 9.0 release are unsupported for this release due to lack of support for the 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.
Added
- MPP/EXCHANGE: Adds association checks before pointer deallocations in mpp includes and xgrid
Changed
- LIBFMS: The libFMS.F90 file (module name
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 (viause fms) and not individual modules. - MIXED PRECISION: Updates the axisutils2, horizinterp, satvaporpressure, and axis_utils subdirectories to support mixed precision real values.
- FMS2IO: Added in mppscatter and mpp_gather performance changes from the 2023.01.01 patch. See 2023.01.01 release notes for more details.
- FMS2_IO: Improved error messages to give more debugging information
- FMSMOD: Changed fmsinit to include a system call to set the stack size to unlimited, removed previously added stack size fixes
- MONINOBUKHOV: Restructures the subroutines in `stablemix` 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.
- MPP: Updates from JEDI for ajoint version the mpp halo filling (mppdoupdate_ad.fh), adds checkpoint for forward buffer information.
Fixed
- MPP: mpp_broadcast causing an unintended error message due to checking the wrong pe value
- MPP: Added workaround for GCC 12 issues causing errors with string lengths in fms2_io
- FMS2IO: Fixed support for 'packed' data when using NFSHORT variables. Scalefactor and addoffset attributes will now be applied if present.
- DOCS: Improved doxygen comments for tranlon, updated deployment action for site
- TESTS: Workaround added for ICE coming from mppalltoall test with intel 2022.3, and fixes for any test scripts missing input.nml creation. Fixes for mpp/testglobal_array failures.
- TIME_INTERP: Fixes crashes when calling with a non-existant field
- DIAG_MANAGER: Fixes a module dependency issue causing failures during parallel builds
- AXIS_UTILS2: Fixes an out of bounds memory index
Removed
- FMSIO/MPPIO: The two older io modules, fmsiomod and mppiomod, have been deprecated and will not be compiled by default. If you wish to compile these modules, you must use the -Dusedeprecatedio CPP flag or the --enable-deprecated-io configure option if building with autotools.
Tag Commit Hashes
- 2023.02-beta1 2be8aa452ad3e5f43e92c38a64f12d1ae6c43fb8
- 2023.02-alpha3 8c73bd18dc1d580f2ee524c37cf903ff54d40501
- 2023.02-alpha2 783019fdec89a8db2b26247c2f63d4782e1495c0
- 2023.02-alpga1 419c66be31f82ebb13a91ea5e837c707eb54473b
- Fortran
Published by rem1776 over 2 years ago
FMS - 2023.01.01
[2023.01.01] - 2023-06-06
Known Issues
- GFORTRAN: GNU compilers prior to the GCC 9.0 release are unsupported for this release due to lack of support for the
findlocintrinsic function. This will result in an error saying'findloc' has no IMPLICIT typeand can be resolved by compiling with gcc version 9.0 or greater.
Changed
FMS2IO: Performance changes for domainreads2d and domainreads_3d:
- Root pe reads the data
- Uses mpp_scatter to send the data to the other pes
- Added unit tests to test all of the domainread/domainwrite interfaces
FMS2IO: Performance changes for compressedwrites_1d/2d/3d
- Uses mpp_gather to get data for write
- Added unit tests to test all of the compressed writes interfaces
- Compressedwrites4d/5d were unchanged
FMS2IO: Extended mppscatter and mpp_gather to work for int8; added a kludge for scatter since the data is assumed to be (x,y,z)
- Fortran
Published by rem1776 over 2 years ago
FMS - 2023.01
[2023.01] - 2023-04-03
Known Issues
- If using GCC 10 or higher as well as MPICH, compilation errors will occur unless
-fallow-argument-mismatchis 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
- DIAGMANAGER: Added code refactored as part of larger diagmanager rewrite for the senddata routines. The refactored code is disabled by default and enabled by setting `userefactoredsend` to true in the diagmanager_nml, and should mirror current behaviour.
- FMS2IO: Added the ability to set deflatelevel 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
- STRINGUTILS: Extended the
stringinterface in fmsstringutilsmod to accept reals of 4 or 8 kind, as well as 1, 2, and 3 dimensional real arrays - DIAGMANAGER: Changed the `logdiagfieldinfo` routine to allow for specifying seperator
- INTERPOLATOR(s): In horizinterp, amipinterp and interpolator, changed pointers arrays into allocatables
Fixed
- TRIDIAGONAL: Added OMP directives to prevent race conditions
- DIAGMANAGER: Added `diagsend_data` routine to fix class(*) related compiler issues from the refactor update
- SATVAPORPRES_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
- 2023.01-beta4 (63626578cb8ed4bed1ce670b88acd6a1ec438e32)
- 2023.01-beta3 (0ff254e409b74d7d17ab234abe5ecd985967256c)
- 2023.01-beta2 (74d8e734bd43b0ce043003da74896e5d747afc2f)
- 2023.01-beta1 (6255971af28381fad22547bdc2c538fc3ea2e8bf)
- 2023.01-alpha4 (4526cc94a3e19fe8fa151f54b0db432e1fb2f7d0)
- 2023.01-alpha3 (f0e8cab3d8e58195f7c2663b84fd0bed12fa8b64)
- 2023.01-alpha2 (91e732473f7cffce070f9ce239f8ffa22c081261)
- 2023.01-alpha1 (203c8bf464ff26fe0fe39b1451caedd026bbce55)
- Fortran
Published by rem1776 almost 3 years ago
FMS - 2022.04
[2022.04] - 2022-10-13
Known Issues
- If using GCC 10 or higher as well as MPICH, compilation errors will occur unless
-fallow-argument-mismatchis 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 (fieldtable.yaml). Yaml input only be used if compiled with `-Duseyaml` 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.
- FMS2IO: Adds options to enable data compression and chunking for netcdf output in `registerrestart_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.04-beta2 163cb3e434dba05933c3d2151dea5d770758a2f3
- 2022.04-beta1 1099a2890a06d279df0abe1f383b71279643bcdd
- 2022.04-alpha4 8036d8d8448b0da8416a76ee0820314da27d5711
- 2022.04-alpha3 7fafa4f7fb7a89c6f22da7ae19dc4e61a8073451
- 2022.04-alpha2 0c4b3cc98f4bce5b39c6e9f6404ea32f5bf719e5
- 2022.04-alpha1 ec57a48aeefb62b475a11cad7e30ebe460fa0d9f
- Fortran
Published by rem1776 over 3 years ago
FMS - 2022.03
[2022.03] - 2022-08-01
Known Issues
- If using GCC 10 or higher as well as MPICH, compilation errors will occur unless
-fallow-argument-mismatchis 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_modmodule ### Changed - MIXED MODE: Expands support for mixed precision reals to the constants files, diagmanager, satvaporpres, timemanager, 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.03-alpha1 62588548a5ecbdce7dbf857542ed272f7b2c971f
- 2022.03-beta1 8a4ad847122c7cc597a1f2626290b46af44b143a
- Fortran
Published by rem1776 over 3 years ago
FMS - 2022.02
[2022.02] - 2022-04-29
Known Issues
- If using GCC 10 or higher as well as MPICH, compilation errors will occur unless
-fallow-argument-mismatchis 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
- STRINGUTILS: Adds a module, `fmsstringutilsmod`, for common string operations throughout FMS
- LIBFMS: makes recently added routines available through the global
fmsmodule - 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 - STRINGUTILS: Refactored string routine definitions from fmsmod and fms2iomod to be located in fmsstringutils_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
- FMSMOD: Removes fmsc.c and fms_c.h files from the fms directory ### Fixed
- FMS2IO: Fixed bug casuing non-root pe's to fail during the flushfile routine ### Tag Commit Hashes
- 2022.02-alpha1 270c2a4e1a94229a2ae6b1e431c473589b6e15c3
- 2022.02-alpha2 7768ad1d4941b92ec8f40d34b1b517f5bde3df4e
- 2022.02-beta1 689579eea6bf7a25c64e8b823551ec588be90984
- Fortran
Published by rem1776 almost 4 years ago
FMS - 2022.01
[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 - FMS2IO: Added a macro `MAXNUMRESTARTVARS_` 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 viamake 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_kindcasts 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
- 2022.01-alpha1 516a5efa681e5ae954c11c0c90677b4444e28ec4
- 2022.01-beta1 12da12884f8dc8bde47b478c997b0e5d49260a1c
- 2022.01-alpha2 28e8e3e751a6d5d81b640fb779304329f3edb82d
- 2022.01-beta2 7b78a73a5ba7acf5d3d932ecfe081e5040e2c778
- Fortran
Published by rem1776 almost 4 years ago
FMS - 2021.04
[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-yamlor 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_domainsand a field tonest_domain_typeto allow for modifying the position of a given nest domain - FMS2IO: Reintroduces the option to flushncfiles with fms2io ### Changed
- DIAGMANAGER: Cleans up IO code and replaces any remaining dependencies to mppio with fms2_io
- FMSIO: Changes to allow for custom paths for namelists, fieldtable, 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_unithas been deperecated in favor of the Fortran intrinsicnewunitand will now generate a warning if used ### Removed - TIME_MANAGER: Removes deprecated array-based gregorian calender calculations that were replaced in 2021.02 ### Fixed
- DIAGMANAGER: Fixes issues with 3D diurnal diagnostic output and removes a redundant writedata call
- TIMEINTERP: Fixes loadrecord readdata call for 3d variables with fms2io 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_freefunction causing errors and memory leaks when freeing thempp_bytetype
Tag Commit Hashes
- 2021.04-alpha1 (e0b998321611f80f2d0c587a13b8c03c173d5520)
- 2021.04-alpha2 (ab1b0a4cb2beac72d889d94a628e0d02092723b2)
- 2021.04-alpha3 (90583aeb369831b01296ab4b0e7e6a1b69ed91b1)
- 2021.04-beta1 (6d179fcdc189070f74d49e0025d072fa304e96d6)
- Fortran
Published by rem1776 about 4 years ago
FMS - 2021.03.01
[2021.03.01] - 2021-09-07
Fixed
- TIMEINTERP: Fixes issue in loadrecord 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
- Fortran
Published by rem1776 over 4 years ago
FMS - 2021.03
[2021.03] - 2021-08-16
Known Issues
- DIAG_MANAGER: 3D diurnal diagnostic variables are not supported in this version of FMS ### Added
- FMS2IO: Documentation was added for FMS2io to help users convert from fmsio/mppio ### Changed
- FMS2IO: The error messages in FMS2io were updated to give more useful information
- TESTFMS: The unit tests in mosaic, axisutils, and timeinterpexternal 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
- TESTFMS: Unit tests for timemanager were updated to use the new get/setdategregorian routines ### Removed
- MPPIO: The namelist variable usemppio was removed from interpolator, amipinterp, diagmanager, topography, xgrid, and dataoverride
- MPPIO: Any remaining fmsio/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.03-beta1 (6d6ff9595ede12ea0a342ae014442708a27041d2)
- 2021.03-alpha1 (87d945d8dba6341f1f56631047ae5d3e5b4ab828)
- Fortran
Published by rem1776 over 4 years ago
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
- Fortran
Published by rem1776 over 4 years ago
FMS - 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
- FMS2IO: Added fms2io support for boundary condition restarts.
register_restart_region_2dandregister_restart_region_3dwere added to fms2io’s `registerrestartfieldinterface andreadrestartbcandwriterestart_bc` subroutines were added to read and write boundary conditions restarts. See testfms/fms2io/testbcrestart.F90 for sample usage. - FMS2IO: Added fms2io’s version of setfilenameappendix. 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.
- FMS2IO: Added workarounds to get fms2io code working with pgi
- COUPLERTYPES: Added fms2io’s version of
register_restarts_2/3dandCT_restore_state_2/3dto thecoupler_type_register_restartsandcoupler_type_restore_stateinterfaces in couplertypes. The fmsio’s versions were renamed as mppio* and both versions may still be used. See testfms/coupler/testcoupler_*d.F90 for sample usage. - MPPDOMAINS: Added a subroutine `mppcreatesupergrid_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
- FMSMOD: Added gridinit and grid_end calls for use with grid2.F90
- TIMEMANAGER: New `setdategregorian
andgetdategregorian` function/subroutine that do not use codeddate and datetoday arrays are added and set as default. The original getdategregorian and setdategregorian have been renamed toget_date_gregorian_oldandset_date_gregorian_oldand can be used by addingold_method=.true.optional argument to setdate and getdate subroutine calls. This is the first step out of three to remove the memory-consumingcoded_dateanddate_to_dayarrays from the timemanagermod. - 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 - FMS2IO: Adds logic so that the domain decomposition variable attribute is only added if the iolayout is not 1,1.
- FMSIO: Moved getgreatcirclealgorithm from fms_io to grid2.F90
- FMSIO: Moved routines and submodules that were not IO related to fmsmod ### Removed
- DIAGMANAGER: Removed the variable attributes `FillValue
andmissingvaluefrom thetimebounds` variable to be cf compliant - FV3GFS: Removes the unused fv3gfs directory
- MOSAIC/GRID: Removed references in grid.F90 to fmsmod(replaced with mppmod direct calls)
- MOSAIC/GRID: Moved mosaic/mosaic2.F90 to mosaic2 folder ### Fixed
- DIAGMANAGER: Fixed a bug where the variable type of
Timeand `Timebounds` 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.02-alpha1 (1a653fcb86a826251e6c8d0a90db897377acc49e)
- 2021.02-alpha2 (81a5b6ea2559e2c31edbcab32a3230dfc31287be)
- 2021.02-beta1 (d7e564adee07073febeb263b89158f768d665689)
- 2021.02-beta2 (9d55115a331685e4c6e01f2dfb3b770a9f80fa37)
- Fortran
Published by rem1776 almost 5 years ago
FMS - 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 no8byteinteger 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 mppgetUGdomaintilepeinf to seg fault from the incorrect assignment of an optional argument
- FMS: Fixes issues with FMS unit tests failing from pointer allocations by reworking deallocateunstructpass_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
- 2021.01-alpha1 (dbe8a1060fb33167c2d12239484226b40fb01fd0)
- 2021.01-alpha2 (b94eb18fe8e686c5958cbbacc4cf9130873afc85)
- 2021.01-beta1 (4dcc9a795d9ba0cc959ebd93dda5be5f8473545c)
- Fortran
Published by rem1776 almost 5 years ago
FMS - 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
- Fortran
Published by rem1776 about 5 years ago
FMS - 2020.04.01
Patch for the 2020.04 release
Changed
- FMS2IO: Changed how nest file names are created to be consistent with mppio ### Removed
- MPP_IO: removed left over #ifdefs from backwards compatibility changes ### Fixed
- DIAGMANAGER: Fixed a bug where files were getting written with redundant timebounds data
- Fixed a bug causing the cmake build to fail on latest versions of Ubuntu
- Fortran
Published by rem1776 about 5 years ago
FMS - 2020.04
[2020.04] - 2020-12-07
Added
- DIAGMANAGER: A namelist flag called `usemppio` if set to .true. will use mppio. 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
- DIAGMANAGER: A unit test was added to test the optional `newfile_freq` functionality
- XGRID: A namelist flag called
use_mpp_ioif set to .true. will use mppio. The default is .false. and will use fms2io. - INTERPOLATOR: A namelist flag called
use_mpp_ioif set to .true. will use mppio. The default is .false. and will use fms2io. - AMIPINTERP: A namelist flag called `usemppio` if set to .true. will use mppio. The default is .false. and will use fms2_io.
- TOPOGRAPHY: A namelist flag called
use_mpp_ioif set to .true. will use mppio. The default is .false. and will use fms2io. - DATAOVERRIDE: A namelist flag called `usemppbug` if set to .true. will use mppio. The default is .false. and will use fms2_io.
- DATAOVERRIDE: A namelist flag called `reproducenullcharbugflag` if set to .true. and fms2io is being used, it will reproduce the mppio bug where the axis bounds were calculated instead of read. The default is .false. A unit test was added to test the functionality of `getgridversion1`
- FMS2IO: A unit test was added to test the functionality of `getvalid
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 -Dusemppio 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
- DATAOVERRIDE: Fixed a bug in `getgridversion1` where the variable_size calls were not correct
- FMS2IO: Fixed a bug in `getvalid
where the mpp_broadcast calls were done insideif (rootpe)` blocks The fms2io unit tests were modified so they can work with the AOCC compiler - XGRID: Fixed a bug in
load_xgridby checking if a dimension exists before callingget_dimension_sizeto avoidFATAL: NetCDF: Invalid dimension ID or namecrashes ### Tag Commit Hashes - 2020.04-alpha1 (2428bb182133b8062432ee1b15974739753ca470)
- 2020.04-alpha2 (ad9915d83a2f34610cd748fd85889ba1f0f1fc02)
- 2020.04-alpha3 (e7e48839ab25cc9405abe5d8418e1b6ee6fb2d69)
- 2020.04-beta1 (6d3ac620423e7ede412e4bb1b36c338775d95193)
- Fortran
Published by thomas-robinson about 5 years ago
FMS - 2020.02.01
This is a patch for 2020.02.
Fixed
- DIAGMANAGER[2]: Fixes an issue where timebnds was written incorrectly for the last time stamp in diagnostic files
- Fortran
Published by thomas-robinson over 5 years ago
FMS - 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
- Mppio: bug reading *bnds causes values to be calculated incorrectly when netcdf files have null characters in the string attributes
Added
FMS2_IO:
Adds headerbufferval to the fms2io namelist which sets the netcdf header size in bytes. The default value is 16kb.
- Adds netcdfdefaultformat 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 openfile, `dontaddrestofilename, which indicates that the filename should not be modified (default adds .res to restart file name)
- Modifies theregistervariableattributeandregisterglobalattribute` interfaces by adding strlen 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 getmosaictile_grid
MPP_IO
- Adds
-Duse_mpp_iocompile option for dataoverride, interpolator, amipinterp, diagmanager, topography, and xgrid to select using mppio 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 timeinterpexternal2 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
- Mppdomains2 Unit test works ## Fmsio
- Changes the logic in gettilestring 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
- Fortran
Published by thomas-robinson over 5 years ago
FMS - Version 2019.01.03
[2019.01.03] - 2020-07-17
Added
- Supports updated nesting without fms2_io
- Supports mpp_domains
Removed
- Bats files
- Fortran
Published by colingladueNOAA over 5 years ago
FMS - Version 2020.02
[2020.02] - 2020-05-01
Added
- FMS2IO: An fms2ionml namelist has been created. It includes the variable ncchksz. This is the replacement for the environment variable NCBLKSZ set in model run scripts and used by mppio. The default value is 64 KB. Any time a file is opened in fms2io (nf90open or nf90create), the optional argument
chunksize=ncchkszis 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. - FMS2IO: Adds support to `computeglobalcheksum.inc
forreal32, assuming the flag-DOVERLOADR4` 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 GFDLatmoscubed_sphere have been updated and are compatible with this release of FMS.
- FMS2IO: The intent of fileobj is changed from (in) to (inout) in netcdfrestorestatewrap, restoredomainstate, and netcdfrestorestate because the file object type has a pointer that is being reassigned in one of the routines lower in the call stack.
Deprecated
- MPPDOMAINS - nesting: The initial nesting implementation is no longer supported. Please see the Changed::MPPDOMAINS 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 fmsplatforms.h for compatibility within other components.
- DIAGMANAGER: “fmsplatform.h” is no longer included in any of the diagmanager routines. Instead, fmsplatform_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.
- Fortran
Published by colingladueNOAA almost 6 years ago
FMS - Version 2020.01
[2020.01] - 2020-03-13
Added
- Adds the modules
axis_utils2,mosaic2, andtime_interp_external2that usefms2_io - Adds unit tests for thread affinity in test_fms/affinity
- Autotools unit tests are now run with
srun, mpirun, oraprun(whichever is present on your system) fms2_ioprovides three new derived types, which target the different I/O paradigms used in GFDL GCMs:- type(FmsNetcdfFilet) - 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 fmsio.
- type(FmsNetcdfUnstructuredDomainFilet) - This type extends the FmsNetcdfFilet type to support “domain-decomposed” reads/writes on a user defined mppdomains unstructured grid. Users are required to inform the FMS2io module which dimensions correspond to the unstructured grid using the appropriate
register_axiscall before any domain-decomposed reads/writes can be performed. - type(FmsNetcdfDomainFilet) - This type extends the FmsNetcdfFilet type to support “domain-decomposed” reads/writes on a user-defined
mpp_domainstwo-dimensional lon-lat or cubed-sphere grid. Users are required to inform thefms2_iomodule which dimensions (‘x’ or ‘y’) correspond to the two-dimensional grid using the appropriateregister_axiscalls before any domain-decomposed reads/writes can be performed.
fms2_iorequires the user to manage objects of the types described above. Calls toopen_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 testfms/fms2iofms2_iotreats _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_managerIO is handled by fms2io instead of mppio. Default behavior assumes that the mppio namelist variable is set to *cfcompliant = .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_axisfor 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 throughdiag_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, andamip_interpnow callfms2_ioroutines- 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 -DENABLEQUADPRECISION. 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
- fms2io does NOT use the *scalefactor, *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.
- Fortran
Published by colingladueNOAA almost 6 years ago
FMS - Parallel netCDF Support
Implementation of parallel IO using netCDF.
- Fortran
Published by underwoo almost 6 years ago
FMS - Version 2019.01.01
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 ENABLEQUADPRECISION will #undef NO_QUAD_PRECISION in platform.h.
- Fortran
Published by underwoo about 6 years ago
FMS - Version 2019.01
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_missingparameter in timeinterp/timeinterp_external.F90 to be within range when compiled in mixed-mode. - reverted
QUAD_PRECISIONbehavior 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_writeby separating the logical.AND.into nestedifstatements.
- Fortran
Published by wrongkindofdoctor about 6 years ago
FMS - Warsaw 201803 (23.3.0)
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.F90andstation_data.F90
Bug fixes
- diag_manager - Corrected indexing error for CF sites on tiles 4 and 5.
- diagmanager - Prevents calls to mppclose for files that have not been opened.
- Fortran
Published by underwoo almost 7 years ago
FMS - Warsaw 201707 (23.1.0)
- Fix error in
diag_manager_modto know if diagnostic file is for the ocean domain - Increase default value for
diag_data_mod,max_field_attributeto 4 (from 2) - Improve the error messages from interpolator
- Add additional overloaded
coupler_type_copyroutines incoupler_types_mod
- Fortran
Published by underwoo almost 7 years ago
FMS - Warsaw (23.0.0)
- Added support for unstructured grid history data
- Fixed
interpolator_modstring comparison - Added ability to
diag_manager_modto check history file contains required fields - Added optional parameter
mandatorytofms_io_mod::register_restart_region. - Changed
diag_manager_nmlvariableconserve_watertoflush_nc_filesto better define what option does - Added support to
horiz_interp_modfor a flipped latitude domain
- Fortran
Published by underwoo almost 7 years ago
FMS - Xanadu (24.0.0)
The Xanadu release of the FMS supports the GFDL ESM4 CMIP6 runs.
- Updated the
fms_platform.hinclude file to be more portable. - Updated
coupler_typesto simplify model component initialization. - Added support for MPI datatypes, an
MPI_Alltoallwinterface, and modifications tompp_global_fieldto use these changes for select operations. - Added adjoint versions of the mpp communication routines.
- Moved
diag_integralandmonin_obukhovhere from atmos_param. - Fixed halo update when both x-direction and y-direction are wide halo.
- Fortran
Published by menzel-gfdl almost 7 years ago