VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Filters/ParallelFlowPaths/vtkPStreamTracer.h
Go to the documentation of this file.
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