00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkPStreamTracer_h
00027 #define __vtkPStreamTracer_h
00028
00029 #include "vtkStreamTracer.h"
00030
00031 #include "vtkSmartPointer.h"
00032 #include <vtkstd/vector>
00033
00034 class vtkInterpolatedVelocityField;
00035 class vtkMultiProcessController;
00036
00037 class VTK_PARALLEL_EXPORT vtkPStreamTracer : public vtkStreamTracer
00038 {
00039 public:
00040 vtkTypeRevisionMacro(vtkPStreamTracer,vtkStreamTracer);
00041 virtual void PrintSelf(ostream& os, vtkIndent indent);
00042
00044
00047 virtual void SetController(vtkMultiProcessController* controller);
00048 vtkGetObjectMacro(Controller, vtkMultiProcessController);
00050
00051 protected:
00052
00053 vtkPStreamTracer();
00054 ~vtkPStreamTracer();
00055
00056 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00057 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00058 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00059
00060 vtkMultiProcessController* Controller;
00061
00062 vtkInterpolatedVelocityField* Interpolator;
00063 void SetInterpolator(vtkInterpolatedVelocityField*);
00064
00065
00066 void SendCellPoint(vtkPolyData* data,
00067 vtkIdType streamId,
00068 vtkIdType idx,
00069 int sendToId);
00070 void ReceiveCellPoint(vtkPolyData* tomod, int streamId, vtkIdType idx);
00071 void SendFirstPoints(vtkPolyData *output);
00072 void ReceiveLastPoints(vtkPolyData *output);
00073 void MoveToNextSend(vtkPolyData *output);
00074
00075 virtual void ParallelIntegrate(vtkInformationVector **inputVector) = 0;
00076
00077 vtkDataArray* Seeds;
00078 vtkIdList* SeedIds;
00079 vtkIntArray* IntegrationDirections;
00080
00081
00082 typedef vtkstd::vector< vtkSmartPointer<vtkPolyData> > TmpOutputsType;
00083
00084
00085 TmpOutputsType TmpOutputs;
00086
00087 private:
00088 vtkPStreamTracer(const vtkPStreamTracer&);
00089 void operator=(const vtkPStreamTracer&);
00090 };
00091
00092
00093 #endif
00094
00095