There are three types of comparative visualization:

  1. Image-based comparisons (side-by-side comparisons)
  2. Data-level comparisons
  3. Topological comparisons

VisIt is good at the first two. The third type is often heavily application-specific. VisIt can do some topological analyses, like comparing the number of components between two data sets, for example.

Image-based comparisons

Multiple window comparisons

In this example, we use a single file, but you should think about using multiple files (for comparison). The reason we use a single file is a dearth of example data in the VisIt download.

  1. Make a Pseudocolor plot of hardyglobal.
  2. Make the window layout be 1x2.
    • There are two ways to do this:
      1. On the toolbar, find the fifth icon from the left, a rectangle with a line in the middle, indicating a 1x2 layout.
      2. Or, on the gui on the left hand side, go to Windows->Layout->1x2.
  3. Make window #2 be the active window.
    • There are two ways to do this:
      1. Click on the first icon in the upper left in the toolbar, which is a picture of window.
      2. Right above the active plots list, there is a dropdown labeled "Active window". Change that from 1 to 2.
  4. The active plots list should be empty.
    • The active plots list always reflects the plots of the active window.
      1. Change the active window back to window #1.
        • The plot reappears in the active plots list.
      2. Make window #2 active.
        • The active plots list is empty again.
  5. Go to Windows->Copy Plots From->Window #1.
  6. The active plots list should now have a Pseudocolor plot of hardyglobal.
  7. Use the variable dropdown to change the active variable to shepardglobal.
  8. Draw.
    • You should now have a picture of hardyglobal on the left and a picture of shepardglobal on the right.
  9. Of course, you can have data from different files in the two windows (or even in the same window).

  1. Now, on the toolbar, click on the lock with the eyeball for each window.
    • The views are now linked. Rotate one and the other rotates with it.
  2. Apply the slice operator to one of the plots.
  3. Modify the slice operator attributes to *not* project to 2D.
  4. Apply
  5. Also click "Make Default"
  6. Make the other window be active and apply the Slice operator.
    • It will also not project to 2D because you clicked "Make Default".
  7. For both windows, click on the toolbar where there is a lock with two red squares connected by a green line.
    • This will lock tools.
  8. Turn on the plane tool in one of the visualization windows.
    • Do this by clicking on the toolbar icon of a blue "plane", which is to the left of a blue ball and to the right of a blue line.
  9. You will now see red hotspots in the visualization window.
    • You can click in these hotspots and drag to adjust the slice plane.
    • Since the tools are locked, the slice in the other window will also update.
    • If you look at the Slice operator attributes window, you will see that the plane has updated to be consistent with the tool.

  1. Make the window that does *not* have the plane tool up be active.
  2. Modify the slice operator attributes so it *does* project to 2D.
  3. Go back to the window with the plane tool.
  4. Modify the plane.
    • The other window gets the new plane, but it is still projected.

  1. Go to File->Set Save Options
  2. Turn "Save tiled" to be on and save.
  3. The result will be an image that has both windows in it.

Single window comparisons

If you want to look at two files in the same visualization window, you can do that as well, even if they occupy the same region of space.

  1. Open curv3d.silo.
  2. Make a Pseudocolor plot of "d"
  3. Draw.
  4. Open multi_ucd3d.silo.
  5. Make a Pseudocolor plot "u"
  6. Draw
  7. The two plots are on top of each other, at least partially, as they do not overlap perfectly.
  8. Turn off the button "Apply operators to all plots" located under the active plots list.
    • VisIt by default will apply the same operators to all plots. This button disables that behavior.
  9. Apply the Reflect operator to the second Pseudocolor plot, the one from multi_ucd3d.silo.
    • You can tell that this plot comes from multi_ucd3d.silo, because there is a number next to the plot (mine says 11:Pseudocolor(u)) and that number (11) corresponds to the file multi_ucd3d.silo in the file list.
    • Some materials may be turned off for multi_ucd3d.silo, if so, click on the interlocking rings to bring up the Subset window and turn the materials back on.
  10. Bring up the Reflect operator attributes.
  11. Modify the attributes so that:
    1. Input mode is 3D
    2. The purple circle is clicked and turned off (turning it grey) and the square below it is still green.
    3. Apply
  12. You will now see the multi_ucd3d.silo plot of u below the curv3d.silo plot of d.

