VTK  9.1.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
vtkLagrangianBasicIntegrationModel Class Referenceabstract

vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator. More...

#include <vtkLagrangianBasicIntegrationModel.h>

Inheritance diagram for vtkLagrangianBasicIntegrationModel:
[legend]
Collaboration diagram for vtkLagrangianBasicIntegrationModel:
[legend]

Classes

struct  ArrayVal
 
struct  SurfaceArrayDescription
 

Public Types

enum  SurfaceType {
  SURFACE_TYPE_MODEL = 0 , SURFACE_TYPE_TERM = 1 , SURFACE_TYPE_BOUNCE = 2 , SURFACE_TYPE_BREAK = 3 ,
  SURFACE_TYPE_PASS = 4
}
 
enum  VariableStep { VARIABLE_STEP_PREV = -1 , VARIABLE_STEP_CURRENT = 0 , VARIABLE_STEP_NEXT = 1 }
 
typedef vtkFunctionSet Superclass
 
typedef enum vtkLagrangianBasicIntegrationModel::SurfaceType SurfaceType
 
typedef enum vtkLagrangianBasicIntegrationModel::VariableStep VariableStep
 
typedef std::pair< unsigned int, vtkLagrangianParticle * > PassThroughParticlesItem
 
typedef std::queue< PassThroughParticlesItemPassThroughParticlesType
 
- Public Types inherited from vtkFunctionSet
typedef vtkObject Superclass
 

Public Member Functions

virtual vtkTypeBool IsA (const char *type)
 Return 1 if this class is the same type of (or a subclass of) the named class.
 
vtkLagrangianBasicIntegrationModelNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) override
 Methods invoked by print to print information about the object including superclasses.
 
int FunctionValues (double *x, double *f, void *userData) override
 Evaluate integration model velocity f at position x.
 
virtual void SetTracker (vtkLagrangianParticleTracker *Tracker)
 Set the parent tracker.
 
virtual vtkLagrangianParticleComputeSurfaceInteraction (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 nullptr Uses SurfaceType array from the intersected surface cell to compute the interaction.
 
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, fieldAssociation and a name.
 
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 void InitializeParticle (vtkLagrangianParticle *vtkNotUsed(particle))
 Initialize a particle by setting user variables and perform any user model specific operation.
 
virtual bool CheckAdaptiveStepReintegration (vtkLagrangianParticle *vtkNotUsed(particle))
 Method to be reimplemented if needed in inherited classes.
 
virtual bool CheckFreeFlightTermination (vtkLagrangianParticle *vtkNotUsed(particle))
 Method to be reimplemented if needed in inherited classes.
 
virtual vtkStringArrayGetSeedArrayNames ()
 Get the seed arrays expected name Used Only be the vtkLagrangianSeedHelper in ParaView plugins.
 
virtual vtkIntArrayGetSeedArrayComps ()
 Get the seed arrays expected number of components Used Only be the vtkLagrangianSeedHelper in ParaView plugins.
 
virtual vtkIntArrayGetSeedArrayTypes ()
 Get the seed arrays expected type Used Only be the vtkLagrangianSeedHelper in ParaView plugins.
 
virtual vtkStringArrayGetSurfaceArrayNames ()
 Get the surface arrays expected name Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
 
virtual vtkIntArrayGetSurfaceArrayTypes ()
 Get the surface arrays expected type Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
 
virtual vtkStringArrayGetSurfaceArrayEnumValues ()
 Get the surface arrays expected values and associated enums Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
 
virtual vtkDoubleArrayGetSurfaceArrayDefaultValues ()
 Get the surface arrays default values for each leaf Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
 
virtual vtkIntArrayGetSurfaceArrayComps ()
 Get the seed array expected number of components Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.
 
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 signature output is expected to be the same, see vtkInitialValueProblemSolver::ComputeNextStep for reference xcur is the current particle variables xnext is the next particle variable t is the current integration time delT is the timeStep, which is also an output for adaptative algorithm delTActual is the time step output corresponding to the actual movement of the particle minStep is the minimum step time for adaptative algorithm maxStep is the maximum step time for adaptative algorithm maxError is the maximum acceptable error error is the output of actual error integrationResult is the result of the integration, see vtkInitialValueProblemSolver::ErrorCodes for error report otherwise it should be zero.
 
virtual void ParallelManualShift (vtkLagrangianParticle *vtkNotUsed(particle))
 Method called by parallel algorithm after receiving a particle from stream if PManualShift flag has been set to true on the particle.
 
virtual vtkLagrangianThreadedDataInitializeThreadedData ()
 Let the model allocate and initialize a threaded data.
 
virtual void FinalizeThreadedData (vtkLagrangianThreadedData *&data)
 Let the model finalize and deallocate a user data at thread level This method is called serially for each thread and does not require to be thread safe.
 
virtual bool FinalizeOutputs (vtkPolyData *vtkNotUsed(particlePathsOutput), vtkDataObject *vtkNotUsed(interractionOutput))
 Enable model post process on output Return true if successful, false otherwise Empty and Always return true with basic model.
 
virtual void PreParticleInitalization ()
 Allow for model setup prior to Particle Initalization.
 
virtual void PreIntegrate (std::queue< vtkLagrangianParticle * > &vtkNotUsed(particles))
 Enable model to modify particle before integration.
 
virtual vtkAbstractArrayGetSeedArray (int idx, vtkPointData *pointData)
 Get a seed array, as set in setInputArrayToProcess from the provided seed point data.
 
virtual void SetNumberOfTrackedUserData (int)
 Set/Get the number of tracked user data attached to the particles.
 
virtual int GetNumberOfTrackedUserData ()
 
virtual void InitializePathData (vtkFieldData *data)
 Method used by the LPT to initialize data insertion in the provided vtkFieldData.
 
virtual void InitializeInteractionData (vtkFieldData *data)
 Method used by the LPT to initialize data insertion in the provided vtkFieldData.
 
virtual void InitializeParticleData (vtkFieldData *particleData, int maxTuples=0)
 Method used by the LPT to initialize data insertion in the provided vtkFieldData.
 
virtual void InsertPathData (vtkLagrangianParticle *particle, vtkFieldData *data)
 Method used by the LPT to insert data from the partice into the provided vtkFieldData.
 
virtual void InsertInteractionData (vtkLagrangianParticle *particle, vtkFieldData *data)
 Method used by the LPT to insert data from the partice into the provided vtkFieldData.
 
virtual void InsertParticleData (vtkLagrangianParticle *particle, vtkFieldData *data, int stepEnum)
 Method used by the LPT to insert data from the partice into the provided vtkFieldData.
 
virtual void InsertParticleSeedData (vtkLagrangianParticle *particle, vtkFieldData *data)
 Method used by the LPT to insert data from the partice into the provided vtkFieldData.
 
virtual void ParticleAboutToBeDeleted (vtkLagrangianParticle *vtkNotUsed(particle))
 Method to be reimplemented if needed in inherited classes.
 
virtual void InsertSurfaceInteractionData (vtkLagrangianParticle *vtkNotUsed(particle), vtkPointData *vtkNotUsed(particleData))
 Method to be reimplemented if needed in inherited classes.
 
virtual int FunctionValues (double *x, double *f)
 Evaluate functions at x_j.
 
virtual int FunctionValues (double *x, double *f, void *vtkNotUsed(userData))
 
virtual void SetLocator (vtkAbstractCellLocator *locator)
 Set/Get the locator used to locate cells in the datasets.
 
virtual vtkAbstractCellLocatorGetLocator ()
 Set/Get the locator used to locate cells in the datasets.
 
virtual bool GetLocatorsBuilt ()
 Get the state of the current locators.
 
virtual void SetLocatorsBuilt (bool)
 Get the state of the current locators.
 
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 Locator member of this class The surface flag allow to manage surfaces datasets for surface interaction instead of flow datasets surfaceFlatIndex, used only with composite surface, in order to identify the flatIndex of the surface for particle interaction.
 
virtual void ClearDataSets (bool surface=false)
 Add a dataset to locate cells in This create a specific locator for the provided dataset using the Locator member of this class The surface flag allow to manage surfaces datasets for surface interaction instead of flow datasets surfaceFlatIndex, used only with composite surface, in order to identify the flatIndex of the surface for particle interaction.
 
virtual void SetUseInitialIntegrationTime (bool)
 Set/Get the Use of initial integration input array to process.
 
virtual bool GetUseInitialIntegrationTime ()
 Set/Get the Use of initial integration input array to process.
 
virtual void UseInitialIntegrationTimeOn ()
 Set/Get the Use of initial integration input array to process.
 
virtual void UseInitialIntegrationTimeOff ()
 Set/Get the Use of initial integration input array to process.
 
virtual double GetTolerance ()
 Get the tolerance to use with this model.
 
virtual double GetLocatorTolerance ()
 Get the specific tolerance to use with the locators.
 
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.
 
virtual bool FindInLocators (double *x, vtkLagrangianParticle *particle)
 Convienience methods to call FindInLocators with less arguments THESE METHODS ARE NOT THREAD-SAFE.
 
virtual void SetNonPlanarQuadSupport (bool)
 Set/Get Non Planar Quad Support.
 
virtual bool GetNonPlanarQuadSupport ()
 Set/Get Non Planar Quad Support.
 
virtual void NonPlanarQuadSupportOn ()
 Set/Get Non Planar Quad Support.
 
virtual void NonPlanarQuadSupportOff ()
 Set/Get Non Planar Quad Support.
 
virtual int GetWeightsSize ()
 Get the maximum weights size necessary for calling FindInLocators with weights.
 
- Public Member Functions inherited from vtkFunctionSet
virtual vtkTypeBool IsA (const char *type)
 Return 1 if this class is the same type of (or a subclass of) the named class.
 
vtkFunctionSetNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) override
 Methods invoked by print to print information about the object including superclasses.
 
