Difference between revisions of "User:Tohline/IVAJ/Levels2and3"

From VistrailsWiki
Jump to navigation Jump to search
(→‎Base Workflow: Typing in subsection text)
(→‎Base Workflow: Finished typing in subsection text)
Line 31: Line 31:


Within VisTrails, we initially selected various VTK-based modules to do the following, in sequence (see Figure 1a):
Within VisTrails, we initially selected various VTK-based modules to do the following, in sequence (see Figure 1a):
*''Read simulation data.'' We used <font face="Courier">vtkPLOG3DReader</font> to read in one file containing the <math>(x, y, z)</math> coordinate locations of every vertex on our 3D cylindrical coordinate mesh and a separate file containing the fluid's mass-density (scalar) and momentum-density (3D vector) at every grid vertex.
*''Read simulation data.'' We used <font face="Courier">vtkPLOT3DReader</font> to read in one file containing the <math>(x, y, z)</math> coordinate locations of every vertex on our 3D cylindrical coordinate mesh and a separate file containing the fluid's mass-density (scalar) and momentum-density (3D vector) at every grid vertex.
*''Outline cylindrical domain boundary.'' As shown, we enlisted <font face="Courier">vtkStructuredGridOutlineFilter</font>, <font face="Courier">vtkPolyDataMapper</font>, and <font face="Courier">vtkActor</font>.
*''Outline cylindrical domain boundary.'' As shown, we enlisted <font face="Courier">vtkStructuredGridOutlineFilter</font>, <font face="Courier">vtkPolyDataMapper</font>, and <font face="Courier">vtkActor</font>.
*''Define isodensity surfaces.'' We rendered two nested isodensity surfaces to outline high- (red) and low-density (blue) flow regions.  The <font face="Courier">Red_contour</font> and <font face="Courier">Blue_contour</font> module groups each contain <font face="Courier">vtkContourFilter</font>, <font face="Courier">vtkDataSetMapper</font>, <font face="Courier">vtkProperty</font>, and <font face="Courier">vtkActor</font>.
*''Define isodensity surfaces.'' We rendered two nested isodensity surfaces to outline high- (red) and low-density (blue) flow regions.  The <font face="Courier">Red_contour</font> and <font face="Courier">Blue_contour</font> module groups each contain <font face="Courier">vtkContourFilter</font>, <font face="Courier">vtkDataSetMapper</font>, <font face="Courier">vtkProperty</font>, and <font face="Courier">vtkActor</font>.
*''Draw streamlines.'' As Figure 1b shows, each of the eight separate <font face="Courier">Draw_Streamlines</font> module groups uses <font face="Courier">vtkStreamLine</font>, <font face="Courier">vtkTubeFilter</font>, <font face="Courier">vtkDataSetMapper</font>, <font face="Courier">vtkProperty</font>, <font face="Courier">vtkActor</font>, <font face="Courier">vtkSphereSource</font>, <font face="Courier">vtkPolyDataMapper</font>, and <font face="Courier">vtkLODActor</font> to trace an individual streamline within the flow.  Streamline lengths are set by feeding a common <font face="Courier">Propagation_Time</font> into all eight module groups.
Vistrails renders the output from the various workflow actors in a composite scene using <font face="Courier">vtkRenderer</font> as viewed by an observer located at a position that <font face="Courier">vtkCamera</font> specifies.  Finally, the module <font face="Courier">vtkCell</font> directs this scene to the VisTrails interactive spreadsheet.
In this initially constructed ''base workflow,'' VisTrails pipes the 3D vector field representing the momentum density distribution from the <font face="Courier">vtkPLOT3DReader</font> module directly into each of the eight <font face="Courier">Draw_Streamline</font> module groups.  This base workflow &#150; which VisTrails assembles using generically available <font face="Courier">vtk</font> modules &#150; lets us examine the behavior of streamlines in our binary mass-transfer simulations, but only from the frame of reference, <math>\Omega_0</math>, in which we originally performed each simulation (see Figure 2b, labeled <math>\Delta\Omega = 0.00</math>).

Revision as of 21:50, 19 January 2010

A Customized Python Module for CFD Flow Analysis within VisTrails
by Joel E. Tohline, Jinghua Ge, Wesley Even, & Erik Anderson