Data level comparisons

Data-level comparisons are done with "cross mesh field evaluations" ("CMFEs") which are documented extensively on CMFEs are deployed through the expression language, which allows for flexible applications. CMFEs are notoriously hard to set up by hand, so we will use the CMFE wizard. You can access this wizard under Controls->Data Level Comparisons.

  1. Open curv3d.silo and multi_ucd3d.silo
  2. Bring up the data-level comparison wizard.
    • Select "between meshes in two separate databases"
    • The target database should be curv3d.silo.
    • The target mesh is curvmesh3d.
    • The donor database is multi_ucd3d.silo
    • The donor field is "d".
      • We are telling VisIt to take the density field from multi_ucd3d.silo and put it onto the curvmesh3d mesh of curv3d.silo.
    • On the next page, select Position-based CMFE.
    • Make the constant value be 10. This will let us see where they don't overlap.
    • On the next page, choose the differencing option and difference with "d" from curv3d.silo.
    • Choose the option for absolute value of the difference.
    • Click "Done".
  3. Go to Controls->Expression. You can see the expression created that brings the field from multi_ucd3d onto curv3d.silo.
  4. Make a Pseudocolor plot of "cmfe0". You can see the difference between them.
    • The result is misleading because the two have different centering.
    • Change the abs(d-...) to be abs(recenter(d)-...). This will put them on the same centering.
    • Experiment with different values for the non-overlapping regions: 0, -100, and d.
  5. Delete your Pseudocolor plot.
  6. Add a Histogram plot of cmfe0. (Make sure you ended with "d" as the non-overlap value)
  7. Modify the Histogram plot attributes so the bin contribution is by frequency.
  8. Click draw.
  9. You now have a histogram of the differences between the two data sets.
  10. It looks like there is a tail of values that are extra far apart. Let's find those.
  11. Delete the Histogram plot and make a Pseudocolor plot of cmfe0. Apply the Threshold operator with the minimum at 0.03.
    • It looks like the inner ring has the most difference.
  12. Make a Pseudocolor plot of d from curv3d.silo and pick at the inner ring. It is solidly at 2.03. Replace with multi_ucd3d.silo. It has values ranging between 2.0 and 2.1. So they are different.

Now we'll do the same thing with doing a comparison over time:

  1. Open up the hgx*.vtk database (the one we made in the beginning tutorial)
  2. Go to the data level comparisons wizard
  3. Select "Between different time slices on the same database"
  4. On the next page, the database is "hgx*.vtk database", the target mesh is "mesh" and the donor field is "hgx".
  5. There are no times in this database, so we'll specify a relative time and we'll do it with time index.
    • Relative time, time index option, with value -1
    • This gives the data from the previous time slice.
  6. On the next page, select connectivity-based CMFE this time.
    • Call it cmfe1.
    • Take "Variable minus donor field" and difference with hgx.
  7. This will give the difference of hgx with hgx at the previous time slice.
  8. Once again, go to Controls->Expression to see what expression was created.
  9. Delete all plots and make a Pseudocolor plot of cmfe1.
    • When you draw, you get a warning. It says that your expression wanted to reference time slice -1 and it will use time slice 0 in its place. This makes sense.
  10. Move the time slider forward one time step.
    • Now we get a good plot.
  11. Keep moving the time slice forward. We can see the differences "move across" the data set as time moves forward.
  12. Modify the expression so it is just the CMFE without the differencing.
  13. Make the window layout be 2x1 and make a plot of hgx in the second window at the previous time slice. They're the same (as expected).