[vtkusers] How to extract multiple scalar values along a stream	line?
    Mark B Stucky 
    mstucky5 at cox.net
       
    Tue May 10 18:44:19 EDT 2005
    
    
  
First of all, I'm fairly new to VTK, so please excuse my ignorance.
I've tried searching the mailing list archives, but I didn't find
anything that seemed like what I needed.
I have a structured grid that represents a 3d flow field.  At
each grid point, there are multiple scalars defined.
     vtkStructuredGridReader SGR
        SGR SetOutput [SGR GetOutput]
        SGR SetFileName sgl3d.vtk
        SGR SetScalarsName mach
        SGR SetVectorsName velocity
     other scalars include: density, stagnation_energy, etc.
I then use "vtkStreamTracer" to generate a series of
stream lines.
     vtkStreamTracer SL
     SL SetInput [SGR GetOutput]
     SL SetSource aPolyLineGrid
     SL SetIntegratorTypeToRungeKutta4
     SL SetIntegrationDirection 1
     SL SetTerminalSpeed 0.0
        [etc.]
I've been able dump out the coordinates of each streamline
along with the scalar, "mach", at each coordinate with the
following code:
     set s [SL GetOutput]
     prtStreamLines $s lines_1.dat
     ------------------------------------------------
     proc prtStreamLines {s file_name} {
         set fp [open $file_name w]
         set ld       [[$s GetLines] GetData]
         set ssd      [[$s GetPointData] GetScalars]
         set numLines [$s GetNumberOfLines]
         set sVrts    [$s GetPoints]
         set idx 0
         set stLst {}
         for {set i 0} {$i<$numLines} {incr i} {    ;# For each line...
             set nPts [$ld GetComponent $idx 0]     ;# # of points in this 
line
             set endPt [expr $idx + $nPts]          ;# Indx to last pt in 
this line
             for {set j [expr $idx+1]} {$j<=$endPt} {incr j} {
                 set ptNo  [$ld GetComponent $j 0]      ;# Point # (indx 
into scalars)
                 set mach  [$ssd GetComponent 0 $ptNo]  ;# Point # (scalar)
                 set coord [$sVrts GetPoint $ptNo]      ;# Point # (coords)
                 puts $fp "  $i $ptNo $coord $mach"
             }
             incr idx [expr $nPts + 1]                  ;# Move to next line
         }
         close $fp
     }
What I want to do is to dump out some of the additional scalar
values.  I'm guessing that I need to add additional inputs (?)
to the streamtracer object, "SL", to make them available to the
"prtStreamLines" routine.  I just haven't figured out the right
sequence of steps.
I'm hoping that someone will be able to point me in the right
direction.
Thanks,
--Mark Stucky 
    
    
More information about the vtkusers
mailing list