Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: add a link. some formatting.

...

...

Each netCDF filetype imposes size limitations on the underlying data. Trying to exceed these limits leads to an NC_EVARSIZE error. The upshot is that only the CDF5 and netCDF4 formats are adequate for high-resolution coupled E3SM runs, since they (or at least the MPAS-O component) can produce multiples variables each exceeding 4 GB. For more details, read on.

The per-file limit of all netCDF formats is not less than 8 EiB on modern computers, so any NC_EVARSIZE error is almost certainly due to violating a per-variable limit.

Relevant limits:

  • netCDF3 CDF1 format limits fixed variables to sizes smaller than 2^31 B = 2 GiB ~ 2.1 GB, and record variables to that size per record. A single variable may exceed this limit if and only if it is the last defined variable.
  • netCDF3 CDF2 format limits fixed variables to sizes smaller than 2^32 B = 4 GiB ~ 4.2 GB, and record variables to that size per record. Any number of variables may reach, though not exceed, this size for fixed variables, or this size per record for record variables.
  • The netCDF3 CDF5 and netCDF4 formats have no variable size limitations of real-world import. If any input or output variable in an E3SM simulation exceeds these limits, choose a PIO format capacious enough, either netCDF3 CDF2, PnetCDF/netCDF3 CDF5, or netCDF4.

NetCDF library:

There are 4 ways to build a library that reads netCDF files.  Our PIO library can interface to all of them at the same time if built properly.  The PIO_TYPENAME is set at runtime to indicate which one is to be used for all I/O operations.  The PIO_TYPENAME is in parenthesis below.

...