[vtkusers] reliability of vtkStreamLine

Berk Geveci berk.geveci at kitware.com
Mon Dec 17 10:30:15 EST 2001


The streamer will terminate the integration if one of the few conditions are
met:

1. The next point on the streamline is not contained by a cell (streamline
moved out of the domain)

2. If the streamer receives abort from the user (if user calls SetAbortExecute()
inside the progress method)

3. If the distance between two following points on the streamline is 0.0 
(stagnation)

4. If the sum of the speed at two following points is less than  VTK_EPSILON
(hard coded to be 1E-12) (stagnation)

5. If the speed at a point is smaller than the terminal speed
(SetTerminalSpeed())

6. Maximum propagation time is reached (SetMaximumPropagationTime() )

Since the step length used in the integration is calculated from the current
cell length and IntegrationStepLength:
step <in time units> = dir*self->GetIntegrationStepLength()
           * sqrt((double)cell->GetLength2())/pt1.speed;

it is possible to get long integration times when: 1. IntegrationStepLength
is very small (or there are many small cells), 2. the speed in a region is very
small but not 0, 3. MaximumPropagationTime (unit is time unlike in 
IntegrationStepLength) is large compared to step length.

To see if this is what is occuring, set the TerminalSpeed to a larger number
and check if the streamline terminates early.

The only time 4th order integation can change this behavior (as far as I can
think, there might really be a bug I missed) is when it steers the streamline
away from the stagnation region because of better accuracy.

> When selecting specific starting-points for
> the streamline in my RectilinearGrid, vtk allocated memory up to 1GB and
> terminated with an error.


I can't think why this would occur. If somebody is willing to share a data file

which causes these problems (and the parameters used in the integation), I can
give better answers and possibly fix the problem(s).

-Berk



Song Li schrieb:
 >
 > Hi,gurus,
 >    I am trying to execute vtkStreamLine continuously, the procedure is
 > like :
 >
 > rendering streamline  -- get new position of start point -- rendering
 > streamline
 >
 >   in an infinite loop unless give a signal to end the loop, the
 > problem is , the program may stuck at the point of
 > vtkStreamLine::Update() after executed for some time, the period it
 > can work is unpredictable......Does anybody has experienced such
 > problem before ??

_





More information about the vtkusers mailing list