/usr/include/paraview/vtkPParticleTracerBase.h is in paraview-dev 4.0.1-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkParticleTracerBase.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkParticleTracerBase - A parallel particle tracer for vector fields
// .SECTION Description
// vtkPParticleTracerBase is the base class for parallel filters that advect particles
// in a vector field. Note that the input vtkPointData structure must
// be identical on all datasets.
// .SECTION See Also
// vtkRibbonFilter vtkRuledSurfaceFilter vtkInitialValueProblemSolver
// vtkRungeKutta2 vtkRungeKutta4 vtkRungeKutta45 vtkStreamTracer
#ifndef __vtkPParticleTracerBase_h
#define __vtkPParticleTracerBase_h
#include "vtkSmartPointer.h" // For protected ivars.
#include "vtkParticleTracerBase.h"
//BTX
#include <vector> // STL Header
#include <list> // STL Header
//ETX
#include "vtkFiltersParallelFlowPathsModule.h" // For export macro
class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPParticleTracerBase : public vtkParticleTracerBase
{
public:
vtkTypeMacro(vtkPParticleTracerBase,vtkParticleTracerBase);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Set/Get the controller used when sending particles between processes
// The controller must be an instance of vtkMPIController.
virtual void SetController(vtkMultiProcessController* controller);
vtkGetObjectMacro(Controller, vtkMultiProcessController);
protected:
struct RemoteParticleInfo
{
vtkParticleTracerBaseNamespace::ParticleInformation Current;
vtkParticleTracerBaseNamespace::ParticleInformation Previous;
vtkSmartPointer<vtkPointData> PreviousPD;
};
typedef std::vector<RemoteParticleInfo> RemoteParticleVector;
vtkPParticleTracerBase();
~vtkPParticleTracerBase();
virtual int RequestUpdateExtent(vtkInformation* request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
//
// Generate output
//
virtual int RequestData(vtkInformation* request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
//
//BTX
virtual vtkPolyData* Execute(vtkInformationVector** inputVector);
virtual bool SendParticleToAnotherProcess(vtkParticleTracerBaseNamespace::ParticleInformation & info,
vtkParticleTracerBaseNamespace::ParticleInformation & previous,
vtkPointData*);
// Description : Before starting the particle trace, classify
// all the injection/seed points according to which processor
// they belong to. This saves us retesting at every injection time
// providing 1) The volumes are static, 2) the seed points are static
// If either are non static, then this step is skipped.
virtual void AssignSeedsToProcessors(double time,
vtkDataSet *source, int sourceID, int ptId,
vtkParticleTracerBaseNamespace::ParticleVector &LocalSeedPoints,
int &LocalAssignedCount);
// Description : once seeds have been assigned to a process, we
// give each one a uniqu ID. We need to use MPI to find out
// who is using which numbers.
virtual void AssignUniqueIds(
vtkParticleTracerBaseNamespace::ParticleVector &LocalSeedPoints);
// Description : Perform a GatherV operation on a vector of particles
// this is used during classification of seed points and also between iterations
// of the main loop as particles leave each processor domain
virtual void SendReceiveParticles(RemoteParticleVector &outofdomain, RemoteParticleVector &received);
void UpdateParticleListFromOtherProcesses();
// Description:
// Method that checks that the input arrays are ordered the
// same on all data sets. This needs to be true for all
// blocks in a composite data set as well as across all processes.
virtual bool IsPointDataValid(vtkDataObject* input);
//
//ETX
//
// MPI controller needed when running in parallel
vtkMultiProcessController* Controller;
// List used for transmitting between processors during parallel operation
RemoteParticleVector MPISendList;
int Rank;
int NumProcs;
RemoteParticleVector Tail; //this is to receive the "tails" of traces from other processes
private:
vtkPParticleTracerBase(const vtkPParticleTracerBase&); // Not implemented.
void operator=(const vtkPParticleTracerBase&); // Not implemented.
};
#endif
|