52 #ifndef __vtkStreamer_h
53 #define __vtkStreamer_h
55 #include "vtkFiltersFlowPathsModule.h"
59 class vtkMultiThreader;
61 #define VTK_INTEGRATE_FORWARD 0
62 #define VTK_INTEGRATE_BACKWARD 1
63 #define VTK_INTEGRATE_BOTH_DIRECTIONS 2
69 void PrintSelf(ostream& os, vtkIndent indent);
74 void SetStartLocation(vtkIdType cellId,
int subId,
double pcoords[3]);
80 void SetStartLocation(vtkIdType cellId,
int subId,
double r,
double s,
86 vtkIdType GetStartLocation(
int& subId,
double pcoords[3]);
91 void SetStartPosition(
double x[3]);
96 void SetStartPosition(
double x,
double y,
double z);
99 double *GetStartPosition();
103 void SetSourceData(vtkDataSet *
source);
104 vtkDataSet *GetSource();
113 vtkSetClampMacro(MaximumPropagationTime,
double,0.0,VTK_DOUBLE_MAX);
114 vtkGetMacro(MaximumPropagationTime,
double);
119 vtkSetClampMacro(IntegrationDirection,
int,
121 vtkGetMacro(IntegrationDirection,
int);
128 const char *GetIntegrationDirectionAsString();
134 vtkSetClampMacro(IntegrationStepLength,
double,0.0000001,VTK_DOUBLE_MAX);
135 vtkGetMacro(IntegrationStepLength,
double);
141 vtkSetMacro(SpeedScalars,
int);
142 vtkGetMacro(SpeedScalars,
int);
143 vtkBooleanMacro(SpeedScalars,
int);
152 vtkSetMacro(OrientationScalars,
int);
153 vtkGetMacro(OrientationScalars,
int);
154 vtkBooleanMacro(OrientationScalars,
int);
160 vtkSetClampMacro(TerminalSpeed,
double,0.0,VTK_DOUBLE_MAX);
161 vtkGetMacro(TerminalSpeed,
double);
170 vtkSetMacro(Vorticity,
int);
171 vtkGetMacro(Vorticity,
int);
172 vtkBooleanMacro(Vorticity,
int);
175 vtkSetMacro( NumberOfThreads,
int );
176 vtkGetMacro( NumberOfThreads,
int );
178 vtkSetMacro( SavePointInterval,
double );
179 vtkGetMacro( SavePointInterval,
double );
193 vtkSetMacro(Epsilon,
double);
194 vtkGetMacro(Epsilon,
double);
207 void Integrate(vtkDataSet *input, vtkDataSet *
source);
215 double StartPCoords[3];
218 double StartPosition[3];
249 delete [] this->Array;
256 if ( ++this->MaxId >= this->Size )
258 this->Resize(this->MaxId);
311 static VTK_THREAD_RETURN_TYPE ThreadedIntegrate(
void *arg );
316 vtkGetMacro( NumberOfStreamers, vtkIdType );
320 void InitializeThreadedIntegrate();
337 return "IntegrateForward";
341 return "IntegrateBackward";
345 return "IntegrateBothDirections";
vtkInitialValueProblemSolver * Integrator
vtkIdType GetNumberOfPoints()
virtual int FillInputPortInformation(int port, vtkInformation *info)
StreamPoint * GetStreamPoint(vtkIdType i)
vtkMultiThreader * Threader
void SetIntegrationDirectionToBackward()
#define VTK_INTEGRATE_BOTH_DIRECTIONS
vtkIdType NumberOfStreamers
#define VTK_INTEGRATE_FORWARD
Proxy object to connect input/output ports.
void PrintSelf(ostream &os, vtkIndent indent)
Superclass for algorithms that produce only polydata as output.
abstract object implements integration of massless particle through vector field
double MaximumPropagationTime
double IntegrationStepLength
StreamArray * GetStreamers()
void SetIntegrationDirectionToForward()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
const char * GetIntegrationDirectionAsString()
vtkIdType InsertNextStreamPoint()
#define VTK_INTEGRATE_BACKWARD
void SetIntegrationDirectionToIntegrateBothDirections()
Integrate a set of ordinary differential equations (initial value problem) in time.