A relatively simple, customized Python module that plugs smoothly into an otherwise standard workflow within VisTrails facilitates a quantitative analysis of complex fluid flows in simulations of merging binary stars.

Introduction

Researchers in the open source community are steadily improving scientific visualization tools. These tools are providing a wider array of sophisticated probes for data analysis and a wider assortment of effective user-friendly interfaces. They're also making it easier for researchers in the computational science community &#150; across many disciplines &#150; to effectively analyze huge datasets by drawing on the human brain's acute ability to sort through complex and time-varying visual patterns. The astrophysics group at Louisiana State University (LSU), for example, routinely uses volume-rendering and ray-tracing algorithms in conjunction with animation techniques to examine the time-varying behavior of isodensity surfaces that arise in computational fluid dynamic (CFD) simulations of mass-transferring and merging binary star systems. Although such analyses generally provide only a qualitative identification and assessment of structure within a given dataset, the insight gained from visual inspection can nevertheless be extremely valuable. For example, it was through visual inspection that researchers at LSU initially spotted the nonlinear development of triangular-, square-, and pentagonal-shaped tidal resonances in recent simulations.

LSU's astrophysics group has begun to incorporate VisTrails into its arsenal of scientific visualization and data analysis tools. VisTrails primarily interested the group a few years ago because it provides a user-friendly workflow interface to the extensive VTK software library. It also automatically tracks the provenance of data analysis efforts. However, what most impresses us now is the ease with which VisTrails facilitates the insertion of home-grown analysis modules into an otherwise VTK-based workflow. Taking advantage of this additional programming versatility, we have gained a greater appreciation of the role that visualization tools can play in the quantitative assessment of results from large-scale simulations. In this article, we first describe the VTK-based workflow that we initially constructed in VisTrails to view streamlines within each binary mass-transfer simulation. We then describe the Python module, whose insertion into this workflow has permitted us to identify values of key rotational frequencies associated with such flows.

Aside

Before diving into a discussion of the VisTrails workflows that have been developed for this study, it will be useful to download the relevant .vt module from the VisTrails database.


<vistrail host="vistrails.sci.utah.edu" db="vistrails" vtid="19" version="1834" tag="" showspreadsheetonly="True"/>

Base Workflow

Figure1 Tohline.jpg

Within VisTrails, we initially selected various VTK-based modules to do the following, in sequence (see Figure 1a):

  • Read simulation data. We used vtkPLOT3DReader to read in one file containing the <math>(x, y, z)</math> coordinate locations of every vertex on our 3D cylindrical coordinate mesh and a separate file containing the fluid's mass-density (scalar) and momentum-density (3D vector) at every grid vertex.
  • Outline cylindrical domain boundary. As shown, we enlisted vtkStructuredGridOutlineFilter, vtkPolyDataMapper, and vtkActor.
  • Define isodensity surfaces. We rendered two nested isodensity surfaces to outline high- (red) and low-density (blue) flow regions. The Red_contour and Blue_contour module groups each contain vtkContourFilter, vtkDataSetMapper, vtkProperty, and vtkActor.
  • Draw streamlines. As Figure 1b shows, each of the eight separate Draw_Streamlines module groups uses vtkStreamLine, vtkTubeFilter, vtkDataSetMapper, vtkProperty, vtkActor, vtkSphereSource, vtkPolyDataMapper, and vtkLODActor to trace an individual streamline within the flow. Streamline lengths are set by feeding a common Propagation_Time into all eight module groups.

Vistrails renders the output from the various workflow actors in a composite scene using vtkRenderer as viewed by an observer located at a position that vtkCamera specifies. Finally, the module vtkCell directs this scene to the VisTrails interactive spreadsheet.

In this initially constructed base workflow, VisTrails pipes the 3D vector field representing the momentum density distribution from the vtkPLOT3DReader module directly into each of the eight Draw_Streamline module groups. This base workflow &#150; which VisTrails assembles using generically available vtk modules &#150; lets us examine the behavior of streamlines in our binary mass-transfer simulations, but only from the frame of reference, <math>\Omega_0</math>, in which we originally performed each simulation (see Figure 2b, labeled <math>\Delta\Omega = 0.00</math>).