VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkTemporalStreamTracer.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00026 #ifndef vtkPTemporalStreamTracer_h 00027 #define vtkPTemporalStreamTracer_h 00028 00029 #include "vtkFiltersParallelFlowPathsModule.h" // For export macro 00030 #include "vtkSmartPointer.h" // For protected ivars. 00031 #include "vtkTemporalStreamTracer.h" 00032 00033 //BTX 00034 #include <vector> // STL Header 00035 #include <list> // STL Header 00036 //ETX 00037 00038 class vtkMultiProcessController; 00039 00040 class vtkMultiBlockDataSet; 00041 class vtkDataArray; 00042 class vtkDoubleArray; 00043 class vtkGenericCell; 00044 class vtkIntArray; 00045 class vtkTemporalInterpolatedVelocityField; 00046 class vtkPoints; 00047 class vtkCellArray; 00048 class vtkDoubleArray; 00049 class vtkFloatArray; 00050 class vtkIntArray; 00051 class vtkCharArray; 00052 class vtkAbstractParticleWriter; 00053 00054 class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPTemporalStreamTracer : public vtkTemporalStreamTracer 00055 { 00056 public: 00057 00058 vtkTypeMacro(vtkPTemporalStreamTracer,vtkTemporalStreamTracer); 00059 void PrintSelf(ostream& os, vtkIndent indent); 00060 00062 static vtkPTemporalStreamTracer *New(); 00063 00065 00067 virtual void SetController(vtkMultiProcessController* controller); 00068 vtkGetObjectMacro(Controller, vtkMultiProcessController); 00070 00071 protected: 00072 00073 vtkPTemporalStreamTracer(); 00074 ~vtkPTemporalStreamTracer(); 00075 00076 // 00077 // Generate output 00078 // 00079 virtual int RequestData(vtkInformation* request, 00080 vtkInformationVector** inputVector, 00081 vtkInformationVector* outputVector); 00082 00083 // 00084 //BTX 00085 // 00086 00088 00092 virtual void AssignSeedsToProcessors( 00093 vtkDataSet *source, int sourceID, int ptId, 00094 vtkTemporalStreamTracerNamespace::ParticleVector &LocalSeedPoints, 00095 int &LocalAssignedCount); 00097 00099 00101 virtual void AssignUniqueIds( 00102 vtkTemporalStreamTracerNamespace::ParticleVector &LocalSeedPoints); 00104 00106 00109 virtual void TransmitReceiveParticles( 00110 vtkTemporalStreamTracerNamespace::ParticleVector &outofdomain, 00111 vtkTemporalStreamTracerNamespace::ParticleVector &received, 00112 bool removeself); 00114 00115 void AddParticleToMPISendList( 00116 vtkTemporalStreamTracerNamespace::ParticleInformation &info); 00117 00118 // 00119 //ETX 00120 // 00121 00122 // MPI controller needed when running in parallel 00123 vtkMultiProcessController* Controller; 00124 00125 private: 00126 vtkPTemporalStreamTracer(const vtkPTemporalStreamTracer&); // Not implemented. 00127 void operator=(const vtkPTemporalStreamTracer&); // Not implemented. 00128 }; 00129 00130 #endif