Go to the documentation of this file.
51 #ifndef vtkLagrangianBasicIntegrationModel_h
52 #define vtkLagrangianBasicIntegrationModel_h
54 #include "vtkFiltersFlowPathsModule.h"
69 class vtkDataSetsType;
76 class vtkLocatorsType;
91 SURFACE_TYPE_MODEL = 0,
92 SURFACE_TYPE_TERM = 1,
93 SURFACE_TYPE_BOUNCE = 2,
94 SURFACE_TYPE_BREAK = 3,
100 VARIABLE_STEP_PREV = -1,
101 VARIABLE_STEP_CURRENT = 0,
102 VARIABLE_STEP_NEXT = 1,
131 vtkGetMacro(LocatorsBuilt,
bool);
132 vtkSetMacro(LocatorsBuilt,
bool);
150 virtual void AddDataSet(
vtkDataSet* dataset,
bool surface =
false,
151 unsigned int surfaceFlatIndex = 0);
152 virtual void ClearDataSets(
bool surface =
false);
159 vtkSetMacro(UseInitialIntegrationTime,
bool);
160 vtkGetMacro(UseInitialIntegrationTime,
bool);
161 vtkBooleanMacro(UseInitialIntegrationTime,
bool);
175 vtkGetMacro(Tolerance,
double);
196 std::queue<vtkLagrangianParticle*>& particles,
204 virtual void SetInputArrayToProcess(
int idx,
int port,
int connection,
205 int fieldAssociation,
const char*
name);
218 virtual bool FindInLocators(
double* x);
229 vtkPointData* vtkNotUsed(particleData),
int vtkNotUsed(maxTuples) = 0) {}
237 vtkPointData* vtkNotUsed(particleData),
int vtkNotUsed(stepEnum)) {}
285 vtkSetMacro(NonPlanarQuadSupport,
bool);
286 vtkGetMacro(NonPlanarQuadSupport,
bool);
287 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
343 vtkGetMacro(WeightsSize,
int);
368 virtual bool ManualIntegration(
double* xcur,
double* xnext,
369 double t,
double& delT,
double& delTActual,
370 double minStep,
double maxStep,
371 double maxError,
double& error,
int& integrationResult);
391 virtual void PreIntegrate(std::queue<vtkLagrangianParticle*>& vtkNotUsed(particles)){}
408 double * x,
double * f) = 0;
453 virtual bool IntersectWithLine(
vtkCell* cell,
double p1[3],
double p2[3],
454 double tol,
double& t,
double x[3]);
460 double interpolationFactor,
bool forceInside =
false);
482 virtual bool GetFlowOrSurfaceData(
int idx,
vtkDataSet* flowDataSet,
483 vtkIdType tupleId,
double* weights,
double*&
data,
int& nComponents);
489 virtual int GetFlowOrSurfaceDataFieldAssociation(
int idx);
499 virtual void ComputeSurfaceDefaultValues(
const char* arrayName,
vtkDataSet* dataset,
500 int nComponent,
double* defaultValues);
vtkLocatorsType * SurfaceLocators
virtual void InitializeVariablesParticleData(vtkPointData *vtkNotUsed(particleData), int vtkNotUsed(maxTuples)=0)
Empty method to be reimplemented if necessary in inherited classes.
std::vector< std::pair< int, std::string > > enumValues
Filter to inject and track particles in a flow.
virtual void InitializeModelPathData(vtkFieldData *vtkNotUsed(data))
Empty method to be reimplemented if necessary in inherited classes.
vtkNew< vtkIntArray > SeedArrayComps
Abstract interface for sets of functions.
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator.
vtkLocatorsType * Locators
vtkNew< vtkIntArray > SurfaceArrayComps
represent and manipulate point attribute data
vtkDataSetsType * DataSets
virtual bool CheckFreeFlightTermination(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
vtkNew< vtkStringArray > SurfaceArrayNames
std::map< std::string, SurfaceArrayDescription > SurfaceArrayDescriptions
virtual int FunctionValues(double *x, double *f)=0
Evaluate functions at x_j.
vtkNew< vtkStringArray > SeedArrayNames
vtkLagrangianParticle * TmpParticle
abstract superclass for arrays of numeric data
vtkSurfaceType * Surfaces
virtual void PreIntegrate(std::queue< vtkLagrangianParticle * > &vtkNotUsed(particles))
Enable model to modify particle before integration.
represent and manipulate fields of data
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool UseInitialIntegrationTime
std::pair< ArrayVal, std::string > ArrayMapVal
virtual void InitializeParticle(vtkLagrangianParticle *vtkNotUsed(particle))
Initialize a particle by setting user variables and perform any user model specific operation.
std::pair< unsigned int, vtkLagrangianParticle * > PassThroughParticlesItem
abstract class to specify cell behavior
virtual void InsertModelPathData(vtkLagrangianParticle *vtkNotUsed(particle), vtkFieldData *vtkNotUsed(data))
Empty method to be reimplemented if necessary in inherited classes.
std::map< int, ArrayMapVal > InputArrays
represent and manipulate cell attribute data
a simple class to control print indentation
dynamic, self-adjusting array of int
vtkNew< vtkStringArray > SurfaceArrayEnumValues
vtkAbstractCellLocator * LastLocator
an abstract base class for locators which find cells
Basis class for Lagrangian particles.
vtkNew< vtkDoubleArray > SurfaceArrayDefaultValues
vtkAbstractCellLocator * Locator
abstract class to specify dataset behavior
Abstract superclass for all arrays.
virtual bool CheckAdaptiveStepReintegration(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
vtkLagrangianParticle * CurrentParticle
virtual bool FinalizeOutputs(vtkPolyData *vtkNotUsed(particlePathsOutput), vtkDataObject *vtkNotUsed(interractionOutput))
Enable model post process on output Return true if successful, false otherwise Empty and Always retur...
concrete dataset represents vertices, lines, polygons, and triangle strips
provides thread-safe access to cells
vtkNew< vtkIntArray > SeedArrayTypes
a vtkAbstractArray subclass for strings
dynamic, self-adjusting array of double
bool NonPlanarQuadSupport
vtkNew< vtkIntArray > SurfaceArrayTypes
vtkWeakPointer< vtkLagrangianParticleTracker > Tracker
virtual void InsertVariablesParticleData(vtkLagrangianParticle *vtkNotUsed(particle), vtkPointData *vtkNotUsed(particleData), int vtkNotUsed(stepEnum))
Empty method to be reimplemented if necessary in inherited classes.
std::queue< PassThroughParticlesItem > PassThroughParticlesType
general representation of visualization data
virtual void ParallelManualShift(vtkLagrangianParticle *vtkNotUsed(particle))
Method called by parallel algorithm after receiving a particle from stream if PManualShift flag has b...