Announcing the release of version 4.7.2 of the Silo Library
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.
Thanks to John Wohlbier for specifying the algorithm.
- 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 diff'ing values of different primitive type.
Critical bugs fixed in this release
- DB_LONG_LONG is no longer mapped to DB_LONG on platforms where
sizeof(long)==sizeof(long long).
- The problem where centering for Quadvars was always being treated
as node
centered was corrected.
- A UMR in handling of arrays of strings in multi-block objects was
corrected.
Other bugs fixed in this release
- Diffing data of different type in browser is now commutative.
- Default formats for printing long and long long data in base 8/16
were corrected.
- Missing diffing parameters for long long type were added.
- Some leaks and a memory error were corrected in a couple of tests.
- Overlap of src/dst in a strcpy in PDB was fixed.
- 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 regarding new browser relative difference algorithm.
Thanks to John Wohlbier for specifying a new relative differencing algorithm for
browser. 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.