virtual int FunctionValues (double *x, double *f)
 Evaluate functions at x_j.
 
virtual int FunctionValues (double *x, double *f, void *vtkNotUsed(userData))
 
virtual int GetNumberOfFunctions ()
 Return the number of functions.
 
virtual int GetNumberOfIndependentVariables ()
 Return the number of independent variables.
 
- Public Member Functions inherited from vtkObject
 vtkBaseTypeMacro (vtkObject, vtkObjectBase)
 
virtual void DebugOn ()
 Turn debugging output on.
 
virtual void DebugOff ()
 Turn debugging output off.
 
bool GetDebug ()
 Get the value of the debug flag.
 
void SetDebug (bool debugFlag)
 Set the value of the debug flag.
 
virtual void Modified ()
 Update the modification time for this object.
 
virtual vtkMTimeType GetMTime ()
 Return this object's modified time.
 
void PrintSelf (ostream &os, vtkIndent indent) override
 Methods invoked by print to print information about the object including superclasses.
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
vtkTypeBool HasObserver (unsigned long event)
 
vtkTypeBool HasObserver (const char *event)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
vtkCommandGetCommand (unsigned long tag)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
void RemoveObserver (vtkCommand *)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
void RemoveObservers (unsigned long event, vtkCommand *)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
void RemoveObservers (const char *event, vtkCommand *)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
vtkTypeBool HasObserver (unsigned long event, vtkCommand *)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
vtkTypeBool HasObserver (const char *event, vtkCommand *)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object.
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 Overloads to AddObserver that allow developers to add class member functions as callbacks for events.
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 Overloads to AddObserver that allow developers to add class member functions as callbacks for events.
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 Allow user to set the AbortFlagOn() with the return value of the callback method.
 
int InvokeEvent (unsigned long event, void *callData)
 This method invokes an event and return whether the event was aborted or not.
 
int InvokeEvent (const char *event, void *callData)
 This method invokes an event and return whether the event was aborted or not.
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 Return the class name as a string.
 
virtual vtkTypeBool IsA (const char *name)
 Return 1 if this class is the same type of (or a subclass of) the named class.
 
virtual vtkIdType GetNumberOfGenerationsFromBase (const char *name)
 Given the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class).
 
virtual void Delete ()
 Delete a VTK object.
 
virtual void FastDelete ()
 Delete a reference to this object.
 
void InitializeObjectBase ()
 
void Print (ostream &os)
 Print an object to an ostream.
 
virtual void Register (vtkObjectBase *o)
 Increase the reference count (mark as used by another object).
 
virtual void UnRegister (vtkObjectBase *o)
 Decrease the reference count (release by another object).
 
int GetReferenceCount ()
 Return the current reference count of this object.
 
void SetReferenceCount (int)
 Sets the reference count.
 
bool GetIsInMemkind () const
 A local state flag that remembers whether this object lives in the normal or extended memory space.
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 Methods invoked by print to print information about the object including superclasses.
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 Methods invoked by print to print information about the object including superclasses.
 

Static Public Member Functions

static vtkTypeBool IsTypeOf (const char *type)
 
static vtkLagrangianBasicIntegrationModelSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkFunctionSet
static vtkTypeBool IsTypeOf (const char *type)
 
static vtkFunctionSetSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkObject
static vtkObjectNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
 
static void BreakOnError ()
 This method is called when vtkErrorMacro executes.
 
static void SetGlobalWarningDisplay (int val)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
 
static void GlobalWarningDisplayOn ()
 This is a global flag that controls whether any debug, warning or error messages are displayed.
 
static void GlobalWarningDisplayOff ()
 This is a global flag that controls whether any debug, warning or error messages are displayed.
 
static int GetGlobalWarningDisplay ()
 This is a global flag that controls whether any debug, warning or error messages are displayed.
 
- Static Public Member Functions inherited from vtkObjectBase
static vtkTypeBool IsTypeOf (const char *name)
 Return 1 if this class type is the same type of (or a subclass of) the named class.
 
static vtkIdType GetNumberOfGenerationsFromBaseType (const char *name)
 Given a the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class).
 
static vtkObjectBaseNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
 
static void SetMemkindDirectory (const char *directoryname)
 The name of a directory, ideally mounted -o dax, to memory map an extended memory space within.
 
static bool GetUsingMemkind ()
 A global state flag that controls whether vtkObjects are constructed in the usual way (the default) or within the extended memory space.
 

Protected Types

typedef std::pair< ArrayVal, std::string > ArrayMapVal
 
typedef struct vtkLagrangianBasicIntegrationModel::SurfaceArrayDescription SurfaceArrayDescription
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkLagrangianBasicIntegrationModel ()
 
 ~vtkLagrangianBasicIntegrationModel () override
 
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 class This method implementation should be thread-safe.
 
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, if so return the cellId and output the cell containing the point and the weights of the point in the cell This method is thread-safe, its reimplementation should also be.
 
virtual bool TerminateParticle (vtkLagrangianParticle *particle)
 Terminate a particle, by positioning flags.
 
virtual bool BounceParticle (vtkLagrangianParticle *particle, vtkDataSet *surface, vtkIdType cellId)
 Bounce a particle, using the normal of the cell it bounces on.
 
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 intersected cells normals Return true to record the interaction, false otherwise This method is thread-safe and uses vtkLagrangianBasicIntegrationModel::ParticleQueueMutex to access the particles queue, its reimplementation should also be.
 
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 classes willing to implement specific particle surface interactions Return true to record the interaction, false otherwise This method is thread-safe and should use vtkLagrangianBasicIntegrationModel::ParticleQueueMutex to add particles to the particles queue, see BreakParticle for an example.
 
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 implement specific line/surface intersection This method is thread-safe.
 
virtual void InterpolateNextParticleVariables (vtkLagrangianParticle *particle, double interpolationFactor, bool forceInside=false)
 compute all particle variables using interpolation factor This method is thread-safe.
 
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 with it This method is thread-safe.
 
virtual vtkAbstractArrayGetSeedArray (int idx, vtkLagrangianParticle *particle)
 Get a seed array, as set in setInputArrayToProcess from the provided particle seed data Access then the first tuple to access the data This method is thread-safe.
 
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 GetFlowOrSurfaceDataNumberOfComponents (int idx, vtkDataSet *dataSet)
 Recover the number of components for a specified array index if it has been set using SetInputArrayToProcess, with provided dataset.
 
virtual int GetFlowOrSurfaceDataFieldAssociation (int idx)
 Recover a field association for a specified array index if it has been set using SetInputArrayToProcess This method is thread-safe.
 
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 nComponents could be retrieved with arrayName but is given for simplication purposes.
 
- Protected Member Functions inherited from vtkFunctionSet
virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkFunctionSet ()
 
 ~vtkFunctionSet () override=default
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
 ~vtkObject () override
 
void RegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
 These methods allow a command to exclusively grab all events.
 
void InternalReleaseFocus ()
 These methods allow a command to exclusively grab all events.
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void RegisterInternal (vtkObjectBase *, vtkTypeBool check)
 
virtual void UnRegisterInternal (vtkObjectBase *, vtkTypeBool check)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

vtkAbstractCellLocatorLocator
 
bool LocatorsBuilt
 
vtkLocatorsType * Locators
 
vtkDataSetsType * DataSets
 
int WeightsSize = 0
 
std::map< int, ArrayMapValInputArrays
 
std::map< std::string, SurfaceArrayDescriptionSurfaceArrayDescriptions
 
vtkSurfaceType * Surfaces
 
vtkLocatorsType * SurfaceLocators
 
double Tolerance
 
double LocatorTolerance = 0.001
 
bool NonPlanarQuadSupport
 
bool UseInitialIntegrationTime
 
int NumberOfTrackedUserData = 0
 
vtkNew< vtkStringArraySeedArrayNames
 
vtkNew< vtkIntArraySeedArrayComps
 
vtkNew< vtkIntArraySeedArrayTypes
 
vtkNew< vtkStringArraySurfaceArrayNames
 
vtkNew< vtkIntArraySurfaceArrayComps
 
vtkNew< vtkIntArraySurfaceArrayTypes
 
vtkNew< vtkStringArraySurfaceArrayEnumValues
 
vtkNew< vtkDoubleArraySurfaceArrayDefaultValues
 
vtkWeakPointer< vtkLagrangianParticleTrackerTracker
 
std::mutex ParticleQueueMutex
 
- Protected Attributes inherited from vtkFunctionSet
int NumFuncs
 
int NumIndepVars
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
std::atomic< int32_t > ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Additional Inherited Members

- Static Protected Member Functions inherited from vtkObjectBase
static vtkMallocingFunction GetCurrentMallocFunction ()
 
static vtkReallocingFunction GetCurrentReallocFunction ()
 
static vtkFreeingFunction GetCurrentFreeFunction ()
 
static vtkFreeingFunction GetAlternateFreeFunction ()
 

Detailed Description

vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator.

This vtkFunctionSet abstract implementation is meant to be used as a parameter of vtkLagrangianParticleTracker. It manages multiple dataset locators in order to evaluate the vtkFunctionSet::FunctionValues method. The actual FunctionValues implementation should be found in the class inheriting this class. Input Arrays to process are expected as follows: Index 0 : "SurfaceType" array of surface input of the particle tracker

Inherited classes MUST implement int FunctionValues(vtkDataSet* detaSet, vtkIdType cellId, double* weights, double * x, double * f); to define how the integration works.

Inherited classes could reimplement InteractWithSurface or other surface interaction methods to change the way particles interact with surfaces.

