SILO/SLIDE library

Hi Ethan,

>       Sorry to bother you. I was wondering how much you've(unidata) looked
> in to the extensions to netCDF made by LLNL. They appear to have implemented
> mesh and UCD datatypes as well as compound data types on top of netCDF. I 
> recall at the user conference there were some requests for support for these
> types of extensions to netCDF. 

No bother.  I've recently talked with Jeff Long of LLNL, the author of
SILO/SLIDE, and asked him some questions about it.  He sent me a manual and
a detailed email response which I haven't been able to follow up on yet.  In
general my impression of SILO is that it is a good effort at a pure
extension to netCDF (that is programs that don't use its features should
continue to work the way they did), but that the extensions may be too
special-purpose for incorporating into a general-purpose scientific data
access library.  The extension of adding directories and directory name
spaces inside netCDF files means that every open netCDF will have an extra
bit of state, namely the current working directory within the netCDF file.
This permits multiple variables, dimensions, and attributes with the same
names, as long as they are in different directories.  We haven't had much
use for such a facility, and I don't yet understand exactly how it is used
at LLNL to support non-uniform meshes for simulation and modeling.  The
other extension Long has added, groups, permits naming and defining the
members of a group, which can include dimensions, variables, directories,
and other groups.  I thought this kind of grouping was already possible by
using attribute conventions, e.g.

        :a_group = "var1,var2,b_group,c_group";

but Long has added groups as a new kind of fundamental component of a netCDF
file, in addition to dimensions, variables, attributes, and directories.

Long's implementation of the SILO/SLIDE extensions is on top of another
library called PDBLib, developed by Stewart Brown of LLNL, and it does not
include implementations or support for some current netCDF capabilities and
functions including:

        - the unlimited dimension for variables

        - the CDL notation

        - entering or leaving define mode (ncendef, ncredef)

        - renaming dimensions, variables, or attributes

Long says it would be a simple matter to extend SILO to support these and be
100% compatible with netCDF, but they don't currently need or use these
capabilities.

>       I was just wondering if you are talking with them and if there is any
> plans for them to submit SILO/SLIDE as a contributed library for netCDF. 

Jeff Long has been quite cooperative.  I think the extension of the netCDF
interface to include the SILO/SLIDE is currently being pushed by Jeff Long's
supervisor, Linnaea Cook, who is also active in something caled the National
Grid Project (NGP).  The NGP is a well-funded consortium that is trying to
come up with a common interface for describing the kinds of grids and
meshes used in simulations, CAD/CAM, and finite-element codes, so their
tools can interoperate.  Mike Folk at NCSA also has some connection with
NGP, which I think is why NCSA is looking at SILO/SLIDE.  But as far as I
know, SILO/SLIDE has not been used outside of LLNL yet, though PDBLib is
used in other parts of the fusion research community.

As you can tell from this reply, I'm undecided about the merits of
SILO/SLIDE because I think it may be an extension that makes netCDF more
complicated than it needs to be for most uses, though I think Jeff Long has
done a good job of extending netCDF for a particular use.  Last week we met
with Chris Houck from NCSA and the question of SILO extensions came up for
the netCDF/HDF project.  We agreed that the benefits of including the SILO
extensions for general use seemed dubious, but that the NGP may have
sufficient resources to pay someone to add SILO/SLIDE to netCDF anyway if
they chose to use their resources that way.

--Russ