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);
184 vtkGetMacro(LocatorTolerance,
double);
205 std::queue<vtkLagrangianParticle*>& particles,
unsigned int& interactedSurfaceFlatIndex,
206 PassThroughParticlesType& passThroughParticles);
213 virtual void SetInputArrayToProcess(
214 int idx,
int port,
int connection,
int fieldAssociation,
const char*
name);
233 virtual bool FindInLocators(
274 vtkSetMacro(NonPlanarQuadSupport,
bool);
275 vtkGetMacro(NonPlanarQuadSupport,
bool);
276 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
332 virtual int GetWeightsSize();
359 double* xnext,
double t,
double& delT,
double& delTActual,
double minStep,
double maxStep,
360 double maxError,
double cellLength,
double& error,
int& integrationResult,
401 virtual void PreIntegrate(std::queue<vtkLagrangianParticle*>& vtkNotUsed(particles)) {}
416 vtkSetMacro(NumberOfTrackedUserData,
int);
417 vtkGetMacro(NumberOfTrackedUserData,
int);
438 virtual void InitializeParticleData(
vtkFieldData* particleData,
int maxTuples = 0);
460 virtual void InsertParticleData(
497 double* weights,
double* x,
double* f) = 0;
520 virtual bool BounceParticle(
531 std::queue<vtkLagrangianParticle*>& particles);
552 double p2[3],
double tol,
double& t,
double x[3]);
558 virtual void InterpolateNextParticleVariables(
566 virtual bool CheckSurfacePerforation(
594 virtual int GetFlowOrSurfaceDataNumberOfComponents(
int idx,
vtkDataSet* dataSet);
601 virtual int GetFlowOrSurfaceDataFieldAssociation(
int idx);
611 virtual void ComputeSurfaceDefaultValues(
612 const char* arrayName,
vtkDataSet* dataset,
int nComponent,
double* defaultValues);
639 double LocatorTolerance = 0.001;
642 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.
virtual void PreParticleInitalization()
Allow for model setup prior to Particle Initalization.
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 InsertSurfaceInteractionData(vtkLagrangianParticle *vtkNotUsed(particle), vtkPointData *vtkNotUsed(particleData))
Method to be reimplemented if needed in inherited classes.
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
virtual void PreIntegrate(std::queue< vtkLagrangianParticle * > &vtkNotUsed(particles))
Enable model to modify particle before integration.
Composite dataset that organizes datasets into blocks.
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.