203 #ifndef vtkStreamTracer_h
204 #define vtkStreamTracer_h
206 #include "vtkFiltersFlowPathsModule.h"
274 vtkSetVector3Macro(StartPosition,
double);
275 vtkGetVector3Macro(StartPosition,
double);
328 FIXED_REASONS_FOR_TERMINATION_COUNT
374 vtkSetMacro(MaximumPropagation,
double);
375 vtkGetMacro(MaximumPropagation,
double);
395 vtkSetMacro(InitialIntegrationStep,
double);
396 vtkGetMacro(InitialIntegrationStep,
double);
406 vtkSetMacro(MinimumIntegrationStep,
double);
407 vtkGetMacro(MinimumIntegrationStep,
double);
417 vtkSetMacro(MaximumIntegrationStep,
double);
418 vtkGetMacro(MaximumIntegrationStep,
double);
425 vtkSetMacro(MaximumError,
double);
426 vtkGetMacro(MaximumError,
double);
447 vtkSetMacro(TerminalSpeed,
double);
448 vtkGetMacro(TerminalSpeed,
double);
455 vtkGetMacro(SurfaceStreamlines,
bool);
456 vtkSetMacro(SurfaceStreamlines,
bool);
457 vtkBooleanMacro(SurfaceStreamlines,
bool);
470 INTERPOLATOR_WITH_CELL_LOCATOR
481 vtkSetClampMacro(IntegrationDirection,
int, FORWARD, BOTH);
482 vtkGetMacro(IntegrationDirection,
int);
494 vtkSetMacro(ComputeVorticity,
bool);
495 vtkGetMacro(ComputeVorticity,
bool);
503 vtkSetMacro(RotationScale,
double);
504 vtkGetMacro(RotationScale,
double);
534 vtkGetMacro(ForceSerialExecution,
bool);
535 vtkSetMacro(ForceSerialExecution,
bool);
536 vtkBooleanMacro(ForceSerialExecution,
bool);
559 double& step,
double& minStep,
double& maxStep,
int direction,
double cellLength);
582 vtkSetMacro(UseLocalSeedSource,
bool);
583 vtkGetMacro(UseLocalSeedSource,
bool);
584 vtkBooleanMacro(UseLocalSeedSource,
bool);
597 vtkErrorMacro(<<
"AddInput() must be called with a vtkDataSet not a vtkDataObject.");
606 const char* vecFieldName,
double& propagation,
vtkIdType& numSteps,
double& integrationTime,
607 std::vector<CustomTerminationCallbackType>& customTerminationCallback,
608 std::vector<void*>& customTerminationClientData, std::vector<int>& customReasonForTermination);
617 double StartPosition[3];
673 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
helps manage arrays from multiple vtkDataSetAttributes.
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
vtkDataSetAttributesFieldList InputPD
void SetSourceData(vtkDataSet *source)
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 one that uses a cell locator to perform spatial searching...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to obtain type information and print object state.
void CalculateVorticity(vtkGenericCell *cell, double pcoords[3], vtkDoubleArray *cellVectors, double vorticity[3])
Helper methods to generate normals on streamlines.
double MinimumIntegrationStep
@ INTERPOLATOR_WITH_DATASET_POINT_LOCATOR
void SetIntegratorTypeToRungeKutta4()
Set/get the integrator type to be used for streamline generation.
vtkDataSet * GetSource()
Specify the source object used to generate starting points (seeds).
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
int CheckInputs(vtkAbstractInterpolatedVelocityField *&func, int *maxCellSize)
void ConvertIntervals(double &step, double &minStep, double &maxStep, int direction, double cellLength)
The following methods should not be called by the user.
bool ForceSerialExecution
void GenerateNormals(vtkPolyData *output, double *firstNormal, const char *vecName)
Helper methods to generate normals on streamlines.
static const double EPSILON
vtkIdType MaximumNumberOfSteps
void SetIntegrationDirectionToForward()
Specify whether the streamline is integrated in the upstream or downstream direction,...
std::vector< CustomTerminationCallbackType > CustomTerminationCallback
bool HasMatchingPointAttributes
vtkCompositeDataSet * InputData
vtkExecutive * CreateDefaultExecutive() override
Create a default executive.
void SetInterpolatorType(int interpType)
Set the type of the velocity field interpolator to determine whether INTERPOLATOR_WITH_DATASET_POINT_...
double MaximumIntegrationStep
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
bool GenerateNormalsInIntegrate
void Integrate(vtkPointData *inputData, vtkPolyData *output, vtkDataArray *seedSource, vtkIdList *seedIds, vtkIntArray *integrationDirections, vtkAbstractInterpolatedVelocityField *func, int maxCellSize, int vecType, const char *vecFieldName, double &propagation, vtkIdType &numSteps, double &integrationTime, std::vector< CustomTerminationCallbackType > &customTerminationCallback, std::vector< void * > &customTerminationClientData, std::vector< int > &customReasonForTermination)
void SetIntegrationDirectionToBackward()
Specify whether the streamline is integrated in the upstream or downstream direction,...
void SetInterpolatorTypeToDataSetPointLocator()
Set the velocity field interpolator type to one that uses a point locator to perform local spatial se...
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.
static vtkStreamTracer * New()
Construct the object to start from position (0,0,0), with forward integration, terminal speed 1....
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 *)
bool(* CustomTerminationCallbackType)(void *clientdata, vtkPoints *points, vtkDataArray *velocity, int integrationDirection)
Used to specify custom conditions which are evaluated to determine whether a streamline should be ter...