Inherited classes could reimplement IntersectWithLine to use a specific algorithm to intersect particles and surface cells.

Inherited classes could reimplement CheckFreeFlightTermination to set the way particles terminate in free flight.

Inherited classes could reimplement Initialize*Data and Insert*Data in order to customize the output of the tracker

See also
vtkLagrangianParticleTracker vtkLagrangianParticle vtkLagrangianMatidaIntegrationModel

Definition at line 87 of file vtkLagrangianBasicIntegrationModel.h.

Member Typedef Documentation

◆ Superclass

Definition at line 90 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceType

◆ VariableStep

◆ PassThroughParticlesItem

Definition at line 109 of file vtkLagrangianBasicIntegrationModel.h.

◆ PassThroughParticlesType

Definition at line 110 of file vtkLagrangianBasicIntegrationModel.h.

◆ ArrayMapVal

typedef std::pair<ArrayVal, std::string> vtkLagrangianBasicIntegrationModel::ArrayMapVal
protected

Definition at line 621 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayDescription

Member Enumeration Documentation

◆ SurfaceType

Enumerator
SURFACE_TYPE_MODEL 
SURFACE_TYPE_TERM 
SURFACE_TYPE_BOUNCE 
SURFACE_TYPE_BREAK 
SURFACE_TYPE_PASS 

Definition at line 93 of file vtkLagrangianBasicIntegrationModel.h.

◆ VariableStep

Enumerator
VARIABLE_STEP_PREV 
VARIABLE_STEP_CURRENT 
VARIABLE_STEP_NEXT 

Definition at line 102 of file vtkLagrangianBasicIntegrationModel.h.

Constructor & Destructor Documentation

◆ vtkLagrangianBasicIntegrationModel()

vtkLagrangianBasicIntegrationModel::vtkLagrangianBasicIntegrationModel ( )
protected

◆ ~vtkLagrangianBasicIntegrationModel()

vtkLagrangianBasicIntegrationModel::~vtkLagrangianBasicIntegrationModel ( )
overrideprotected

Member Function Documentation

◆ IsTypeOf()

static vtkTypeBool vtkLagrangianBasicIntegrationModel::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual vtkTypeBool vtkLagrangianBasicIntegrationModel::IsA ( const char *  name)
virtual

Return 1 if this class is the same type of (or a subclass of) the named class.

Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkFunctionSet.

Reimplemented in vtkLagrangianMatidaIntegrationModel.

◆ SafeDownCast()

static vtkLagrangianBasicIntegrationModel * vtkLagrangianBasicIntegrationModel::SafeDownCast ( vtkObjectBase o)
static

◆ NewInstanceInternal()

virtual vtkObjectBase * vtkLagrangianBasicIntegrationModel::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkFunctionSet.

Reimplemented in vtkLagrangianMatidaIntegrationModel.

◆ NewInstance()

vtkLagrangianBasicIntegrationModel * vtkLagrangianBasicIntegrationModel::NewInstance ( ) const

◆ PrintSelf()

void vtkLagrangianBasicIntegrationModel::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
overridevirtual

Methods invoked by print to print information about the object including superclasses.

Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkFunctionSet.

Reimplemented in vtkLagrangianMatidaIntegrationModel.

◆ FunctionValues() [1/4]

int vtkLagrangianBasicIntegrationModel::FunctionValues ( double *  x,
double *  f,
void *  userData 
)
override

Evaluate integration model velocity f at position x.

Look for the cell containing the position x in all its added datasets if found this will call FunctionValues(vtkDataSet* detaSet, vtkIdType cellId, double* x, double* f) This method is thread safe.

◆ SetLocator()

virtual void vtkLagrangianBasicIntegrationModel::SetLocator ( vtkAbstractCellLocator locator)
virtual

Set/Get the locator used to locate cells in the datasets.

Only the locator class matter here, as it is used only to create NewInstance of it. Default is a vtkCellLocator.

◆ GetLocator()

virtual vtkAbstractCellLocator * vtkLagrangianBasicIntegrationModel::GetLocator ( )
virtual

Set/Get the locator used to locate cells in the datasets.

Only the locator class matter here, as it is used only to create NewInstance of it. Default is a vtkCellLocator.

◆ GetLocatorsBuilt()

virtual bool vtkLagrangianBasicIntegrationModel::GetLocatorsBuilt ( )
virtual

Get the state of the current locators.

◆ SetLocatorsBuilt()

virtual void vtkLagrangianBasicIntegrationModel::SetLocatorsBuilt ( bool  )
virtual

Get the state of the current locators.

◆ SetTracker()

virtual void vtkLagrangianBasicIntegrationModel::SetTracker ( vtkLagrangianParticleTracker Tracker)
virtual

Set the parent tracker.

◆ AddDataSet()

virtual void vtkLagrangianBasicIntegrationModel::AddDataSet ( vtkDataSet dataset,
bool  surface = false,
unsigned int  surfaceFlatIndex = 0 
)
virtual

Add a dataset to locate cells in This create a specific locator for the provided dataset using the Locator member of this class The surface flag allow to manage surfaces datasets for surface interaction instead of flow datasets surfaceFlatIndex, used only with composite surface, in order to identify the flatIndex of the surface for particle interaction.

◆ ClearDataSets()

virtual void vtkLagrangianBasicIntegrationModel::ClearDataSets ( bool  surface = false)
virtual

Add a dataset to locate cells in This create a specific locator for the provided dataset using the Locator member of this class The surface flag allow to manage surfaces datasets for surface interaction instead of flow datasets surfaceFlatIndex, used only with composite surface, in order to identify the flatIndex of the surface for particle interaction.

◆ SetUseInitialIntegrationTime()

virtual void vtkLagrangianBasicIntegrationModel::SetUseInitialIntegrationTime ( bool  )
virtual

Set/Get the Use of initial integration input array to process.

◆ GetUseInitialIntegrationTime()

virtual bool vtkLagrangianBasicIntegrationModel::GetUseInitialIntegrationTime ( )
virtual

Set/Get the Use of initial integration input array to process.

◆ UseInitialIntegrationTimeOn()

virtual void vtkLagrangianBasicIntegrationModel::UseInitialIntegrationTimeOn ( )
virtual

Set/Get the Use of initial integration input array to process.

◆ UseInitialIntegrationTimeOff()

virtual void vtkLagrangianBasicIntegrationModel::UseInitialIntegrationTimeOff ( )
virtual

Set/Get the Use of initial integration input array to process.

◆ GetTolerance()

virtual double vtkLagrangianBasicIntegrationModel::GetTolerance ( )
virtual

