Summary of Work on CS 799

Mike Wade
University of Wisconsin-Madison Computer Sciences
CS 799

Introduction

During the the spring semester of 2000, I worked on an independent study project (University of Wisconsin-Madison Computer Sciences 799) project with Dr. Michael Gleicher. The focus of the project was on the visualization of experimental data provided by a group of physicists at Madison. The following is a summary of what I did on the project.

Experimental Background

We begin with a brief description of the data which was to be visualized. The experiments run by the physicists involved a shell of material which was shot by a laser. The material was primarily a triduum coating on a spherical plastic shell. The goal of the experiments were to create fusion. What happens (to the best of my understanding), is that when the shell is blasted with the laser, some layers of material quickly burn off, while others collapse in on themselves until they become so dense that they explode and produce large amounts of energy.

These types of experiments are very expensive to run in real life, and therefore are run in simulation. The time and computing power necessary to generate these simulations are quite large, while the experiment they are simulating take on the order of nanoseconds. The data generated included a set of values which kept track of the position of certain "shells" (layers) of the sphere involved in the fusion. The values being kept track of where the distance these layers were from the center of the sphere. A summary of the technique to extract these values from the data set are included here.

Different experiments could be run by varying the structure of the sphere (ie. the thickness of the triduum and the plastic shell). One of the problems with these experiments is that the scientists did not always no a priori which experiments were going to produce large amounts of energy and which ones were not. However, it was always possible to tell due to the shape of some of the graphs used to see the data. It was our intent to help the scientists by creating a tool which would help them visualize the data, and also possibly figure out which experiments succeeded and which did by examining the figures displayed.

Summary of work

We began with creating a tool which was able to display the raw data given to us. Our next task was to generate a splined representation of the data. The intent was to see how well the splined data approximated the original data. The hope was that we could then use the splines as a basis of comparison between two sets of data. Finally, a "density display" was produced. This final window attempted to illustrate how the distance between neighboring shells varied as the experiment continued.

The tools created were written in C++ using OpenGL and Fl/TK. They were developed on the Windows NT machines in rooms 1355 and 3370 of the CS building. The tool created involved a two-paned window which displayed the data, a separate window for the density plots, as well as a separate window to allow the user to alter what they saw. See figure 1 for a picture of the tool developed. An overview of the tools is given below.

Figure 1: The tool generated

Data Displayer Tool

The upper window left window shown in Figure 1 was used to display the data generated from the experiments. The x-axis of the data is time of the experiments, while the axis is the distance from the center of the sphere of material. Therefore, each line corresponds to one layer of the sphere that was being tracked. Note that the density of the lines varies within the the window.

The window provided is resizable and zoomable. The window may be resized by grasping the edge of the window with the mouse and pulling the window to the wanted size. Zooming is performed via mouse operations within the window itself. Clicking and dragging within the window will draw the area selected in the whole window. Performing a right click anywhere within the upper pane will zoom out. It is possible to return to previous zoom states by clicking anywhere within the window with the middle mouse button.

Spline Displayer Tool

The lower pane of the larger window was used to display splined version of the data from the upper window. The spline looks at an individual "slice of time" from the upper window. That is, time was held constant and the data being displayed was the distance from the center. This distance was again the vertical axis in the spline displayer, while the horizontal axis was the index of the layer being displayed.

We used cubic B-splines to view the data. Cubic B-splines are approximating splines and provide several nice features, including:

  • allow for local control over the shape of the data being viewed
  • continuous second derivative over the entire set of data.

The control points were uniformly placed uniformly upon the interval based upon the indices of the layers being tracked.

There were a total of four different pieces of information being displayed in the window.

  • The orange lines show the location of the control points
  • The green line shows the original data for the time slice being displayed
  • The blue lines show the splined version of the data
  • The red lines show the original data after being passed through a smoothing filter.
It is possible to zoom within the window in the same manner as the data displayer tool. It is also to change the features of what is being displayed in the spline displayer via actions within the control panel.

Density Window

The density window shows how the distance between two consecutive shells changed with time. A multi-colored mapping was created for this. The horizontal axis of the data represents time, while the vertical axis denotes which set of shells is being compared. Consecutive shells are first subtracted. Then, the distance between the shells is displayed versus time using the following color scheme, which is based upon the initial distance between data sets:
  • White is used to show that two shells remain the same relative distance from each other
  • A dark red indicates when two shells are at their closest together
  • Two shells are furthest apart when they are a dark blue

It was possible to change the color representation to three different options:

  1. The extrema (dark red and dark blue) were based upon the minima and maxima for every shell
  2. The extrema were based upon the minimum and maximum separation of all shells
  3. The same as option two, except a logarithmic scale was used.

Once again, it is possible to zoom within this window in a similar manner to that previously described.

Control Panel

The control panel provided a set of widgets to allow the user to change what aspect of the data is being displayed. The top set of buttons allow for toggling the showing of the four lines in the spline displayer. The next row of widgets allowed the user to specify that the splines should be built based upon the filtered data, rather than the original data. There is also a slider present to allow the user to change the size of the smoothing filter used.

The set of sliders below that changed the features of the data being displayed. The first slider allowed the user to vary the number of control points being used in calculating the splines. This affected both the location and frequency of the orange lines, as well as the changing how well the blue line approximated the original data set. Changing this value always causes the data in the spline displayer to be recalculated. However, if a splined representation of the entire data set has been created (see below), the splines are not recalculated unless the user explicitly chooses to by clicking on the "Respline" button. Calculating all of these splines is relatively time consuming. There is also an option to "normalize" the viewing in the spline displyer so that the zooming is within the range of the data.

The next slider allowed the user to change which slice of time was currently being viewed. The current slice is shown in the data window with a vertical purple line.

The final slider allows the user to specify which shell they are currently interested in. This shell is then drawn in gold in both the data displayer as well as the density window.

In addition to showing the original data in the upper window, it is possible to show only a sub-sampling of the original data, or to overlay a splined version of the data. One could either show all of the splined data, or choose to show the data only at the control points. Such an image is shown in figure 2.

Figure 2: Subsampling the data

In general, the splined version of the data seemed to be a fair representation of the original data (figure 3). However, there were at some points sudden dips in the data, which are, as yet, unexplained.

Figure 3: Overlay of the splined and original data

To allow for some naive visualization and comparison of two data sets, it is possible to load another data file to be viewed by clicking on the "Load File" button. After clicking on this button, the user is prompted for the name of the file to be viewed. Once a file name has been entered, a duplicate set of windows to the ones previously described is displayed on the screen. It is possible to incorporate dual zooming within the windows. By having the "sticky" button pressed, any zooming that is done in one of the windows for the first data set has a matching zoom performed in the new se t of windows.

Additional files

Additional files the reader may be interested in are:
  • A zip file which contains an executable, some sets of data and header files, as well as the necessary dlls to run the program.
  • A 10 minute Powerpoint presentation of this summary
  • The location of the Visual Studio project, currently at /p/graphics/private/Students/mcw/MCW/MCWVisualization