90#ifndef vtkEvenlySpacedStreamlines2D_h
91#define vtkEvenlySpacedStreamlines2D_h
93#include "vtkFiltersFlowPathsModule.h"
135 vtkSetVector3Macro(StartPosition,
double);
136 vtkGetVector3Macro(StartPosition,
double);
203 vtkSetMacro(InitialIntegrationStep,
double);
204 vtkGetMacro(InitialIntegrationStep,
double);
212 vtkSetMacro(SeparatingDistance,
double);
213 vtkGetMacro(SeparatingDistance,
double);
221 vtkSetMacro(SeparatingDistanceRatio,
double);
222 vtkGetMacro(SeparatingDistanceRatio,
double);
230 vtkSetMacro(ClosedLoopMaximumDistance,
double);
231 vtkGetMacro(ClosedLoopMaximumDistance,
double);
240 vtkSetMacro(LoopAngle,
double);
241 vtkGetMacro(LoopAngle,
double);
248 vtkSetMacro(TerminalSpeed,
double);
249 vtkGetMacro(TerminalSpeed,
double);
258 vtkSetMacro(ComputeVorticity,
bool);
259 vtkGetMacro(ComputeVorticity,
bool);
294 vtkErrorMacro(<<
"AddInput() must be called with a vtkDataSet not a vtkDataObject.");
308 template <
typename T>
316 template <
typename CellCheckerType>
319 template <
int distanceType>
328 double StartPosition[3];
365 std::vector<std::vector<std::array<double, 3>>>
AllPoints;
An abstract class for obtaining the interpolated velocity values at a point.
abstract superclass for composite (multi-block or AMR) datasets
abstract superclass for arrays of numeric data
general representation of visualization data
dynamic, self-adjusting array of double
Evenly spaced streamline generator for 2D.
double ConvertToLength(double interval, int unit, double cellLength)
void SetIntegrator(vtkInitialValueProblemSolver *)
Set/get the integrator type to be used for streamline generation.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
void SetIntegrationStepUnit(int unit)
Specify a uniform integration step unit for InitialIntegrationStep, and SeparatingDistance.
std::vector< std::vector< std::array< double, 3 > > > AllPoints
vtkIdType MinimumNumberOfLoopPoints
int GetIntegratorType()
Set/get the integrator type to be used for streamline generation.
vtkPolyDataCollection * Streamlines
vtkInitialValueProblemSolver * Integrator
std::vector< vtkIdType > MinPointIds
static vtkEvenlySpacedStreamlines2D * New()
Construct object to start from position (0,0,0), with forward integration, terminal speed 1....
double SeparatingDistance
void SetInterpolatorType(int interpType)
Set the type of the velocity field interpolator to determine whether vtkInterpolatedVelocityField (IN...
static bool IsStreamlineTooCloseToOthers(void *clientdata, vtkPoints *points, vtkDataArray *velocity, int direction)
~vtkEvenlySpacedStreamlines2D() override
vtkCompositeDataSet * InputData
double SeparatingDistanceArcLength
void SetInterpolatorTypeToCellLocator()
Set the velocity field interpolator type to the one involving a cell locator.
DistanceType
Do we test for separating distance or a ratio of the separating distance.
void InitializePoints(T &points)
void InitializeMinPointIds()
void AddInput(vtkDataObject *)
void SetIntegratorTypeToRungeKutta4()
Set/get the integrator type to be used for streamline generation.
void AddToCurrentPoints(vtkIdType pointId)
double SeparatingDistanceRatio
void AddToAllPoints(vtkPolyData *streamline)
int SetupOutput(vtkInformation *inInfo, vtkInformation *outInfo)
void InitializeSuperposedGrid(double *bounds)
int ComputeCellLength(double *cellLength)
void SetInterpolatorPrototype(vtkAbstractInterpolatedVelocityField *ivf)
The object used to interpolate the velocity field during integration is of the same class as this pro...
const char * GetInputArrayToProcessName()
vtkImageData * SuperposedGrid
vtkIdType MaximumNumberOfSteps
double ClosedLoopMaximumDistance
int CheckInputs(vtkAbstractInterpolatedVelocityField *&func, int *maxCellSize)
double ClosedLoopMaximumDistanceArcLength
bool IsTooClose(double *point, vtkIdType cellId, vtkPoints *points, vtkDataArray *velocity, int direction)
void SetIntegratorType(int type)
Set/get the integrator type to be used for streamline generation.
void SetIntegratorTypeToRungeKutta2()
Set/get the integrator type to be used for streamline generation.
void SetInterpolatorTypeToDataSetPointLocator()
Set the velocity field interpolator type to the one involving a dataset point locator.
bool IsLooping(double *point, vtkIdType cellId, vtkPoints *points, vtkDataArray *velocity, int direction)
bool ForEachCell(double *point, CellCheckerType checker, vtkPoints *points=nullptr, vtkDataArray *velocity=nullptr, int direction=1)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkAbstractInterpolatedVelocityField * InterpolatorPrototype
static void GetBounds(vtkCompositeDataSet *cds, double bounds[6])
vtkEvenlySpacedStreamlines2D()
static bool IsStreamlineLooping(void *clientdata, vtkPoints *points, vtkDataArray *velocity, int direction)
vtkIdType MinimumNumberOfStreamlinePoints
std::vector< std::vector< vtkIdType > > CurrentPoints
int GetIntegrationStepUnit()
double InitialIntegrationStep
Superclass for all pipeline executives in VTK.
provides thread-safe access to cells
list of point or cell ids
topologically and geometrically regular array of data
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 3D points
Superclass for algorithms that produce only polydata as output.
maintain a list of polygonal data objects
concrete dataset represents vertices, lines, polygons, and triangle strips