Lawrence Livermore National Laboratory



January 6, 2010

Silo 4.7.1 was found to have a couple of serious bugs and has been removed from the site. A 4.7.2 release will be made by 1/12/10.


December 10, 2009

Organization of information in this release announcement

  1. New features added in this release
  2. Bugs fixed in this release
  3. Details regarding long long support
  4. Details on new, alternative relative differencing scheme in browser'

1. New features added in this release

  • Support for DB_LONG_LONG datatype was added.
  • A new relative differencing option was added to silodiff/browser.
  • Species now support names and colors just as materials do.
  • All Silo structs are now non-anonymous.
  • All silo variables now support characterization as conserved quantities.
  • All silo variables now support characterization as extensive quantities.
  • Browser can now display the contents of the HDF5 driver's (magic) '/.silo' directory.
  • Hard links are now supported by the friendly HDF5 names feature.
  • FPZIP and HZIP support is now included for Windows platforms.
  • silodiff now warns of possible mismatch with browser path.
  • silodiff/browser now supports differing values of different primitive type.

2. Bugs fixed in this release

  • Problems writing edge- and face-centered quadvars and ucdvars were fixed.
  • silock now works for data produced on HDF5 driver.
  • silodiff corrrectly sets $lowlevel variable so that HDF5 file differences cannot be missed.
  • browser now displays mixvals for ucdvars.
  • libsilo.a|so no longer has dependence on libreadline.
  • Fortran interface now correctly compiles for Windows.
  • A double-free memory error causing silex to crash was fixed.
  • A missing pmpio.h include file dependency was added.
  • Browser now outputs version of Silo library it is linked with.
  • A problem where once compression features were enabled, they could never be disabled was corrected.
  • Multi-part, multi-block objects written on Windows but read on Linux and vice-versa now correctly handle the difference in slash character for filesystem pathnames.
  • A problem where silo.h and config.h were being included in source distribution tarballs in spite of fact that these files are generated from their .in equivalents was corrected.
  • A bug in DBInqFile where it would return true for any PDB file, even a PDB file NOT produced by Silo was corrected. It now returns true ONLY if it finds tell-tale signs there are Silo objects in the file and false otherwise.
  • DBCLOSE Fortran wrapper was corrected to set closed dbid to -1.
  • Silo's magic file was corrected so that '!' character in PDB moniker is not inadvertently treated as the not-equal operator.

3. Details regarding long long support

  • Silo supports a new DBdatatype enum, DB_LONG_LONG.
  • Both the PDB and HDF5 drivers were enhanced to support long long datatype. To the extent possible, the lite version of PDB built-in to Silo was modified to match how PDB proper handles long long support. pdbview should display Silo's long long data correctly. However, be aware that fundamental aspects of the lite version of PDB built-in to Silo were changed to support long long.
  • On systems where sizeof(long long)==sizeof(long), the DB_LONG_LONG enum resolves to DB_LONG.
  • Data written on a system where sizeof(long long)>sizeof(long) and later read on a system where sizeof(long long)==sizeof(long) will work on the HDF5 driver if the values in the long long input can be cast to long without loss of precision. Behavior on the PDB driver in this case is yet to be determined.
  • When diffing both the left and right operands of long long type, browser uses the same difference algorithm it has always used but adjusted to support the full integral precision of long long data. In all other cases (and has always been the case), browser casts values to double and computes their differences as double values.

4. Details on new, alternative relative differencing scheme in browser'

  • A new relative diffrencing option was added to browser. Thanks to John Wholbier for specifying the algorithm. It is controlled by the -x EPS, --epsilon=EPS command line arguments and $diff_*_eps variables.
  • Two numbers, A and B, are different if |A-B|/(|A|+|B|+EPS)>RTOL where EPS is the epsilon parameter and RTOL is the relative difference threshold.
  • For EPS=0, the algorithm is similar (but not identical) to normal relative differencing. But for EPS=1, it behaves in such a way as to shift between this alternate relative differencing for large numbers and absolute differencing for numbers near zero. Default is -1 (e.g., turned off).
  • By default, EPS is set to -1 so it is disabled. However, setting it to any positive value enables this alterantive differencing algorithm.