 |
VTK
9.0.1
|
Go to the documentation of this file.
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;
140 vtkGetMacro(LocatorsBuilt,
bool);
141 vtkSetMacro(LocatorsBuilt,
bool);
160 vtkDataSet* dataset,
bool surface =
false,
unsigned int surfaceFlatIndex = 0);
168 vtkSetMacro(UseInitialIntegrationTime,
bool);
169 vtkGetMacro(UseInitialIntegrationTime,
bool);
170 vtkBooleanMacro(UseInitialIntegrationTime,
bool);
177 vtkGetMacro(Tolerance,
double);
198 std::queue<vtkLagrangianParticle*>& particles,
unsigned int& interactedSurfaceFlatIndex,
207 int idx,
int port,
int connection,
int fieldAssociation,
const char*
name);
267 vtkSetMacro(NonPlanarQuadSupport,
bool);
268 vtkGetMacro(NonPlanarQuadSupport,
bool);
269 vtkBooleanMacro(NonPlanarQuadSupport,
bool);
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);
476 double* weights,
double* x,
double* f) = 0;
510 std::queue<vtkLagrangianParticle*>& particles);
531 double p2[3],
double tol,
double& t,
double x[3]);
591 const char* arrayName,
vtkDataSet* dataset,
int nComponent,
double* defaultValues);
611 } SurfaceArrayDescription;
620 int NumberOfTrackedUserData = 0;
virtual vtkIdType FindInLocator(vtkDataSet *dataSet, vtkAbstractCellLocator *locator, double *x, vtkGenericCell *cell, double *weights)
Look in the given dataset and associated locator to see if it contains the point x,...
vtkLocatorsType * SurfaceLocators
virtual bool BounceParticle(vtkLagrangianParticle *particle, vtkDataSet *surface, vtkIdType cellId)
Bounce a particle, using the normal of the cell it bounces on.
Filter to inject and track particles in a flow.
virtual void InterpolateNextParticleVariables(vtkLagrangianParticle *particle, double interpolationFactor, bool forceInside=false)
compute all particle variables using interpolation factor This method is thread-safe.
vtkNew< vtkIntArray > SeedArrayComps
Abstract interface for sets of functions.
virtual vtkAbstractArray * GetSeedArray(int idx, vtkLagrangianParticle *particle)
Get a seed array, as set in setInputArrayToProcess from the provided particle seed data Access then t...
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator.
composite dataset to encapsulates pieces of dataset.
virtual vtkStringArray * GetSeedArrayNames()
Get the seed arrays expected name Used Only be the vtkLagrangianSeedHelper in ParaView plugins.
virtual void SetLocator(vtkAbstractCellLocator *locator)
Set/Get the locator used to locate cells in the datasets.
vtkLocatorsType * Locators
vtkNew< vtkIntArray > SurfaceArrayComps
represent and manipulate point attribute data
virtual vtkIntArray * GetSeedArrayTypes()
Get the seed arrays expected type Used Only be the vtkLagrangianSeedHelper in ParaView plugins.
virtual vtkDoubleArray * GetSurfaceArrayDefaultValues()
Get the surface arrays default values for each leaf Used Only be the vtkLagrangianSurfaceHelper in Pa...
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 GetWeightsSize()
Get the maximum weights size necessary for calling FindInLocators with weights.
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, const char *name)
Set a input array to process at a specific index, identified by a port, connection,...
virtual void InitializeInteractionData(vtkFieldData *data)
Method used by the LPT to initialize data insertion in the provided vtkFieldData.
virtual vtkIntArray * GetSurfaceArrayTypes()
Get the surface arrays expected type Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
vtkNew< vtkStringArray > SeedArrayNames
~vtkLagrangianBasicIntegrationModel() override
std::vector< double > SharedWeights
virtual vtkIntArray * GetSurfaceArrayComps()
Get the seed array expected number of components Used Only be the vtkLagrangianSurfaceHelper in ParaV...
abstract superclass for arrays of numeric data
virtual bool BreakParticle(vtkLagrangianParticle *particle, vtkDataSet *surface, vtkIdType cellId, std::queue< vtkLagrangianParticle * > &particles)
Breakup a particle at intersection point, by terminating it and creating two new particle using the i...
vtkSurfaceType * Surfaces
virtual void PreIntegrate(std::queue< vtkLagrangianParticle * > &vtkNotUsed(particles))
Enable model to modify particle before integration.
Composite dataset that organizes datasets into blocks.
virtual void InitializeThreadedData(vtkLagrangianThreadedData *vtkNotUsed(data))
Let the model allocate and initialize a threaded data.
virtual vtkLagrangianParticle * ComputeSurfaceInteraction(vtkLagrangianParticle *particle, std::queue< vtkLagrangianParticle * > &particles, unsigned int &interactedSurfaceFlatIndex, PassThroughParticlesType &passThroughParticles)
Interact the current particle with a surfaces Return a particle to record as interaction point if not...
represent and manipulate fields of data
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 vtkStringArray * GetSurfaceArrayNames()
Get the surface arrays expected name Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
virtual int FunctionValues(vtkLagrangianParticle *particle, vtkDataSet *dataSet, vtkIdType cellId, double *weights, double *x, double *f)=0
Actually compute the integration model velocity field pure abstract, to be implemented in inherited c...
bool UseInitialIntegrationTime
virtual bool GetFlowOrSurfaceData(vtkLagrangianParticle *particle, int idx, vtkDataSet *flowDataSet, vtkIdType tupleId, double *weights, double *data)
Directly get a double value from flow or surface data as defined in SetInputArrayToProcess.
virtual int GetFlowOrSurfaceDataFieldAssociation(int idx)
Recover a field association for a specified array index if it has been set using SetInputArrayToProce...
std::pair< ArrayVal, std::string > ArrayMapVal
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.
virtual bool FindInLocators(double *x, vtkLagrangianParticle *particle, vtkDataSet *&dataset, vtkIdType &cellId)
Convienience methods to call FindInLocators with less arguments THESE METHODS ARE NOT THREAD-SAFE.
std::queue< PassThroughParticlesItem > PassThroughParticlesType
virtual void SetTracker(vtkLagrangianParticleTracker *Tracker)
Set the parent tracker.
abstract class to specify cell behavior
std::map< int, ArrayMapVal > InputArrays
represent and manipulate cell attribute data
a simple class to control print indentation
dynamic, self-adjusting array of int
struct to hold a user data
vtkLagrangianBasicIntegrationModel()
virtual void InsertPathData(vtkLagrangianParticle *particle, vtkFieldData *data)
Method used by the LPT to insert data from the partice into the provided vtkFieldData.
vtkNew< vtkStringArray > SurfaceArrayEnumValues
int FunctionValues(double *x, double *f, void *userData) override
Evaluate integration model velocity f at position x.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual vtkStringArray * GetSurfaceArrayEnumValues()
Get the surface arrays expected values and associated enums Used Only be the vtkLagrangianSurfaceHelp...
std::pair< unsigned int, vtkLagrangianParticle * > PassThroughParticlesItem
virtual bool ManualIntegration(vtkInitialValueProblemSolver *integrator, double *xcur, double *xnext, double t, double &delT, double &delTActual, double minStep, double maxStep, double maxError, double cellLength, double &error, int &integrationResult, vtkLagrangianParticle *particle)
Let the model define it's own way to integrate Signature is very close to the integrator method signa...
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.
virtual bool FindInLocators(double *x, vtkLagrangianParticle *particle)
std::mutex ParticleQueueMutex
virtual vtkIntArray * GetSeedArrayComps()
Get the seed arrays expected number of components Used Only be the vtkLagrangianSeedHelper in ParaVie...
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...
virtual void ComputeSurfaceDefaultValues(const char *arrayName, vtkDataSet *dataset, int nComponent, double *defaultValues)
Method used by ParaView surface helper to get default values for each leaf of each dataset of surface...
concrete dataset represents vertices, lines, polygons, and triangle strips
virtual void InsertParticleData(vtkLagrangianParticle *particle, vtkFieldData *data, int stepEnum)
Method used by the LPT to insert data from the partice into the provided vtkFieldData.
provides thread-safe access to cells
vtkNew< vtkIntArray > SeedArrayTypes
virtual void InitializeParticleData(vtkFieldData *particleData, int maxTuples=0)
Method used by the LPT to initialize data insertion in the provided vtkFieldData.
a vtkAbstractArray subclass for strings
virtual bool TerminateParticle(vtkLagrangianParticle *particle)
Terminate a particle, by positioning flags.
virtual void ClearDataSets(bool surface=false)
dynamic, self-adjusting array of double
bool NonPlanarQuadSupport
virtual void InitializePathData(vtkFieldData *data)
Method used by the LPT to initialize data insertion in the provided vtkFieldData.
vtkNew< vtkIntArray > SurfaceArrayTypes
vtkWeakPointer< vtkLagrangianParticleTracker > Tracker
Integrate a set of ordinary differential equations (initial value problem) in time.
general representation of visualization data
virtual void AddDataSet(vtkDataSet *dataset, bool surface=false, unsigned int surfaceFlatIndex=0)
Add a dataset to locate cells in This create a specific locator for the provided dataset using the Lo...
virtual bool InteractWithSurface(int surfaceType, vtkLagrangianParticle *particle, vtkDataSet *surface, vtkIdType cellId, std::queue< vtkLagrangianParticle * > &particles)
Call vtkLagrangianBasicIntegrationModel::Terminate This method is to be reimplemented in inherited cl...
virtual bool CheckSurfacePerforation(vtkLagrangianParticle *particle, vtkDataSet *surface, vtkIdType cellId)
Given a particle, check if it perforate a surface cell ie : interact with next step after interacting...
virtual void InsertInteractionData(vtkLagrangianParticle *particle, vtkFieldData *data)
Method used by the LPT to insert data from the partice into the provided vtkFieldData.
std::vector< std::pair< int, std::string > > enumValues
virtual void InsertParticleSeedData(vtkLagrangianParticle *particle, vtkFieldData *data)
Method used by the LPT to insert data from the partice into the provided vtkFieldData.
virtual bool IntersectWithLine(vtkLagrangianParticle *particle, vtkCell *cell, double p1[3], double p2[3], double tol, double &t, double x[3])
Call vtkCell::IntersectWithLine This method is to be reimplemented in inherited classes willing to im...
virtual bool FindInLocators(double *x, vtkLagrangianParticle *particle, vtkDataSet *&dataset, vtkIdType &cellId, vtkAbstractCellLocator *&loc, double *&weights)
Look for a dataset in this integration model containing the point x.
virtual vtkAbstractArray * GetSeedArray(int idx, vtkPointData *pointData)
Get a seed array, as set in setInputArrayToProcess from the provided seed point data.
virtual int GetFlowOrSurfaceDataNumberOfComponents(int idx, vtkDataSet *dataSet)
Recover the number of components for a specified array index if it has been set using SetInputArrayTo...
virtual void ParallelManualShift(vtkLagrangianParticle *vtkNotUsed(particle))
Method called by parallel algorithm after receiving a particle from stream if PManualShift flag has b...