86#ifndef vtkStreamTracer_h
87#define vtkStreamTracer_h
89#include "vtkFiltersFlowPathsModule.h"
128 vtkSetVector3Macro(StartPosition,
double);
129 vtkGetVector3Macro(StartPosition,
double);
181 FIXED_REASONS_FOR_TERMINATION_COUNT
220 vtkSetMacro(MaximumPropagation,
double);
221 vtkGetMacro(MaximumPropagation,
double);
241 vtkSetMacro(InitialIntegrationStep,
double);
242 vtkGetMacro(InitialIntegrationStep,
double);
252 vtkSetMacro(MinimumIntegrationStep,
double);
253 vtkGetMacro(MinimumIntegrationStep,
double);
263 vtkSetMacro(MaximumIntegrationStep,
double);
264 vtkGetMacro(MaximumIntegrationStep,
double);
271 vtkSetMacro(MaximumError,
double);
272 vtkGetMacro(MaximumError,
double);
287 vtkSetMacro(TerminalSpeed,
double);
288 vtkGetMacro(TerminalSpeed,
double);
295 vtkGetMacro(SurfaceStreamlines,
bool);
296 vtkSetMacro(SurfaceStreamlines,
bool);
297 vtkBooleanMacro(SurfaceStreamlines,
bool);
310 INTERPOLATOR_WITH_CELL_LOCATOR
318 vtkSetClampMacro(IntegrationDirection,
int, FORWARD, BOTH);
319 vtkGetMacro(IntegrationDirection,
int);
331 vtkSetMacro(ComputeVorticity,
bool);
332 vtkGetMacro(ComputeVorticity,
bool);
340 vtkSetMacro(RotationScale,
double);
341 vtkGetMacro(RotationScale,
double);
353 vtkSetMacro(UseLocalSeedSource,
bool);
354 vtkGetMacro(UseLocalSeedSource,
bool);
355 vtkBooleanMacro(UseLocalSeedSource,
bool);
384 typedef bool (*CustomTerminationCallbackType)(
395 CustomTerminationCallbackType callback,
void* clientdata,
int reasonForTermination);
407 vtkErrorMacro(<<
"AddInput() must be called with a vtkDataSet not a vtkDataObject.");
418 const char* vecFieldName,
double& propagation,
vtkIdType& numSteps,
double& integrationTime);
427 double StartPosition[3];
446 double& step,
double& minStep,
double& maxStep,
int direction,
double cellLength);
470 bool UseLocalSeedSource =
true;
481 friend class PStreamTracerUtils;
An abstract class for obtaining the interpolated velocity values at a point.
Proxy object to connect input/output ports.
abstract superclass for composite (multi-block or AMR) datasets
abstract superclass for arrays of numeric data
general representation of visualization data
represent and manipulate attribute data in a dataset
abstract class to specify dataset behavior
dynamic, self-adjusting array of double
Superclass for all pipeline executives in VTK.
provides thread-safe access to cells
list of point or cell ids
a simple class to control print indentation
Integrate a set of ordinary differential equations (initial value problem) in time.
dynamic, self-adjusting array of int
represent and manipulate point attribute data
represent and manipulate 3D points
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
void SetIntegratorTypeToRungeKutta45()
Set/get the integrator type to be used for streamline generation.
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
int SetupOutput(vtkInformation *inInfo, vtkInformation *outInfo)
std::vector< void * > CustomTerminationClientData
void Integrate(vtkPointData *inputData, vtkPolyData *output, vtkDataArray *seedSource, vtkIdList *seedIds, vtkIntArray *integrationDirections, double lastPoint[3], vtkAbstractInterpolatedVelocityField *func, int maxCellSize, int vecType, const char *vecFieldName, double &propagation, vtkIdType &numSteps, double &integrationTime)
@ INTERPOLATOR_WITH_DATASET_POINT_LOCATOR
void SetSourceData(vtkDataSet *source)
Specify the source object used to generate starting points (seeds).
vtkDataSet * GetSource()
Specify the source object used to generate starting points (seeds).
double InitialIntegrationStep
vtkAbstractInterpolatedVelocityField * InterpolatorPrototype
double MaximumPropagation
void SetInterpolatorTypeToCellLocator()
Set the velocity field interpolator type to the one involving a cell locator.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void CalculateVorticity(vtkGenericCell *cell, double pcoords[3], vtkDoubleArray *cellVectors, double vorticity[3])
double MinimumIntegrationStep
void SetIntegratorTypeToRungeKutta4()
Set/get the integrator type to be used for streamline generation.
static double ConvertToLength(double interval, int unit, double cellLength)
void SetIntegrator(vtkInitialValueProblemSolver *)
Set/get the integrator type to be used for streamline generation.
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
Specify the source object used to generate starting points (seeds).
std::vector< int > CustomReasonForTermination
static double ConvertToLength(IntervalInformation &interval, double cellLength)
int CheckInputs(vtkAbstractInterpolatedVelocityField *&func, int *maxCellSize)
void ConvertIntervals(double &step, double &minStep, double &maxStep, int direction, double cellLength)
void GenerateNormals(vtkPolyData *output, double *firstNormal, const char *vecName)
static const double EPSILON
vtkIdType MaximumNumberOfSteps
void SetIntegrationDirectionToForward()
Specify whether the streamline is integrated in the upstream or downstream direction.
std::vector< CustomTerminationCallbackType > CustomTerminationCallback
static vtkStreamTracer * New()
Construct object to start from position (0,0,0), with forward integration, terminal speed 1....
bool HasMatchingPointAttributes
vtkCompositeDataSet * InputData
void SetInterpolatorType(int interpType)
Set the type of the velocity field interpolator to determine whether vtkInterpolatedVelocityField (IN...
double MaximumIntegrationStep
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
bool GenerateNormalsInIntegrate
vtkExecutive * CreateDefaultExecutive() override
Create a default executive.
void SetIntegrationDirectionToBackward()
Specify whether the streamline is integrated in the upstream or downstream direction.
void SetInterpolatorTypeToDataSetPointLocator()
Set the velocity field interpolator type to the one involving a dataset point locator.
int GetIntegratorType()
Set/get the integrator type to be used for streamline generation.
void AddCustomTerminationCallback(CustomTerminationCallbackType callback, void *clientdata, int reasonForTermination)
Adds a custom termination callback.
void InitializeSeeds(vtkDataArray *&seeds, vtkIdList *&seedIds, vtkIntArray *&integrationDirections, vtkDataSet *source)
void SetIntegratorTypeToRungeKutta2()
Set/get the integrator type to be used for streamline generation.
void SetIntegrationDirectionToBoth()
Specify whether the streamline is integrated in the upstream or downstream direction.
double SimpleIntegrate(double seed[3], double lastPoint[3], double stepSize, vtkAbstractInterpolatedVelocityField *func)
~vtkStreamTracer() override
void AddInput(vtkDataObject *)
vtkInitialValueProblemSolver * Integrator
void SetInterpolatorPrototype(vtkAbstractInterpolatedVelocityField *ivf)
The object used to interpolate the velocity field during integration is of the same class as this pro...
void SetIntegrationStepUnit(int unit)
Specify a uniform integration step unit for MinimumIntegrationStep, InitialIntegrationStep,...
void SetIntegratorType(int type)
Set/get the integrator type to be used for streamline generation.
int GetIntegrationStepUnit()
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)