54 #ifndef vtkLagrangianBasicIntegrationModel_h 55 #define vtkLagrangianBasicIntegrationModel_h 57 #include "vtkFiltersFlowPathsModule.h" 73 class vtkDataSetsType;
81 class vtkLocatorsType;
98 SURFACE_TYPE_MODEL = 0,
99 SURFACE_TYPE_TERM = 1,
100 SURFACE_TYPE_BOUNCE = 2,
101 SURFACE_TYPE_BREAK = 3,
102 SURFACE_TYPE_PASS = 4
107 VARIABLE_STEP_PREV = -1,
108 VARIABLE_STEP_CURRENT = 0,
109 VARIABLE_STEP_NEXT = 1,
115 using Superclass::FunctionValues;
123 int FunctionValues(
double* x,
double* f,
void* userData)
override;
140 vtkGetMacro(LocatorsBuilt,
bool);
141 vtkSetMacro(LocatorsBuilt,
bool);
159 virtual void AddDataSet(
160 vtkDataSet* dataset,
bool surface =
false,
unsigned int surfaceFlatIndex = 0);
161 virtual void ClearDataSets(
bool surface =
false);
168 vtkSetMacro(UseInitialIntegrationTime,
bool);
169 vtkGetMacro(UseInitialIntegrationTime,
bool);
170 vtkBooleanMacro(UseInitialIntegrationTime,
bool);
177 vtkGetMacro(Tolerance,
double);
198 std::queue<vtkLagrangianParticle*>& particles,
unsigned int& interactedSurfaceFlatIndex,
206 virtual void SetInputArrayToProcess(
207 int idx,
int port,
int connection,
int fieldAssociation,
const char*
name);
226 virtual bool FindInLocators(
267 vtkSetMacro(NonPlanarQuadSupport,
bool);
268 vtkGetMacro(NonPlanarQuadSupport,
bool);
269 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
325 virtual int GetWeightsSize();
352 double* xnext,
double t,
double& delT,
double& delTActual,
double minStep,
double maxStep,
353 double maxError,
double cellLength,
double& error,
int& integrationResult,
389 virtual void PreIntegrate(std::queue<vtkLagrangianParticle*>& vtkNotUsed(particles)) {}
404 vtkSetMacro(NumberOfTrackedUserData,
int);
405 vtkGetMacro(NumberOfTrackedUserData,
int);
426 virtual void InitializeParticleData(
vtkFieldData* particleData,
int maxTuples = 0);
448 virtual void InsertParticleData(
476 double* weights,
double* x,
double* f) = 0;
499 virtual bool BounceParticle(
510 std::queue<vtkLagrangianParticle*>& particles);
531 double p2[3],
double tol,
double& t,
double x[3]);
537 virtual void InterpolateNextParticleVariables(
545 virtual bool CheckSurfacePerforation(
573 virtual int GetFlowOrSurfaceDataNumberOfComponents(
int idx,
vtkDataSet* dataSet);
580 virtual int GetFlowOrSurfaceDataFieldAssociation(
int idx);
590 virtual void ComputeSurfaceDefaultValues(
591 const char* arrayName,
vtkDataSet* dataset,
int nComponent,
double* defaultValues);
620 int NumberOfTrackedUserData = 0;
virtual void ParticleAboutToBeDeleted(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
virtual void InitializeParticle(vtkLagrangianParticle *vtkNotUsed(particle))
Initialize a particle by setting user variables and perform any user model specific operation...
vtkNew< vtkStringArray > SurfaceArrayEnumValues
std::queue< PassThroughParticlesItem > PassThroughParticlesType
std::pair< unsigned int, vtkLagrangianParticle * > PassThroughParticlesItem
std::vector< std::pair< int, std::string > > enumValues
represent and manipulate point attribute data
vtkNew< vtkDoubleArray > SurfaceArrayDefaultValues
vtkAbstractCellLocator * Locator
abstract class to specify dataset behavior
Abstract superclass for all arrays.
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
struct to hold a user data
concrete dataset represents vertices, lines, polygons, and triangle strips
std::mutex ParticleQueueMutex
vtkNew< vtkIntArray > SurfaceArrayTypes
vtkWeakPointer< vtkLagrangianParticleTracker > Tracker
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...
provides thread-safe access to cells
dynamic, self-adjusting array of double
bool NonPlanarQuadSupport
virtual void PreIntegrate(std::queue< vtkLagrangianParticle *> &vtkNotUsed(particles))
Enable model to modify particle before integration.
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.
vtkNew< vtkIntArray > SeedArrayComps
a simple class to control print indentation
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator...
composite dataset to encapsulates pieces of dataset.
abstract superclass for arrays of numeric data
vtkLocatorsType * SurfaceLocators
vtkLocatorsType * Locators
Abstract interface for sets of functions.
Basis class for Lagrangian particles.
virtual int FunctionValues(double *x, double *f)
Evaluate functions at x_j.
virtual bool CheckFreeFlightTermination(vtkLagrangianParticle *vtkNotUsed(particle))
Method to be reimplemented if needed in inherited classes.
vtkNew< vtkIntArray > SurfaceArrayComps
vtkNew< vtkStringArray > SeedArrayNames
vtkDataSetsType * DataSets
vtkNew< vtkStringArray > SurfaceArrayNames
std::map< std::string, SurfaceArrayDescription > SurfaceArrayDescriptions
vtkSurfaceType * Surfaces
Composite dataset that organizes datasets into blocks.
std::vector< double > SharedWeights
virtual void FinalizeThreadedData(vtkLagrangianThreadedData *vtkNotUsed(data))
Let the model finalize and deallocate a user data at thread level This method is called serially for ...
virtual void InitializeThreadedData(vtkLagrangianThreadedData *vtkNotUsed(data))
Let the model allocate and initialize a threaded data.
std::pair< ArrayVal, std::string > ArrayMapVal
general representation of visualization data
Filter to inject and track particles in a flow.
std::map< int, ArrayMapVal > InputArrays
represent and manipulate fields of data
bool UseInitialIntegrationTime
Integrate a set of ordinary differential equations (initial value problem) in time.