85 #ifndef __vtkStreamTracer_h
86 #define __vtkStreamTracer_h
88 #include "vtkFiltersFlowPathsModule.h"
89 #include "vtkPolyDataAlgorithm.h"
91 #include "vtkInitialValueProblemSolver.h"
93 class vtkCompositeDataSet;
106 void PrintSelf(ostream& os, vtkIndent indent);
119 vtkSetVector3Macro(StartPosition,
double);
120 vtkGetVector3Macro(StartPosition,
double);
126 void SetSourceData(vtkDataSet *
source);
127 vtkDataSet *GetSource();
132 void SetSourceConnection(vtkAlgorithmOutput* algOutput);
161 OUT_OF_DOMAIN = vtkInitialValueProblemSolver::OUT_OF_DOMAIN,
162 NOT_INITIALIZED = vtkInitialValueProblemSolver::NOT_INITIALIZED ,
163 UNEXPECTED_VALUE = vtkInitialValueProblemSolver::UNEXPECTED_VALUE,
177 void SetIntegrator(vtkInitialValueProblemSolver *);
178 vtkGetObjectMacro ( Integrator, vtkInitialValueProblemSolver );
179 void SetIntegratorType(
int type);
180 int GetIntegratorType();
182 {this->SetIntegratorType(RUNGE_KUTTA2);};
184 {this->SetIntegratorType(RUNGE_KUTTA4);};
186 {this->SetIntegratorType(RUNGE_KUTTA45);};
191 void SetInterpolatorTypeToDataSetPointLocator();
195 void SetInterpolatorTypeToCellLocator();
199 vtkSetMacro(MaximumPropagation,
double);
200 vtkGetMacro(MaximumPropagation,
double);
208 void SetIntegrationStepUnit(
int unit );
217 vtkSetMacro(InitialIntegrationStep,
double);
218 vtkGetMacro(InitialIntegrationStep,
double);
225 vtkSetMacro(MinimumIntegrationStep,
double);
226 vtkGetMacro(MinimumIntegrationStep,
double);
233 vtkSetMacro(MaximumIntegrationStep,
double);
234 vtkGetMacro(MaximumIntegrationStep,
double);
240 vtkSetMacro(MaximumError,
double);
241 vtkGetMacro(MaximumError,
double);
246 vtkSetMacro(MaximumNumberOfSteps, vtkIdType);
247 vtkGetMacro(MaximumNumberOfSteps, vtkIdType);
253 vtkSetMacro(TerminalSpeed,
double);
254 vtkGetMacro(TerminalSpeed,
double);
268 INTERPOLATOR_WITH_CELL_LOCATOR
275 vtkSetClampMacro(IntegrationDirection,
int, FORWARD, BOTH);
276 vtkGetMacro(IntegrationDirection,
int);
278 {this->SetIntegrationDirection(FORWARD);};
280 {this->SetIntegrationDirection(BACKWARD);};
282 {this->SetIntegrationDirection(BOTH);};
288 vtkSetMacro(ComputeVorticity,
bool);
289 vtkGetMacro(ComputeVorticity,
bool);
295 vtkSetMacro(RotationScale,
double);
296 vtkGetMacro(RotationScale,
double);
312 void SetInterpolatorType(
int interpType );
320 virtual vtkExecutive* CreateDefaultExecutive();
324 { vtkErrorMacro( <<
"AddInput() must be called with a vtkDataSet not a vtkDataObject."); };
326 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
327 virtual int FillInputPortInformation(
int, vtkInformation *);
329 void CalculateVorticity( vtkGenericCell* cell,
double pcoords[3],
330 vtkDoubleArray* cellVectors,
double vorticity[3] );
331 void Integrate(vtkPointData *inputData,
333 vtkDataArray* seedSource,
335 vtkIntArray* integrationDirections,
340 const char *vecFieldName,
342 vtkIdType& numSteps);
343 void SimpleIntegrate(
double seed[3],
349 void GenerateNormals(vtkPolyData* output,
double* firstNormal,
const char *vecName);
354 double StartPosition[3];
373 void ConvertIntervals(
double& step,
double& minStep,
double& maxStep,
374 int direction,
double cellLength );
375 static double ConvertToLength(
double interval,
int unit,
double cellLength );
380 int SetupOutput(vtkInformation* inInfo,
381 vtkInformation* outInfo);
382 void InitializeSeeds(vtkDataArray*& seeds,
384 vtkIntArray*& integrationDirections,
404 friend class PStreamTracerUtils;
void SetIntegrationDirectionToBoth()
static const double EPSILON
An abstract class for obtaining the interpolated velocity values at a point.
void AddInput(vtkDataObject *)
bool GenerateNormalsInIntegrate
vtkCompositeDataSet * InputData
double MinimumIntegrationStep
vtkIdType MaximumNumberOfSteps
void SetIntegrationDirectionToForward()
int GetIntegrationStepUnit()
vtkInitialValueProblemSolver * Integrator
void SetIntegratorTypeToRungeKutta4()
double MaximumIntegrationStep
void SetIntegratorTypeToRungeKutta2()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
void SetIntegratorTypeToRungeKutta45()
double InitialIntegrationStep
vtkAbstractInterpolatedVelocityField * InterpolatorPrototype
void SetIntegrationDirectionToBackward()
double MaximumPropagation
bool HasMatchingPointAttributes