Get the tolerance to use with this model.

◆ GetLocatorTolerance()

virtual double vtkLagrangianBasicIntegrationModel::GetLocatorTolerance ( )
virtual

Get the specific tolerance to use with the locators.

◆ ComputeSurfaceInteraction()

virtual vtkLagrangianParticle * vtkLagrangianBasicIntegrationModel::ComputeSurfaceInteraction ( vtkLagrangianParticle particle,
std::queue< vtkLagrangianParticle * > &  particles,
unsigned int &  interactedSurfaceFlatIndex,
PassThroughParticlesType passThroughParticles 
)
virtual

Interact the current particle with a surfaces Return a particle to record as interaction point if not nullptr Uses SurfaceType array from the intersected surface cell to compute the interaction.

MODEL : vtkLagrangianBasicIntegrationModel::InteractWithSurface method will be used, usually defined in inherited classes TERM : vtkLagrangianBasicIntegrationModel::Terminate method will be used BOUNCE : vtkLagrangianBasicIntegrationModel::Bounce method will be used BREAK_UP : vtkLagrangianBasicIntegrationModel::BreakUp method will be used PASS : The interaction will be recorded with no effect on the particle

◆ SetInputArrayToProcess()

virtual void vtkLagrangianBasicIntegrationModel::SetInputArrayToProcess ( int  idx,
int  port,
int  connection,
int  fieldAssociation,
const char *  name 
)
virtual

Set a input array to process at a specific index, identified by a port, connection, fieldAssociation and a name.

Each inherited class can specify their own input array to process

◆ FindInLocators() [1/3]

virtual bool vtkLagrangianBasicIntegrationModel::FindInLocators ( double *  x,
vtkLagrangianParticle particle,
vtkDataSet *&  dataset,
vtkIdType cellId,
vtkAbstractCellLocator *&  loc,
double *&  weights 
)
virtual

Look for a dataset in this integration model containing the point x.

return false if out of domain, return true and data to recover the cell if in domain. does not filter out ghost cells. convenience method with less outputs. Provide a particle if a dataset/locator cache can be used. This method is thread-safe.

◆ FindInLocators() [2/3]

virtual bool vtkLagrangianBasicIntegrationModel::FindInLocators ( double *  x,
vtkLagrangianParticle particle,
vtkDataSet *&  dataset,
vtkIdType cellId 
)
virtual

Convienience methods to call FindInLocators with less arguments THESE METHODS ARE NOT THREAD-SAFE.

◆ FindInLocators() [3/3]

virtual bool vtkLagrangianBasicIntegrationModel::FindInLocators ( double *  x,
vtkLagrangianParticle particle 
)
virtual

Convienience methods to call FindInLocators with less arguments THESE METHODS ARE NOT THREAD-SAFE.

◆ InitializeParticle()

virtual void vtkLagrangianBasicIntegrationModel::InitializeParticle ( vtkLagrangianParticle vtkNotUsedparticle)
inlinevirtual

Initialize a particle by setting user variables and perform any user model specific operation.

empty in basic implementation.

Definition at line 239 of file vtkLagrangianBasicIntegrationModel.h.

◆ CheckAdaptiveStepReintegration()

virtual bool vtkLagrangianBasicIntegrationModel::CheckAdaptiveStepReintegration ( vtkLagrangianParticle vtkNotUsedparticle)
inlinevirtual

Method to be reimplemented if needed in inherited classes.

Allows a inherited class to check if adaptive step reintegration should be done or not, this method is called just before potentially performing adaptative step reintegration, the current particle is passed as an argument. This method always returns true in this basis class.

Definition at line 249 of file vtkLagrangianBasicIntegrationModel.h.

◆ CheckFreeFlightTermination()

virtual bool vtkLagrangianBasicIntegrationModel::CheckFreeFlightTermination ( vtkLagrangianParticle vtkNotUsedparticle)
inlinevirtual

Method to be reimplemented if needed in inherited classes.

Allows a inherited class to check if a particle should be terminated only based on particle parameters. This method should return true if the particle must be terminated, false otherwise. It always returns false in this basis class. This method is thread-safe, its reimplementation should still be thread-safe.

Definition at line 262 of file vtkLagrangianBasicIntegrationModel.h.

◆ SetNonPlanarQuadSupport()

virtual void vtkLagrangianBasicIntegrationModel::SetNonPlanarQuadSupport ( bool  )
virtual

Set/Get Non Planar Quad Support.

◆ GetNonPlanarQuadSupport()

virtual bool vtkLagrangianBasicIntegrationModel::GetNonPlanarQuadSupport ( )
virtual

Set/Get Non Planar Quad Support.

◆ NonPlanarQuadSupportOn()

virtual void vtkLagrangianBasicIntegrationModel::NonPlanarQuadSupportOn ( )
virtual

Set/Get Non Planar Quad Support.

◆ NonPlanarQuadSupportOff()

virtual void vtkLagrangianBasicIntegrationModel::NonPlanarQuadSupportOff ( )
virtual

Set/Get Non Planar Quad Support.

◆ GetSeedArrayNames()

virtual vtkStringArray * vtkLagrangianBasicIntegrationModel::GetSeedArrayNames ( )
virtual

Get the seed arrays expected name Used Only be the vtkLagrangianSeedHelper in ParaView plugins.

◆ GetSeedArrayComps()

virtual vtkIntArray * vtkLagrangianBasicIntegrationModel::GetSeedArrayComps ( )
virtual

Get the seed arrays expected number of components Used Only be the vtkLagrangianSeedHelper in ParaView plugins.

◆ GetSeedArrayTypes()

virtual vtkIntArray * vtkLagrangianBasicIntegrationModel::GetSeedArrayTypes ( )
virtual

Get the seed arrays expected type Used Only be the vtkLagrangianSeedHelper in ParaView plugins.

◆ GetSurfaceArrayNames()

virtual vtkStringArray * vtkLagrangianBasicIntegrationModel::GetSurfaceArrayNames ( )
virtual

Get the surface arrays expected name Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.

◆ GetSurfaceArrayTypes()

virtual vtkIntArray * vtkLagrangianBasicIntegrationModel::GetSurfaceArrayTypes ( )
virtual

Get the surface arrays expected type Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.

◆ GetSurfaceArrayEnumValues()

virtual vtkStringArray * vtkLagrangianBasicIntegrationModel::GetSurfaceArrayEnumValues ( )
virtual

Get the surface arrays expected values and associated enums Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.

◆ GetSurfaceArrayDefaultValues()

