42 #ifndef vtkLagrangianBasicIntegrationModel_h
43 #define vtkLagrangianBasicIntegrationModel_h
45 #include "vtkFiltersFlowPathsModule.h"
54 VTK_ABI_NAMESPACE_BEGIN
62 class vtkDataSetsType;
70 class vtkLocatorsType;
87 SURFACE_TYPE_MODEL = 0,
88 SURFACE_TYPE_TERM = 1,
89 SURFACE_TYPE_BOUNCE = 2,
90 SURFACE_TYPE_BREAK = 3,
96 VARIABLE_STEP_PREV = -1,
97 VARIABLE_STEP_CURRENT = 0,
98 VARIABLE_STEP_NEXT = 1,
104 using Superclass::FunctionValues;
112 int FunctionValues(
double* x,
double* f,
void* userData)
override;
129 vtkGetMacro(LocatorsBuilt,
bool);
130 vtkSetMacro(LocatorsBuilt,
bool);
148 virtual void AddDataSet(
149 vtkDataSet* dataset,
bool surface =
false,
unsigned int surfaceFlatIndex = 0);
150 virtual void ClearDataSets(
bool surface =
false);
157 vtkSetMacro(UseInitialIntegrationTime,
bool);
158 vtkGetMacro(UseInitialIntegrationTime,
bool);
159 vtkBooleanMacro(UseInitialIntegrationTime,
bool);
166 vtkGetMacro(Tolerance,
double);
173 vtkGetMacro(LocatorTolerance,
double);
194 std::queue<vtkLagrangianParticle*>& particles,
unsigned int& interactedSurfaceFlatIndex,
195 PassThroughParticlesType& passThroughParticles);
202 virtual void SetInputArrayToProcess(
203 int idx,
int port,
int connection,
int fieldAssociation,
const char*
name);
222 virtual bool FindInLocators(
263 vtkSetMacro(NonPlanarQuadSupport,
bool);
264 vtkGetMacro(NonPlanarQuadSupport,
bool);
265 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
321 virtual int GetWeightsSize();
348 double* xnext,
double t,
double& delT,
double& delTActual,
double minStep,
double maxStep,
349 double maxError,
double cellLength,
double& error,
int& integrationResult,
390 virtual void PreIntegrate(std::queue<vtkLagrangianParticle*>& vtkNotUsed(particles)) {}
405 vtkSetMacro(NumberOfTrackedUserData,
int);
406 vtkGetMacro(NumberOfTrackedUserData,
int);
427 virtual void InitializeParticleData(
vtkFieldData* particleData,
int maxTuples = 0);
449 virtual void InsertParticleData(
486 double* weights,
double* x,
double* f) = 0;
509 virtual bool BounceParticle(
520 std::queue<vtkLagrangianParticle*>& particles);
541 double p2[3],
double tol,
double& t,
double x[3]);
547 virtual void InterpolateNextParticleVariables(
555 virtual bool CheckSurfacePerforation(
583 virtual int GetFlowOrSurfaceDataNumberOfComponents(
int idx,
vtkDataSet* dataSet);
590 virtual int GetFlowOrSurfaceDataFieldAssociation(
int idx);
600 virtual void ComputeSurfaceDefaultValues(
601 const char* arrayName,
vtkDataSet* dataset,
int nComponent,
double* defaultValues);
628 double LocatorTolerance = 0.001;
631 int NumberOfTrackedUserData = 0;
650 VTK_ABI_NAMESPACE_END
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.