364 High Performance Visualization
“dummy” implementations. The developer then replaces the dummy imple-
mentations with their intended algorithm, file reading code, etc.
16.3.4 The Size and Breadth of VisIt
Although only briefly discussed in this chapter, VisIt has an extensive
list of features. Its ˜115 file format readers include support for many HDF5-
and NetCDF-based formats, CGNS, and others, including generic readers for
some types of binary and ASCII files. Its ˜60 operators include transforma-
tions (such as projections, scaling, rotation, and translation), data subsetting
(such as thresholding and contouring), and spatial thresholding (such as lim-
iting to a box or a plane), among many others. Its ˜90 queries allow users to
get customizable reports about specific cells or points, integrate quantities,
calculate surface areas and volumes, insert synthetic diagnostics/virtual de-
tectors, and much more. Its ˜190 expressions go well beyond simple math. For
example, the user can create derived quantities like, “if the magnitude of the
gradient of density is greater than this, then do this, else do that.”
And many features do not fit into the five primary user interface con-
cepts. There is support for positioning light sources, making movies (includ-
ing MPEG encoding), eliminating data based on known categorizations (e.g.,
“show me only this refinement level” from an AMR mesh), and rendering ef-
fects like shadows and specular highlights, to name a few. In total, VisIt is
approximately one and a half million lines of code.
Finally, VisIt makes heavy use of the Visualization ToolKit (VTK) [17].
This library contains an execution model, a data model, and many algorithms
for transforming data. VisIt implements its own execution model, but the
other two pieces form the foundation of VisIt’s data processing. VTK’s data
model forms the basis of VisIt’s data model, although VisIt provides support
for mixed material cells, metadata for faster processing, and other concepts
not natively supported by VTK. Further, VisIt uses the native VTK algorithm
for many embarrassingly parallel visualization algorithms. In short, VTK has
provided an important leverage to the VisIt project, allowing VisIt developers
to direct their attention to the project’s three main focal points.
16.4 Successes
The VisIt project has succeeded in multiple ways: by providing a scalable
infrastructure for visualization and analysis, by populating that infrastruc-
ture with cutting-edge algorithms, by informing the limits of new hardware
architectures, and, most importantly, by enabling successes for the tool’s end
users. A few noteworthy highlights are summarized in the subsections below.