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 RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00067 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00068 00069 vtkMultiProcessController* Controller; 00070 00071 vtkAbstractInterpolatedVelocityField* Interpolator; 00072 void SetInterpolator(vtkAbstractInterpolatedVelocityField*); 00073 00074 int EmptyData; 00075 private: 00076 vtkPStreamTracer(const vtkPStreamTracer&); // Not implemented. 00077 void operator=(const vtkPStreamTracer&); // Not implemented. 00078 00079 void Trace( vtkDataSet *input, 00080 int vecType, 00081 const char* vecName, 00082 PStreamTracerPoint* pt, 00083 vtkSmartPointer<vtkPolyData>& output, 00084 vtkAbstractInterpolatedVelocityField* func, 00085 int maxCellSize); 00086 00087 bool TraceOneStep(vtkPolyData* traceOut, vtkAbstractInterpolatedVelocityField*, PStreamTracerPoint* pt); 00088 00089 void Prepend(vtkPolyData* path, vtkPolyData* headh); 00090 int Rank; 00091 int NumProcs; 00092 00093 friend class AbstractPStreamTracerUtils; 00094 vtkSmartPointer<AbstractPStreamTracerUtils> Utils; 00095 }; 00096 #endif