virtual vtkDoubleArray * vtkLagrangianBasicIntegrationModel::GetSurfaceArrayDefaultValues ( )
virtual

Get the surface arrays default values for each leaf Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.

◆ GetSurfaceArrayComps()

virtual vtkIntArray * vtkLagrangianBasicIntegrationModel::GetSurfaceArrayComps ( )
virtual

Get the seed array expected number of components Used Only be the vtkLagrangianSurfaceHelper in ParaView plugins.

◆ GetWeightsSize()

virtual int vtkLagrangianBasicIntegrationModel::GetWeightsSize ( )
virtual

Get the maximum weights size necessary for calling FindInLocators with weights.

◆ ManualIntegration()

virtual bool vtkLagrangianBasicIntegrationModel::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 
)
virtual

Let the model define it's own way to integrate Signature is very close to the integrator method signature output is expected to be the same, see vtkInitialValueProblemSolver::ComputeNextStep for reference xcur is the current particle variables xnext is the next particle variable t is the current integration time delT is the timeStep, which is also an output for adaptative algorithm delTActual is the time step output corresponding to the actual movement of the particle minStep is the minimum step time for adaptative algorithm maxStep is the maximum step time for adaptative algorithm maxError is the maximum acceptable error error is the output of actual error integrationResult is the result of the integration, see vtkInitialValueProblemSolver::ErrorCodes for error report otherwise it should be zero.

be aware that only stagnating OUT_OF_DOMAIN will be considered actual out of domain error. Return true if manual integration was used, false otherwise Simply return false in vtkLagrangianBasicIntegrationModel implementation. This method is thread-safe, its reimplementation should still be thread-safe.

◆ ParallelManualShift()

virtual void vtkLagrangianBasicIntegrationModel::ParallelManualShift ( vtkLagrangianParticle vtkNotUsedparticle)
inlinevirtual

Method called by parallel algorithm after receiving a particle from stream if PManualShift flag has been set to true on the particle.

Does nothing in base implementation

Definition at line 365 of file vtkLagrangianBasicIntegrationModel.h.

◆ InitializeThreadedData()

virtual vtkLagrangianThreadedData * vtkLagrangianBasicIntegrationModel::InitializeThreadedData ( )
virtual

Let the model allocate and initialize a threaded data.

This method is thread-safe, its reimplementation should still be thread-safe.

◆ FinalizeThreadedData()

virtual void vtkLagrangianBasicIntegrationModel::FinalizeThreadedData ( vtkLagrangianThreadedData *&  data)
virtual

Let the model finalize and deallocate a user data at thread level This method is called serially for each thread and does not require to be thread safe.

◆ FinalizeOutputs()

virtual bool vtkLagrangianBasicIntegrationModel::FinalizeOutputs ( vtkPolyData vtkNotUsedparticlePathsOutput,
vtkDataObject vtkNotUsedinterractionOutput 
)
inlinevirtual

Enable model post process on output Return true if successful, false otherwise Empty and Always return true with basic model.

Definition at line 384 of file vtkLagrangianBasicIntegrationModel.h.

◆ PreParticleInitalization()

virtual void vtkLagrangianBasicIntegrationModel::PreParticleInitalization ( )
inlinevirtual

Allow for model setup prior to Particle Initalization.

Definition at line 393 of file vtkLagrangianBasicIntegrationModel.h.

◆ PreIntegrate()

virtual void vtkLagrangianBasicIntegrationModel::PreIntegrate ( std::queue< vtkLagrangianParticle * > &  vtkNotUsedparticles)
inlinevirtual

Enable model to modify particle before integration.

Definition at line 398 of file vtkLagrangianBasicIntegrationModel.h.

◆ GetSeedArray() [1/2]

virtual vtkAbstractArray * vtkLagrangianBasicIntegrationModel::GetSeedArray ( int  idx,
vtkPointData pointData 
)
virtual

Get a seed array, as set in setInputArrayToProcess from the provided seed point data.

◆ SetNumberOfTrackedUserData()

virtual void vtkLagrangianBasicIntegrationModel::SetNumberOfTrackedUserData ( int  )
virtual

Set/Get the number of tracked user data attached to the particles.

Tracked user data are data that are related to each particle position but are not integrated like the user variables. They are not saved in the particle path. Default is 0.

◆ GetNumberOfTrackedUserData()

virtual int vtkLagrangianBasicIntegrationModel::GetNumberOfTrackedUserData ( )
virtual

◆ InitializePathData()

virtual void vtkLagrangianBasicIntegrationModel::InitializePathData ( vtkFieldData data)
virtual

Method used by the LPT to initialize data insertion in the provided vtkFieldData.

It initializes Id, ParentID, SeedID and Termination. Reimplement as needed in acccordance with InsertPathData.

◆ InitializeInteractionData()

virtual void vtkLagrangianBasicIntegrationModel::InitializeInteractionData ( vtkFieldData data)
virtual

Method used by the LPT to initialize data insertion in the provided vtkFieldData.

It initializes Interaction. Reimplement as needed in acccordance with InsertInteractionData.

◆ InitializeParticleData()

virtual void vtkLagrangianBasicIntegrationModel::InitializeParticleData ( vtkFieldData particleData,
int  maxTuples = 0 
)
virtual

Method used by the LPT to initialize data insertion in the provided vtkFieldData.

It initializes StepNumber, ParticleVelocity, IntegrationTime. Reimplement as needed in acccordance with InsertParticleData.

◆ InsertPathData()

virtual void vtkLagrangianBasicIntegrationModel::InsertPathData ( vtkLagrangianParticle particle,
vtkFieldData data 
)
virtual

Method used by the LPT to insert data from the partice into the provided vtkFieldData.

It inserts Id, ParentID, SeedID and Termination. Reimplement as needed in acccordance with InitializePathData.

◆ InsertInteractionData()

virtual void vtkLagrangianBasicIntegrationModel::InsertInteractionData ( vtkLagrangianParticle particle,
vtkFieldData data 
)
virtual

Method used by the LPT to insert data from the partice into the provided vtkFieldData.

It inserts Interaction. Reimplement as needed in acccordance with InitializeInteractionData.

◆ InsertParticleData()

virtual void vtkLagrangianBasicIntegrationModel::InsertParticleData ( vtkLagrangianParticle particle,
vtkFieldData data,
int  stepEnum 
)
virtual

Method used by the LPT to insert data from the partice into the provided vtkFieldData.

It inserts StepNumber, ParticleVelocity, IntegrationTime. stepEnum enables to select which data to insert, Prev, Current or Next. Reimplement as needed in acccordance with InitializeParticleData.

