68 #ifndef __vtkGenericStreamTracer_h
69 #define __vtkGenericStreamTracer_h
71 #include "vtkFiltersGenericModule.h"
72 #include "vtkPolyDataAlgorithm.h"
74 #include "vtkInitialValueProblemSolver.h"
77 class vtkGenericAdaptorCell;
80 class vtkGenericInterpolatedVelocityField;
82 class vtkGenericAttribute;
83 class vtkGenericDataSet;
89 void PrintSelf(ostream& os, vtkIndent indent);
101 vtkSetVector3Macro(StartPosition,
double);
102 vtkGetVector3Macro(StartPosition,
double);
107 void SetSourceData(vtkDataSet *
source);
108 vtkDataSet *GetSource();
113 void SetSourceConnection(vtkAlgorithmOutput* algOutput);
115 int FillInputPortInformation(
int port, vtkInformation* info);
136 OUT_OF_DOMAIN = vtkInitialValueProblemSolver::OUT_OF_DOMAIN,
137 NOT_INITIALIZED = vtkInitialValueProblemSolver::NOT_INITIALIZED ,
138 UNEXPECTED_VALUE = vtkInitialValueProblemSolver::UNEXPECTED_VALUE,
152 void SetIntegrator(vtkInitialValueProblemSolver *);
153 vtkGetObjectMacro ( Integrator, vtkInitialValueProblemSolver );
154 void SetIntegratorType(
int type);
155 int GetIntegratorType();
157 {this->SetIntegratorType(RUNGE_KUTTA2);};
159 {this->SetIntegratorType(RUNGE_KUTTA4);};
161 {this->SetIntegratorType(RUNGE_KUTTA45);};
167 void SetMaximumPropagation(
int unit,
double max);
168 void SetMaximumPropagation(
double max);
169 void SetMaximumPropagationUnit(
int unit);
170 int GetMaximumPropagationUnit();
171 double GetMaximumPropagation();
173 {this->SetMaximumPropagationUnit(TIME_UNIT);};
175 {this->SetMaximumPropagationUnit(LENGTH_UNIT);};
177 {this->SetMaximumPropagationUnit(CELL_LENGTH_UNIT);};
184 void SetMinimumIntegrationStep(
int unit,
double step);
185 void SetMinimumIntegrationStepUnit(
int unit);
186 void SetMinimumIntegrationStep(
double step);
187 int GetMinimumIntegrationStepUnit();
188 double GetMinimumIntegrationStep();
190 {this->SetMinimumIntegrationStepUnit(TIME_UNIT);};
192 {this->SetMinimumIntegrationStepUnit(LENGTH_UNIT);};
194 {this->SetMinimumIntegrationStepUnit(CELL_LENGTH_UNIT);};
201 void SetMaximumIntegrationStep(
int unit,
double step);
202 void SetMaximumIntegrationStepUnit(
int unit);
203 void SetMaximumIntegrationStep(
double step);
204 int GetMaximumIntegrationStepUnit();
205 double GetMaximumIntegrationStep();
207 {this->SetMaximumIntegrationStepUnit(TIME_UNIT);};
209 {this->SetMaximumIntegrationStepUnit(LENGTH_UNIT);};
211 {this->SetMaximumIntegrationStepUnit(CELL_LENGTH_UNIT);};
218 void SetInitialIntegrationStep(
int unit,
double step);
219 void SetInitialIntegrationStepUnit(
int unit);
220 void SetInitialIntegrationStep(
double step);
221 int GetInitialIntegrationStepUnit();
222 double GetInitialIntegrationStep();
224 {this->SetInitialIntegrationStepUnit(TIME_UNIT);};
226 {this->SetInitialIntegrationStepUnit(LENGTH_UNIT);};
228 {this->SetInitialIntegrationStepUnit(CELL_LENGTH_UNIT);};
235 vtkSetMacro(MaximumError,
double);
236 vtkGetMacro(MaximumError,
double);
241 vtkSetMacro(MaximumNumberOfSteps, vtkIdType);
242 vtkGetMacro(MaximumNumberOfSteps, vtkIdType);
248 vtkSetMacro(TerminalSpeed,
double);
249 vtkGetMacro(TerminalSpeed,
double);
257 this->SetInitialIntegrationStepUnit(unit);
258 this->SetMinimumIntegrationStepUnit(unit);
259 this->SetMaximumIntegrationStepUnit(unit);
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,
int);
289 vtkGetMacro(ComputeVorticity,
int);
290 vtkBooleanMacro(ComputeVorticity,
int);
296 vtkSetMacro(RotationScale,
double);
297 vtkGetMacro(RotationScale,
double);
304 vtkGetStringMacro(InputVectorsSelection);
306 {this->SetInputVectorsSelection(fieldName);}
310 void AddInputData(vtkGenericDataSet *in);
314 void SetInterpolatorPrototype(vtkGenericInterpolatedVelocityField* ivf);
322 { vtkErrorMacro( <<
"AddInput() must be called with a vtkGenericDataSet not a vtkDataObject."); };
324 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
332 void CalculateVorticity(vtkGenericAdaptorCell* cell,
334 vtkGenericAttribute *attribute,
335 double vorticity[3]);
338 void Integrate(vtkGenericDataSet *input0,
340 vtkDataArray* seedSource,
342 vtkIntArray* integrationDirections,
344 vtkGenericInterpolatedVelocityField* func);
345 void SimpleIntegrate(
double seed[3],
348 vtkGenericInterpolatedVelocityField* func);
349 int CheckInputs(vtkGenericInterpolatedVelocityField*& func,
350 vtkInformationVector **inputVector);
351 void GenerateNormals(vtkPolyData* output,
double* firstNormal);
355 vtkSetStringMacro(InputVectorsSelection);
360 double StartPosition[3];
379 void SetIntervalInformation(
int unit,
double interval,
383 double cellLength,
double speed);
385 double cellLength,
double speed);
387 double cellLength,
double speed);
389 double cellLength,
double speed);
390 void ConvertIntervals(
double& step,
double& minStep,
double& maxStep,
391 int direction,
double cellLength,
double speed);
394 void InitializeSeeds(vtkDataArray*& seeds,
396 vtkIntArray*& integrationDirections);
void SetMinimumIntegrationStepUnitToLengthUnit()
void SetMaximumPropagationUnitToTimeUnit()
void SetIntegrationDirectionToBackward()
static const double EPSILON
void SelectInputVectors(const char *fieldName)
vtkGenericInterpolatedVelocityField * InterpolatorPrototype
void SetInitialIntegrationStepUnitToTimeUnit()
void SetInitialIntegrationStepUnitToCellLengthUnit()
void SetMinimumIntegrationStepUnitToTimeUnit()
void SetIntegrationDirectionToBoth()
vtkInitialValueProblemSolver * Integrator
void AddInput(vtkDataObject *)
IntervalInformation MinimumIntegrationStep
void SetInitialIntegrationStepUnitToLengthUnit()
IntervalInformation MaximumIntegrationStep
void SetMaximumIntegrationStepUnitToCellLengthUnit()
char * InputVectorsSelection
void SetIntegrationDirectionToForward()
void SetIntegratorTypeToRungeKutta2()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
void SetIntegratorTypeToRungeKutta4()
void SetMaximumPropagationUnitToLengthUnit()
IntervalInformation MaximumPropagation
void SetIntegratorTypeToRungeKutta45()
IntervalInformation InitialIntegrationStep
void SetMaximumPropagationUnitToCellLengthUnit()
vtkIdType MaximumNumberOfSteps
void SetMaximumIntegrationStepUnitToLengthUnit()
void SetMaximumIntegrationStepUnitToTimeUnit()
void SetMinimumIntegrationStepUnitToCellLengthUnit()
void SetIntegrationStepUnit(int unit)
int GenerateNormalsInIntegrate