28#ifndef vtkParticleTracerBase_h
29#define vtkParticleTracerBase_h
31#include "vtkFiltersFlowPathsModule.h"
63 int CachedDataSetId[2];
109 void PrintParticleHistories();
117 vtkGetMacro(ComputeVorticity,
bool);
118 void SetComputeVorticity(
bool);
125 vtkGetMacro(TerminalSpeed,
double);
126 void SetTerminalSpeed(
double);
134 vtkGetMacro(RotationScale,
double);
135 void SetRotationScale(
double);
144 vtkGetMacro(IgnorePipelineTime,
int);
158 vtkGetMacro(ForceReinjectionEveryNSteps,
int);
159 void SetForceReinjectionEveryNSteps(
int);
169 void SetTerminationTime(
double t);
170 vtkGetMacro(TerminationTime,
double);
176 void SetIntegratorType(
int type);
177 int GetIntegratorType();
184 vtkGetMacro(StartTime,
double);
185 void SetStartTime(
double t);
199 vtkGetMacro(StaticSeeds,
int);
213 vtkGetMacro(StaticMesh,
int);
232 vtkSetStringMacro(ParticleFileName);
242 vtkGetMacro(EnableParticleWriting,
int);
253 vtkGetMacro(DisableResetCache,
int);
262 void RemoveAllSources();
278 int IgnorePipelineTime;
279 int DisableResetCache;
333 virtual
void Initialize(){}
370 int &localAssignedCount);
398 double currenttime,
double terminationtime,
417 double pos[4],
double p2[4],
double intersection[4],
461 vtkGetMacro(ReinjectionCounter,
int);
462 vtkGetMacro(CurrentTimeValue,
double);
498 bool SetTerminationTimeNoModify(
double t);
502 double IntegrationStep;
504 bool ComputeVorticity;
505 double RotationScale;
506 double TerminalSpeed;
509 int ReinjectionCounter;
512 int AllFixedGeometry;
516 std::vector<double> InputTimeValues;
518 double TerminationTime;
519 double CurrentTimeValue;
523 int TerminationTimeStep;
527 int ForceReinjectionEveryNSteps;
533 char *ParticleFileName;
534 int EnableParticleWriting;
551 std::vector<bounds> CachedBounds[2];
574 unsigned int NumberOfParticles();
579 static const double Epsilon;
An abstract class for obtaining the interpolated velocity values at a point.
abstract class to write particle data to file
Proxy object to connect input/output ports.
object to represent cell connectivity
dynamic, self-adjusting array of char
abstract superclass for composite (multi-block or AMR) datasets
abstract superclass for arrays of numeric data
general representation of visualization data
abstract class to specify dataset behavior
dynamic, self-adjusting array of double
dynamic, self-adjusting array of float
provides thread-safe access to cells
a simple class to control print indentation
Integrate a set of ordinary differential equations (initial value problem) in time.
dynamic, self-adjusting array of int
Composite dataset that organizes datasets into blocks.
Multiprocessing communication superclass.
A particle tracer for vector fields.
vtkFloatArray * GetParticleVorticity(vtkPointData *)
double GetCacheDataTime()
void IntegrateParticle(vtkParticleTracerBaseNamespace::ParticleListIterator &it, double currenttime, double terminationtime, vtkInitialValueProblemSolver *integrator)
particle between the two times supplied.
vtkIntArray * GetInjectedPointIds(vtkPointData *)
vtkFloatArray * GetParticleAge(vtkPointData *)
void TestParticles(vtkParticleTracerBaseNamespace::ParticleVector &candidates, std::vector< int > &passed)
virtual void AddRestartSeeds(vtkInformationVector **)
For restarts of particle paths, we add in the ability to add in particles from a previous computation...
bool IsPointDataValid(vtkCompositeDataSet *input, std::vector< std::string > &arrayNames)
vtkIntArray * GetInjectedStepIds(vtkPointData *)
virtual bool UpdateParticleListFromOtherProcesses()
this is used during classification of seed points and also between iterations of the main loop as par...
virtual std::vector< vtkDataSet * > GetSeedSources(vtkInformationVector *inputVector, int timeStep)
Method to get the data set seed sources.
vtkIntArray * GetErrorCodeArr(vtkPointData *)
void UpdateParticleList(vtkParticleTracerBaseNamespace::ParticleVector &candidates)
and sending between processors, into a list, which is used as the master list on this processor
virtual void AppendToExtraPointDataArrays(vtkParticleTracerBaseNamespace::ParticleInformation &)
vtkFloatArray * GetParticleAngularVel(vtkPointData *)
double GetCacheDataTime(int i)
void TestParticles(vtkParticleTracerBaseNamespace::ParticleVector &candidates, vtkParticleTracerBaseNamespace::ParticleVector &passed, int &count)
inside our data.
void CalculateVorticity(vtkGenericCell *cell, double pcoords[3], vtkDoubleArray *cellVectors, double vorticity[3])
void CreateProtoPD(vtkDataObject *input)
virtual bool SendParticleToAnotherProcess(vtkParticleTracerBaseNamespace::ParticleInformation &, vtkParticleTracerBaseNamespace::ParticleInformation &, vtkPointData *)
vtkIntArray * GetParticleIds(vtkPointData *)
int UpdateDataCache(vtkDataObject *td)
void AddParticle(vtkParticleTracerBaseNamespace::ParticleInformation &info, double *velocity)
vtkFloatArray * GetParticleRotation(vtkPointData *)
void GetPointDataArrayNames(vtkDataSet *input, std::vector< std::string > &names)
virtual void AssignSeedsToProcessors(double time, vtkDataSet *source, int sourceID, int ptId, vtkParticleTracerBaseNamespace::ParticleVector &localSeedPoints, int &localAssignedCount)
all the injection/seed points according to which processor they belong to.
bool InsideBounds(double point[])
vtkCharArray * GetParticleSourceIds(vtkPointData *)
virtual bool IsPointDataValid(vtkDataObject *input)
Methods that check that the input arrays are ordered the same on all data sets.
vtkTemporalInterpolatedVelocityField * GetInterpolator()
virtual void InitializeExtraPointDataArrays(vtkPointData *vtkNotUsed(outputPD))
Methods to append values to existing point data arrays that may only be desired on specific concrete ...
bool ComputeDomainExitLocation(double pos[4], double p2[4], double intersection[4], vtkGenericCell *cell)
This is an old routine kept for possible future use.
virtual void ResetCache()
virtual void AssignUniqueIds(vtkParticleTracerBaseNamespace::ParticleVector &localSeedPoints)
give each one a uniqu ID.
virtual int OutputParticles(vtkPolyData *poly)=0
int InitializeInterpolator()
represent and manipulate point attribute data
represent and manipulate 3D points
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
Hold a reference to a vtkObjectBase instance.
A helper class for interpolating between times during particle tracing.
record modification and/or execution time
ParticleVector::iterator ParticleIterator
std::list< ParticleInformation > ParticleDataList
ParticleDataList::iterator ParticleListIterator
std::vector< ParticleInformation > ParticleVector
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.