◆ InsertParticleSeedData()

virtual void vtkLagrangianBasicIntegrationModel::InsertParticleSeedData ( vtkLagrangianParticle particle,
vtkFieldData data 
)
virtual

Method used by the LPT to insert data from the partice into the provided vtkFieldData.

It inserts all arrays from the original SeedData. Reimplement as needed.

◆ ParticleAboutToBeDeleted()

virtual void vtkLagrangianBasicIntegrationModel::ParticleAboutToBeDeleted ( vtkLagrangianParticle vtkNotUsedparticle)
inlinevirtual

Method to be reimplemented if needed in inherited classes.

Allows a inherited class to take action just before a particle is deleted This can be practical when working with vtkLagrangianParticle::TemporaryUserData. This can be called with not fully initialized particle.

Definition at line 473 of file vtkLagrangianBasicIntegrationModel.h.

◆ InsertSurfaceInteractionData()

virtual void vtkLagrangianBasicIntegrationModel::InsertSurfaceInteractionData ( vtkLagrangianParticle vtkNotUsedparticle,
vtkPointData vtkNotUsedparticleData 
)
inlinevirtual

Method to be reimplemented if needed in inherited classes.

Allows a inherited class to add surface interaction data from the model

Definition at line 479 of file vtkLagrangianBasicIntegrationModel.h.

◆ FunctionValues() [2/4]

virtual int vtkLagrangianBasicIntegrationModel::FunctionValues ( vtkLagrangianParticle particle,
vtkDataSet dataSet,
vtkIdType  cellId,
double *  weights,
double *  x,
double *  f 
)
protectedpure virtual

Actually compute the integration model velocity field pure abstract, to be implemented in inherited class This method implementation should be thread-safe.

Implemented in vtkLagrangianMatidaIntegrationModel, and vtkLagrangianMatidaIntegrationModel.

◆ FindInLocator()

virtual vtkIdType vtkLagrangianBasicIntegrationModel::FindInLocator ( vtkDataSet dataSet,
vtkAbstractCellLocator locator,
double *  x,
vtkGenericCell cell,
double *  weights 
)
protectedvirtual

Look in the given dataset and associated locator to see if it contains the point x, if so return the cellId and output the cell containing the point and the weights of the point in the cell This method is thread-safe, its reimplementation should also be.

◆ TerminateParticle()

virtual bool vtkLagrangianBasicIntegrationModel::TerminateParticle ( vtkLagrangianParticle particle)
protectedvirtual

Terminate a particle, by positioning flags.

Return true to record the interaction, false otherwise This method is thread-safe.

◆ BounceParticle()

virtual bool vtkLagrangianBasicIntegrationModel::BounceParticle ( vtkLagrangianParticle particle,
vtkDataSet surface,
vtkIdType  cellId 
)
protectedvirtual

Bounce a particle, using the normal of the cell it bounces on.

Return true to record the interaction, false otherwise This method is thread-safe.

◆ BreakParticle()

virtual bool vtkLagrangianBasicIntegrationModel::BreakParticle ( vtkLagrangianParticle particle,
vtkDataSet surface,
vtkIdType  cellId,
std::queue< vtkLagrangianParticle * > &  particles 
)
protectedvirtual

Breakup a particle at intersection point, by terminating it and creating two new particle using the intersected cells normals Return true to record the interaction, false otherwise This method is thread-safe and uses vtkLagrangianBasicIntegrationModel::ParticleQueueMutex to access the particles queue, its reimplementation should also be.

◆ InteractWithSurface()

virtual bool vtkLagrangianBasicIntegrationModel::InteractWithSurface ( int  surfaceType,
vtkLagrangianParticle particle,
vtkDataSet surface,
vtkIdType  cellId,
std::queue< vtkLagrangianParticle * > &  particles 
)
protectedvirtual

Call vtkLagrangianBasicIntegrationModel::Terminate This method is to be reimplemented in inherited classes willing to implement specific particle surface interactions Return true to record the interaction, false otherwise This method is thread-safe and should use vtkLagrangianBasicIntegrationModel::ParticleQueueMutex to add particles to the particles queue, see BreakParticle for an example.

◆ IntersectWithLine()

virtual bool vtkLagrangianBasicIntegrationModel::IntersectWithLine ( vtkLagrangianParticle particle,
vtkCell cell,
double  p1[3],
double  p2[3],
double  tol,
double &  t,
double  x[3] 
)
protectedvirtual

Call vtkCell::IntersectWithLine This method is to be reimplemented in inherited classes willing to implement specific line/surface intersection This method is thread-safe.

◆ InterpolateNextParticleVariables()

virtual void vtkLagrangianBasicIntegrationModel::InterpolateNextParticleVariables ( vtkLagrangianParticle particle,
double  interpolationFactor,
bool  forceInside = false 
)
protectedvirtual

compute all particle variables using interpolation factor This method is thread-safe.

◆ CheckSurfacePerforation()

virtual bool vtkLagrangianBasicIntegrationModel::CheckSurfacePerforation ( vtkLagrangianParticle particle,
vtkDataSet surface,
vtkIdType  cellId 
)
protectedvirtual

Given a particle, check if it perforate a surface cell ie : interact with next step after interacting with it This method is thread-safe.

◆ GetSeedArray() [2/2]

virtual vtkAbstractArray * vtkLagrangianBasicIntegrationModel::GetSeedArray ( int  idx,
vtkLagrangianParticle particle 
)
protectedvirtual

Get a seed array, as set in setInputArrayToProcess from the provided particle seed data Access then the first tuple to access the data This method is thread-safe.

◆ GetFlowOrSurfaceData()

virtual bool vtkLagrangianBasicIntegrationModel::GetFlowOrSurfaceData ( vtkLagrangianParticle particle,
int  idx,
vtkDataSet flowDataSet,
vtkIdType  tupleId,
double *  weights,
double *  data 
)
protectedvirtual

Directly get a double value from flow or surface data as defined in SetInputArrayToProcess.

Make sure that data pointer is large enough using GetFlowOrSurfaceDataNumberOfComponents if needed. This method is thread-safe.

◆ GetFlowOrSurfaceDataNumberOfComponents()

virtual int vtkLagrangianBasicIntegrationModel::GetFlowOrSurfaceDataNumberOfComponents ( int  idx,
vtkDataSet dataSet 
)
protectedvirtual

Recover the number of components for a specified array index if it has been set using SetInputArrayToProcess, with provided dataset.

