VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkPStreamTracer.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 =========================================================================*/ 00029 #ifndef vtkPStreamTracer_h 00030 #define vtkPStreamTracer_h 00031 00032 #include "vtkStreamTracer.h" 00033 #include "vtkSmartPointer.h" // This is a leaf node. No need to use PIMPL to avoid compile time penalty. 00034 00035 class vtkAbstractInterpolatedVelocityField; 00036 class vtkMultiProcessController; 00037 00038 class PStreamTracerPoint; 00039 class vtkOverlappingAMR; 00040 class AbstractPStreamTracerUtils; 00041 00042 #include "vtkFiltersParallelFlowPathsModule.h" // For export macro 00043 00044 class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPStreamTracer : public vtkStreamTracer 00045 { 00046 public: 00047 vtkTypeMacro(vtkPStreamTracer,vtkStreamTracer); 00048 virtual void PrintSelf(ostream& os, vtkIndent indent); 00049 00051 00054 virtual void SetController(vtkMultiProcessController* controller); 00055 vtkGetObjectMacro(Controller, vtkMultiProcessController); 00057 00058 static vtkPStreamTracer * New(); 00059 00060 protected: 00061 00062 vtkPStreamTracer(); 00063 ~vtkPStreamTracer(); 00064 00065 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00066 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00067 00068 vtkMultiProcessController* Controller; 00069 00070 vtkAbstractInterpolatedVelocityField* Interpolator; 00071 void SetInterpolator(vtkAbstractInterpolatedVelocityField*); 00072 00073 int EmptyData; 00074 private: 00075 vtkPStreamTracer(const vtkPStreamTracer&); // Not implemented. 00076 void operator=(const vtkPStreamTracer&); // Not implemented. 00077 00078 void Trace( vtkDataSet *input, 00079 int vecType, 00080 const char* vecName, 00081 PStreamTracerPoint* pt, 00082 vtkSmartPointer<vtkPolyData>& output, 00083 vtkAbstractInterpolatedVelocityField* func, 00084 int maxCellSize); 00085 00086 bool TraceOneStep(vtkPolyData* traceOut, vtkAbstractInterpolatedVelocityField*, PStreamTracerPoint* pt); 00087 00088 void Prepend(vtkPolyData* path, vtkPolyData* headh); 00089 int Rank; 00090 int NumProcs; 00091 00092 friend class AbstractPStreamTracerUtils; 00093 vtkSmartPointer<AbstractPStreamTracerUtils> Utils; 00094 }; 00095 #endif