82 #ifndef vtkStreamTracer_h
83 #define vtkStreamTracer_h
86 #include "vtkFiltersFlowPathsModule.h"
92 VTK_ABI_NAMESPACE_BEGIN
105 VTK_ABI_NAMESPACE_END
109 VTK_ABI_NAMESPACE_BEGIN
115 static double ConvertToLength(
double interval,
int unit,
double cellLength);
158 vtkSetVector3Macro(StartPosition,
double);
159 vtkGetVector3Macro(StartPosition,
double);
212 FIXED_REASONS_FOR_TERMINATION_COUNT = 7,
228 void SetIntegratorType(
int type);
229 int GetIntegratorType();
245 void SetInterpolatorTypeToDataSetPointLocator();
254 void SetInterpolatorTypeToCellLocator();
260 vtkSetMacro(MaximumPropagation,
double);
261 vtkGetMacro(MaximumPropagation,
double);
270 void SetIntegrationStepUnit(
int unit);
271 int GetIntegrationStepUnit() {
return this->IntegrationStepUnit; }
281 vtkSetMacro(InitialIntegrationStep,
double);
282 vtkGetMacro(InitialIntegrationStep,
double);
292 vtkSetMacro(MinimumIntegrationStep,
double);
293 vtkGetMacro(MinimumIntegrationStep,
double);
303 vtkSetMacro(MaximumIntegrationStep,
double);
304 vtkGetMacro(MaximumIntegrationStep,
double);
311 vtkSetMacro(MaximumError,
double);
312 vtkGetMacro(MaximumError,
double);
324 vtkSetMacro(MaximumNumberOfSteps,
vtkIdType);
325 vtkGetMacro(MaximumNumberOfSteps,
vtkIdType);
333 vtkSetMacro(TerminalSpeed,
double);
334 vtkGetMacro(TerminalSpeed,
double);
342 vtkGetMacro(SurfaceStreamlines,
bool);
343 vtkSetMacro(SurfaceStreamlines,
bool);
344 vtkBooleanMacro(SurfaceStreamlines,
bool);
357 "Use SetCellLocatorToJumpAndWalkCellLocator() instead"),
359 "Use SetCellLocatorToStaticCellLocator() instead")
370 vtkSetClampMacro(IntegrationDirection,
int, FORWARD, BOTH);
371 vtkGetMacro(IntegrationDirection,
int);
383 vtkSetMacro(ComputeVorticity,
bool);
384 vtkGetMacro(ComputeVorticity,
bool);
392 vtkSetMacro(RotationScale,
double);
393 vtkGetMacro(RotationScale,
double);
418 void SetInterpolatorType(
int interpType);
427 virtual
void SetCellLocatorToStaticCellLocator();
428 virtual
void SetCellLocatorToJumpAndWalkCellLocator();
429 vtkGetObjectMacro(CellLocator, vtkAbstractCellLocator);
437 vtkGetMacro(ForceSerialExecution,
bool);
438 vtkSetMacro(ForceSerialExecution,
bool);
439 vtkBooleanMacro(ForceSerialExecution,
bool);
450 void AddCustomTerminationCallback(
461 void ConvertIntervals(
462 double& step,
double& minStep,
double& maxStep,
int direction,
double cellLength);
469 void GenerateNormals(
vtkPolyData* output,
double* firstNormal, const
char* vecName);
470 void CalculateVorticity(
485 vtkSetMacro(UseLocalSeedSource,
bool);
486 vtkGetMacro(UseLocalSeedSource,
bool);
487 vtkBooleanMacro(UseLocalSeedSource,
bool);
492 ~vtkStreamTracer() override;
500 vtkErrorMacro(<<
"AddInput() must be called with a vtkDataSet not a vtkDataObject.");
509 const char* vecFieldName,
double& propagation,
vtkIdType& numSteps,
double& integrationTime,
510 std::vector<CustomTerminationCallbackType>& customTerminationCallback,
511 std::vector<void*>& customTerminationClientData, std::vector<int>& customReasonForTermination);
513 double SimpleIntegrate(
double seed[3],
double lastPoint[3],
double stepSize,
520 double StartPosition[3];
576 friend class PStreamTracerUtils;
583 VTK_ABI_NAMESPACE_END
void SetIntegrationDirectionToBoth()
Specify whether the streamline is integrated in the upstream or downstream direction, or in both directions.
static const double EPSILON
represent and manipulate point attribute data
abstract class to specify dataset behavior
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
helps manage arrays from multiple vtkDataSetAttributes.
an abstract base class for locators which find cells
An abstract class for obtaining the interpolated velocity values at a point.
bool GenerateNormalsInIntegrate
vtkCompositeDataSet * InputData
concrete dataset represents vertices, lines, polygons, and triangle strips
Superclass for all pipeline executives in VTK.
double MinimumIntegrationStep
provides thread-safe access to cells
vtkIdType MaximumNumberOfSteps
Proxy object to connect input/output ports.
dynamic, self-adjusting array of double
static vtkPolyDataAlgorithm * New()
void SetIntegrationDirectionToForward()
Specify whether the streamline is integrated in the upstream or downstream direction, or in both directions.
std::vector< int > CustomReasonForTermination
dynamic, self-adjusting array of int
abstract superclass for composite (multi-block or AMR) datasets
Superclass for algorithms that produce only polydata as output.
a simple class to control print indentation
list of point or cell ids
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...
vtkInitialValueProblemSolver * Integrator
abstract superclass for arrays of numeric data
void SetIntegratorTypeToRungeKutta4()
Set/get the integrator type to be used for streamline generation.
std::vector< CustomTerminationCallbackType > CustomTerminationCallback
represent and manipulate attribute data in a dataset
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
double MaximumIntegrationStep
void SetIntegratorTypeToRungeKutta2()
Set/get the integrator type to be used for streamline generation.
void SetIntegratorTypeToRungeKutta45()
Set/get the integrator type to be used for streamline generation.
bool ForceSerialExecution
double InitialIntegrationStep
std::vector< void * > CustomTerminationClientData
vtkDataSetAttributesFieldList InputPD
vtkAbstractCellLocator * CellLocator
void SetIntegrationDirectionToBackward()
Specify whether the streamline is integrated in the upstream or downstream direction, or in both directions.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
double MaximumPropagation
bool HasMatchingPointAttributes
general representation of visualization data
#define VTK_DEPRECATED_IN_9_7_0(reason)
represent and manipulate 3D points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Integrate a set of ordinary differential equations (initial value problem) in time.