Returns -1 in case of error. This method is thread-safe.

◆ GetFlowOrSurfaceDataFieldAssociation()

virtual int vtkLagrangianBasicIntegrationModel::GetFlowOrSurfaceDataFieldAssociation ( int  idx)
protectedvirtual

Recover a field association for a specified array index if it has been set using SetInputArrayToProcess This method is thread-safe.

◆ ComputeSurfaceDefaultValues()

virtual void vtkLagrangianBasicIntegrationModel::ComputeSurfaceDefaultValues ( const char *  arrayName,
vtkDataSet dataset,
int  nComponent,
double *  defaultValues 
)
protectedvirtual

Method used by ParaView surface helper to get default values for each leaf of each dataset of surface nComponents could be retrieved with arrayName but is given for simplication purposes.

it is your responsibility to initialize all components of defaultValues[nComponent]

◆ FunctionValues() [3/4]

virtual int vtkFunctionSet::FunctionValues ( double *  x,
double *  f 
)
inlinevirtual

Evaluate functions at x_j.

x and f have to point to valid double arrays of appropriate sizes obtained with GetNumberOfFunctions() and GetNumberOfIndependentVariables. If you inherit this class, make sure to reimplement at least one of the two FunctionValues signatures.

Reimplemented from vtkFunctionSet.

Reimplemented in vtkLagrangianMatidaIntegrationModel.

Definition at line 49 of file vtkFunctionSet.h.

◆ FunctionValues() [4/4]

virtual int vtkFunctionSet::FunctionValues ( double *  x,
double *  f,
void *  vtkNotUseduserData 
)
inlinevirtual

Reimplemented from vtkFunctionSet.

Reimplemented in vtkLagrangianMatidaIntegrationModel.

Definition at line 50 of file vtkFunctionSet.h.

Member Data Documentation

◆ Locator

vtkAbstractCellLocator* vtkLagrangianBasicIntegrationModel::Locator
protected

Definition at line 611 of file vtkLagrangianBasicIntegrationModel.h.

◆ LocatorsBuilt

bool vtkLagrangianBasicIntegrationModel::LocatorsBuilt
protected

Definition at line 612 of file vtkLagrangianBasicIntegrationModel.h.

◆ Locators

vtkLocatorsType* vtkLagrangianBasicIntegrationModel::Locators
protected

Definition at line 613 of file vtkLagrangianBasicIntegrationModel.h.

◆ DataSets

vtkDataSetsType* vtkLagrangianBasicIntegrationModel::DataSets
protected

Definition at line 614 of file vtkLagrangianBasicIntegrationModel.h.

◆ WeightsSize

int vtkLagrangianBasicIntegrationModel::WeightsSize = 0
protected

Definition at line 615 of file vtkLagrangianBasicIntegrationModel.h.

◆ InputArrays

std::map<int, ArrayMapVal> vtkLagrangianBasicIntegrationModel::InputArrays
protected

Definition at line 622 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayDescriptions

std::map<std::string, SurfaceArrayDescription> vtkLagrangianBasicIntegrationModel::SurfaceArrayDescriptions
protected

Definition at line 630 of file vtkLagrangianBasicIntegrationModel.h.

◆ Surfaces

vtkSurfaceType* vtkLagrangianBasicIntegrationModel::Surfaces
protected

Definition at line 632 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceLocators

vtkLocatorsType* vtkLagrangianBasicIntegrationModel::SurfaceLocators
protected

Definition at line 633 of file vtkLagrangianBasicIntegrationModel.h.

◆ Tolerance

double vtkLagrangianBasicIntegrationModel::Tolerance
protected

Definition at line 635 of file vtkLagrangianBasicIntegrationModel.h.

◆ LocatorTolerance

double vtkLagrangianBasicIntegrationModel::LocatorTolerance = 0.001
protected

Definition at line 636 of file vtkLagrangianBasicIntegrationModel.h.

◆ NonPlanarQuadSupport

bool vtkLagrangianBasicIntegrationModel::NonPlanarQuadSupport
protected

Definition at line 637 of file vtkLagrangianBasicIntegrationModel.h.

◆ UseInitialIntegrationTime

bool vtkLagrangianBasicIntegrationModel::UseInitialIntegrationTime
protected

Definition at line 638 of file vtkLagrangianBasicIntegrationModel.h.

◆ NumberOfTrackedUserData

int vtkLagrangianBasicIntegrationModel::NumberOfTrackedUserData = 0
protected

Definition at line 639 of file vtkLagrangianBasicIntegrationModel.h.

◆ SeedArrayNames

vtkNew<vtkStringArray> vtkLagrangianBasicIntegrationModel::SeedArrayNames
protected

Definition at line 641 of file vtkLagrangianBasicIntegrationModel.h.

◆ SeedArrayComps

vtkNew<vtkIntArray> vtkLagrangianBasicIntegrationModel::SeedArrayComps
protected

Definition at line 642 of file vtkLagrangianBasicIntegrationModel.h.

◆ SeedArrayTypes

vtkNew<vtkIntArray> vtkLagrangianBasicIntegrationModel::SeedArrayTypes
protected

Definition at line 643 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayNames

vtkNew<vtkStringArray> vtkLagrangianBasicIntegrationModel::SurfaceArrayNames
protected

Definition at line 644 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayComps

vtkNew<vtkIntArray> vtkLagrangianBasicIntegrationModel::SurfaceArrayComps
protected

Definition at line 645 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayTypes

vtkNew<vtkIntArray> vtkLagrangianBasicIntegrationModel::SurfaceArrayTypes
protected

Definition at line 646 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayEnumValues

vtkNew<vtkStringArray> vtkLagrangianBasicIntegrationModel::SurfaceArrayEnumValues
protected

Definition at line 647 of file vtkLagrangianBasicIntegrationModel.h.

◆ SurfaceArrayDefaultValues

vtkNew<vtkDoubleArray> vtkLagrangianBasicIntegrationModel::SurfaceArrayDefaultValues
protected

Definition at line 648 of file vtkLagrangianBasicIntegrationModel.h.

◆ Tracker

vtkWeakPointer<vtkLagrangianParticleTracker> vtkLagrangianBasicIntegrationModel::Tracker
protected

Definition at line 650 of file vtkLagrangianBasicIntegrationModel.h.

◆ ParticleQueueMutex

std::mutex vtkLagrangianBasicIntegrationModel::ParticleQueueMutex
protected

Definition at line 651 of file vtkLagrangianBasicIntegrationModel.h.


The documentation for this class was generated from the following file: