Exploring the Fluid Data

Exploring the Fluid Data

Viewing the Tank Boundaries

We will start by creating a plot that shows the water tank boundaries.

  • Open dbreak3d_boundaries.silo file.
  • Create a Subset Plot of domains
  • Click Draw

Tank Boundaries Mesh

This subset plot shows the different faces that comprise the water tank. We do not want to view all of the boundaries because they will block the fluid data, so next we turn off a few of the boundary faces that are identified as subsets or domains in the data file.

  • Open the Set Selection Window (click on the Ven Diagram next to domains)
  • Under domains: Turn off domain5 and domain6

Dbreak3d bnd domains subset window.png


  • Click Apply


Selected Tank Boundaries


Finally, lets color all the faces with a uniform color:

  • Open the Subset plot attributes window
  • Select Single and choose the light pastel green color

Dbreak3d bnd color sel.png

  • Click Apply and Dismiss

Dbreak3d bnd single color.png

Viewing the Water sub-volume

Now we will plot the water in the tank.

  • Uncheck Apply operators to all plots

Dbreak3d water uc all all.png

  • Open dbreakd3d_fluid.visit
  • Create a Pseudocolor Plot of alpha1
  • Double click on the Pseudocolor plot to bring up its attributes.
  • Change the color table to PuBu
  • Click Apply and Dismiss
  • Create a Mesh Plot of mesh
  • Click Draw
  • Rotate to view the back face of the water column.

These are the initial conditions of the simulation.


Dbreak3d water init w mesh.png


The alpha1 variable defines the fraction of each cell's volume that is water. We are interested in the portion of the simulation mesh that are at least 50% water. To extract this sub-volume we use an Isovolume Operator:

  • Delete the Mesh plot
  • Add an Isovolume Operator (Operators->Selection->Isovolume)
  • Double click on the Isovolume operator to bring up its attributes
  • Set the Lower bound to .5
  • Select alpha1 as the Variable option

Dbreak3d water isov set.png


  • Click Apply and Dismiss
  • Create the Subset plot of the boundaries dataset as before.
  • Click Draw
  • Rotate the plot to view the column of water in front of the tank boundaries.

Dbreak3d water isov start.png


Save Session File with Basic Visualization Setup

We will use these two basic plots as foundation for the rest of the tutorial, so it will be helpful to have a way to easily recreate them.

  • Save the session (File->Save session as)
    • Set the file name to dbreak3d_plots_basic.session

You can use this session file to easily restore these two plots in the future.

You can also use the dbreak3d_plots_basic.py python script to reproduce these plots if you have both the dbreak3d_fluid.visit and dbreak3d_boundaries.silo databases opened.

Animate the simulation

  • Click the Play button on the timer slider control.

Dbreak3d water ts play.png

Watch the water in the simulation move according to gravity and the constraints at the tank boundaries.

Later in the tutorial we will make a movie displaying water evolution in the tank.

Exploring Time Varying Properties of the Water

Next we will analyze two time varying aspects of the water flow.

Before we begin, there are two preparation items:

Import dbreak3d Tutorial Expressions
  • Open the Expressions Window (Controls->Expressions)
  • Click Load
  • Select the dbreak3d_exprs.xml file (available in the dbreak3d folder in the tutorial examples folder.)
  • Click Apply and Dismiss
Set Query Over Time Options
  • Open the Query over time options Window (Controls->Query over time options)
  • Select Time as the X-axis variable.
  • Click Apply and Dismiss

Dbreak3d query over time options.png

Height of Water Over Time

The first question we will explore is:

What is the highest point in the tank that some volume of water reaches?

We will use VisIt's Expression and Query building blocks to answer the question. First, we need a way to extract the height of the water. We will start with the basic water and tank plot setup described previously and create a plot of y_coord. The definition for this expression is coord(mesh)[1], which extracts the second spatial coordinate from the mesh geometry and exposes it as a scalar variable.

  • Change the active plot variable to y_coord
  • Double click on the Pseudocolor plot to bring up its attributes.
  • Change the color table to RedYlBlu
  • Click Apply and Dismiss

Dbreak3d water y coord init pc.png

The color of the plot now varies according to the height of the mesh cells.

Now we use the Max query to capture how the highest value varies over the duration of the simulation.

  • Open the Query Window (Controls->Query)
  • Select that Max Query

In the query options:

  • Select Actual Data
  • Check Do Time Query
  • Click Query

This will process all 160 time steps and extract the max y-coordinate of the mesh cells that are more than 50% water. (It may take a few seconds to complete)

When the query completes a new window will appear with a curve plot that displays the max value vs time.

Dbreak3d water y coord over time.png

The curve shows us that the max height decays over time as gravity pulls the water to the bottom of the tank. From this curve we also see that the max height of any volume of water in the simulation happens at 0.475 seconds [timestep =19].

  • Return to the window with your y_coord plot, and change the time slider to timestep=19.

Dbreak3d water y coord max ts.png

At this time step we can see a blob of water near the top of the tank reach its maximum height as gravity overcomes its upward velocity.

  • Use the time slider to view time steps before and after timestep = 19.

Number of Water Droplets Over Time

The next question we will explore about the water is:

How do blobs of water break away from the main water volume as the water column splashes and settles?

Again, we will use VisIt's Expression and Query building blocks to answer the question.

VisIt's connected components algorithm allows us to identify topologically distinct sub-volumes of a mesh. In the case of our water flow simulation we will use it to identify blobs or droplets of water that separate from the main water volume.

We will use the cc_label expression to view the droplets. First we need to make sure execute the cc_label expression after the Isovolume selects the water sub-volume.

  • Select time step 25
  • Add a DeferExpression Operator (Operators->Analysis->DeferExpression)
  • Double click on the DeferExpression operator to bring up its attributes
  • Enter cc_label in the Variables field.
  • Click Apply

Select a different color table too improve the contrast of the labels:

  • Double click to open the Pseudocolor attributes.
  • Select the rainbow color table
  • Click Apply
  • Click Draw

Dbreak3d water ccl ts 25.png

The colors identify the different connected sub-volumes of the water. Next, lets execute the time varying query to see how the number of connected blobs evolves over time:

  • Open the Query Window (Controls->Query)
  • Select that Max Query

In the query options:

  • Select Actual Data
  • Check Do Time Query
  • Set the Ending timestep to 80 (this is after that water settles down back into one connected sub-volume)
  • Click Query

This will process 80 timesteps and extract the max connected component id. (It may take a few seconds to complete)

When the query completes a new window will appear with a curve plot that displays the max value vs time.

Dbreak3d water ccl over time.png


We can see that the water breaks into multiple chunks after the column splashes into the right wall of the tank. The maxim number of components occurs at t=0.75 seconds [timestep = 30] We can use a threshold operator to isolate the smaller components from the bulk of the water.

  • Select time step 30
  • Add a Threshold' operator to the current cc_label plot (Operators->Selection->Threshold)
  • Double click on the Threshold operator to bring up its attributes
  • Set the Minimum to be 1

Dbreak3d water ccl thold.png


  • Click Apply and Dismiss
  • Click Draw

There are 24 components at this time step (Labeled 0 though 23) -- we removed the largest which happens to be labeled 0. We can see that many of the components are quite small volumes of water:

Dbreak3d water ccl comps at 30.png