Each item below is an example of the use of Silo to represent a different kind of scientific data. Each example shows a picture of the data (visualized with VisIt, describes some of the key concepts the example demonstrates, lists a set of key Silo functions the example uses and provides links to both C or C++ source code used to generate the data as well as the resulting Silo data file.

All of the examples here use some common Silo functions such as DBCreate and DBClose or functions to manage option lists such as DBMakeOptlist or DBAddOption. So, those functions are not explicitly mentioned.

Constructive Solid Geometry

VisIt Image Related assets
csg.silo data file
csg_mesh.C source code

Materials and Mixing Materials

VisIt Image Related assets
specmix_quad.silo quadmesh file
specmix_ucd.silo ucdmesh file
specmix_quad.C source code
  • Key concepts: Representation of the same mesh data on both quadrilateral (Quad) and unstructured (UCD) meshes, quadrilateral mesh with deformed (nonlinear) coordinates, representation of materials and mixing materials and material species.
  • Silo functions: DBPutMaterial, DBPutMatspecies, DBPutQuadmesh, DBPutZonelist.

Parallel Decomposed Meshes

VisIt Image Related assets
bigsil.silo data file
bigsil.C source code
pmpio_silo_test_mesh.c source code

Also, be sure to read about the Multiple Independent File (MIF) parallel I/O paradigm. A pmpio.h header file is available to make MIF I/O easy.

Point (Gridless) Meshes

VisIt Image Related assets
noise.silo data file
noise.C source code

Unstructured Zoo and Arbitrary Polyhedral Meshes

VisIt Image Related assets
poly3d.silo data file
testall.C source code

Block-Structured Adaptive Mesh Refinement Meshes

VisIt Image Related assets
amr2d_mesh_config.xml config file
amr2d_wmrgtree.silo data file
amr3d_mesh_config.xml config file
amr3d_wmrgtree.silo data file
add_amr_mrgtree.C source file
  • Key concepts: Adaptive Mesh Refinement (AMR) meshes, Quadmeshes, Mesh Region Grouping trees (Mrgtrees) and variables (Mrgvars), Grouping Element Maps (Groupelmaps). Without Mrgtrees, a multiblock mesh of Quadmeshes representing the different patches of an AMR hierarchy is not properly organized into an AMR hierarchy. The Silo file examples provided here contain two multi-block representations of the meshes, one without an Mrgtree and one with, so you can understand the difference and what the Mrgtree information is doing.
  • Silo functions: DBMkMrgtree, DBAddRegion, DBAddRegionArray, DBPutMrgtree, DBPutGroupelmap, DBPutMrgvar.