54 #ifndef vtkLagrangianBasicIntegrationModel_h 55 #define vtkLagrangianBasicIntegrationModel_h 57 #include "vtkFiltersFlowPathsModule.h" 72 class vtkDataSetsType;
79 class vtkLocatorsType;
94 SURFACE_TYPE_MODEL = 0,
95 SURFACE_TYPE_TERM = 1,
96 SURFACE_TYPE_BOUNCE = 2,
97 SURFACE_TYPE_BREAK = 3,
103 VARIABLE_STEP_PREV = -1,
104 VARIABLE_STEP_CURRENT = 0,
105 VARIABLE_STEP_NEXT = 1,
134 vtkGetMacro(LocatorsBuilt,
bool);
135 vtkSetMacro(LocatorsBuilt,
bool);
153 virtual void AddDataSet(
vtkDataSet* dataset,
bool surface =
false,
154 unsigned int surfaceFlatIndex = 0);
155 virtual void ClearDataSets(
bool surface =
false);
162 vtkSetMacro(UseInitialIntegrationTime,
bool);
163 vtkGetMacro(UseInitialIntegrationTime,
bool);
164 vtkBooleanMacro(UseInitialIntegrationTime,
bool);
178 vtkGetMacro(Tolerance,
double);
199 std::queue<vtkLagrangianParticle*>& particles,
200 unsigned int& interactedSurfaceFlatIndex, PassThroughParticlesType& passThroughParticles);
207 virtual void SetInputArrayToProcess(
int idx,
int port,
int connection,
208 int fieldAssociation,
const char*
name);
221 virtual bool FindInLocators(
double* x);
232 vtkPointData* vtkNotUsed(particleData),
int vtkNotUsed(maxTuples) = 0) {}
240 vtkPointData* vtkNotUsed(particleData),
int vtkNotUsed(stepEnum)) {}
288 vtkSetMacro(NonPlanarQuadSupport,
bool);
289 vtkGetMacro(NonPlanarQuadSupport,
bool);
290 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
346 vtkGetMacro(WeightsSize,
int);
371 virtual bool ManualIntegration(
double* xcur,
double* xnext,
372 double t,
double& delT,
double& delTActual,
373 double minStep,
double maxStep,
374 double maxError,
double& error,
int& integrationResult);
394 virtual void PreIntegrate(std::queue<vtkLagrangianParticle*>& vtkNotUsed(particles)){}
411 double * x,
double * f) = 0;
456 virtual bool IntersectWithLine(
vtkCell* cell,
double p1[3],
double p2[3],
457 double tol,
double& t,
double x[3]);
463 double interpolationFactor,
bool forceInside =
false);
485 virtual bool GetFlowOrSurfaceData(
int idx,
vtkDataSet* flowDataSet,
486 vtkIdType tupleId,
double* weights,
double*&
data,
int& nComponents);
492 virtual int GetFlowOrSurfaceDataFieldAssociation(
int idx);
502 virtual void ComputeSurfaceDefaultValues(
const char* arrayName,
vtkDataSet* dataset,
503 int nComponent,
double* defaultValues);
virtual void InitializeParticle(vtkLagrangianParticle *vtkNotUsed(particle))
Initialize a particle by setting user variables and perform any user model specific operation...
vtkNew< vtkStringArray > SurfaceArrayEnumValues
vtkAbstractCellLocator * LastLocator
virtual void InsertModelPathData(vtkLagrangianParticle *vtkNotUsed(particle), vtkFieldData *vtkNotUsed(data))
Empty method to be reimplemented if necessary in inherited classes.
represent and manipulate point attribute data
std::vector< std::pair< int, std::string > > enumValues
vtkNew< vtkDoubleArray > SurfaceArrayDefaultValues
vtkAbstractCellLocator * Locator
abstract class to specify dataset behavior
Abstract superclass for all arrays.
vtkLagrangianParticle * CurrentParticle
represent and manipulate cell attribute data
an abstract base class for locators which find cells
a vtkAbstractArray subclass for strings
virtual bool CheckAdaptiveStepReintegration(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
vtkNew< vtkIntArray > SeedArrayTypes
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkNew< vtkIntArray > SurfaceArrayTypes
virtual void InsertVariablesParticleData(vtkLagrangianParticle *vtkNotUsed(particle), vtkPointData *vtkNotUsed(particleData), int vtkNotUsed(stepEnum))
Empty method to be reimplemented if necessary in inherited classes.
vtkWeakPointer< vtkLagrangianParticleTracker > Tracker
virtual int FunctionValues(double *x, double *f)=0
Evaluate functions at x_j.
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...
std::queue< PassThroughParticlesItem > PassThroughParticlesType
provides thread-safe access to cells
dynamic, self-adjusting array of double
bool NonPlanarQuadSupport
abstract class to specify cell behavior
dynamic, self-adjusting array of int
virtual void ParallelManualShift(vtkLagrangianParticle *vtkNotUsed(particle))
Method called by parallel algorithm after receiving a particle from stream if PManualShift flag has b...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void InitializeModelPathData(vtkFieldData *vtkNotUsed(data))
Empty method to be reimplemented if necessary in inherited classes.
vtkNew< vtkIntArray > SeedArrayComps
a simple class to control print indentation
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator...
abstract superclass for arrays of numeric data
virtual void InitializeVariablesParticleData(vtkPointData *vtkNotUsed(particleData), int vtkNotUsed(maxTuples)=0)
Empty method to be reimplemented if necessary in inherited classes.
vtkLocatorsType * SurfaceLocators
vtkLocatorsType * Locators
Abstract interface for sets of functions.
Basis class for Lagrangian particles.
virtual bool CheckFreeFlightTermination(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
vtkNew< vtkIntArray > SurfaceArrayComps
vtkNew< vtkStringArray > SeedArrayNames
vtkLagrangianParticle * TmpParticle
vtkDataSetsType * DataSets
vtkNew< vtkStringArray > SurfaceArrayNames
std::map< std::string, SurfaceArrayDescription > SurfaceArrayDescriptions
vtkSurfaceType * Surfaces
virtual void PreIntegrate(std::queue< vtkLagrangianParticle * > &vtkNotUsed(particles))
Enable model to modify particle before integration.
std::pair< ArrayVal, std::string > ArrayMapVal
general representation of visualization data
Filter to inject and track particles in a flow.
std::pair< unsigned int, vtkLagrangianParticle * > PassThroughParticlesItem
std::map< int, ArrayMapVal > InputArrays
represent and manipulate fields of data
bool UseInitialIntegrationTime