...
- the classic format (aka netCDF3) CDF-1
- the 64-bit offset format with 32 bit record addressing (aka netCDF3) CDF-22 See https://www.unidata.ucar.edu/software/netcdf/netcdf/NetCDF-64-bit-Offset-Format-Limitations.html
- 64-bit offset + 64 bit record addressing, (aka "64bit data") CDF-5
- the netCDF-4 format
- the netCDF-4 classic model format
...
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.
...