ParaView
vtkRedistributePolyData.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkRedistributePolyData.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*----------------------------------------------------------------------------
16  Copyright (c) Los Alamos National Laboratory
17  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 
26 #ifndef vtkRedistributePolyData_h
27 #define vtkRedistributePolyData_h
28 
29 #include "vtkPVVTKExtensionsRenderingModule.h" // needed for export macro
30 #include "vtkPolyDataAlgorithm.h"
31 
32 //*******************************************************************
33 class vtkDataArray;
34 class vtkDataSetAttributes;
35 class vtkMultiProcessController;
36 class vtkSocketController;
37 
38 class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkRedistributePolyData : public vtkPolyDataAlgorithm
39 {
40 public:
41  vtkTypeMacro(vtkRedistributePolyData, vtkPolyDataAlgorithm);
42  void PrintSelf(ostream& os, vtkIndent indent);
43 
44  static vtkRedistributePolyData* New();
45 
49  virtual void SetController(vtkMultiProcessController*);
50  vtkGetObjectMacro(Controller, vtkMultiProcessController);
51 
52  vtkGetMacro(ColorProc, int);
53  vtkSetMacro(ColorProc, int);
54  void SetColorProc() { this->ColorProc = 1; };
55 
57 
60  virtual void SetSocketController(vtkSocketController*){};
61  virtual void SetPassThrough(int){};
62  virtual int GetPassThrough() { return 0; };
63  vtkBooleanMacro(PassThrough, int);
65 
66 protected:
69 
70  enum
71  {
72  CELL_ID_TAG = 10,
73  POINT_COORDS_TAG = 20,
74  NUM_POINTS_TAG = 30,
75  NUM_CELLS_TAG = 40,
76  BOUNDS_TAG = 60,
77  CNT_SEND_TAG = 80,
78  CNT_REC_TAG = 90,
79  SEND_PROC_TAG = 100,
80  SEND_NUM_TAG = 110,
81  REC_PROC_TAG = 120,
82  REC_NUM_TAG = 130,
83  NUM_CURR_CELLS_TAG = 140,
84 
85  CELL_CNT_TAG = 150,
86  CELL_TAG = 160,
87  POINTS_SIZE_TAG = 170,
88  POINTS_TAG = 180
89  };
90 
91  class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkCommSched
92  {
93  public:
94  vtkCommSched();
95  ~vtkCommSched();
96 
97  int SendCount;
99  int* SendTo;
101  vtkIdType* NumberOfCells;
102  vtkIdType** SendNumber;
103  vtkIdType** ReceiveNumber;
104 
105  vtkIdType*** SendCellList;
106  vtkIdType** KeepCellList;
107 
108  private:
109  vtkCommSched(const vtkCommSched&) VTK_DELETE_FUNCTION;
110  void operator=(const vtkCommSched&) VTK_DELETE_FUNCTION;
111  };
112 
113  virtual void MakeSchedule(vtkPolyData* input, vtkCommSched*);
114  void OrderSchedule(vtkCommSched*);
115 
116  void SendCellSizes(
117  vtkIdType*, vtkIdType*, vtkPolyData*, int, vtkIdType&, vtkIdType*, vtkIdType**);
118  void CopyCells(vtkIdType*, vtkPolyData*, vtkPolyData*, vtkIdType**);
119  void SendCells(
120  vtkIdType*, vtkIdType*, vtkPolyData*, vtkPolyData*, int, vtkIdType&, vtkIdType*, vtkIdType**);
121  void ReceiveCells(
122  vtkIdType*, vtkIdType*, vtkPolyData*, int, vtkIdType*, vtkIdType*, vtkIdType, vtkIdType);
123 
124  void FindMemReq(vtkIdType*, vtkPolyData*, vtkIdType&, vtkIdType*);
125 
126  void AllocateCellDataArrays(vtkDataSetAttributes*, vtkIdType**, int, vtkIdType*);
127  void AllocatePointDataArrays(vtkDataSetAttributes*, vtkIdType*, int, vtkIdType);
128  void AllocateArrays(vtkDataArray*, vtkIdType);
129 
130  void CopyDataArrays(vtkDataSetAttributes*, vtkDataSetAttributes*, vtkIdType, vtkIdType*, int);
131 
132  void CopyCellBlockDataArrays(
133  vtkDataSetAttributes*, vtkDataSetAttributes*, vtkIdType, vtkIdType, vtkIdType, vtkIdType, int);
134 
135  void CopyArrays(vtkDataArray*, vtkDataArray*, vtkIdType, vtkIdType*, int);
136 
137  void CopyBlockArrays(
138  vtkDataArray*, vtkDataArray*, vtkIdType, vtkIdType, vtkIdType, vtkIdType, int);
139 
140  void SendDataArrays(
141  vtkDataSetAttributes*, vtkDataSetAttributes*, vtkIdType, int, vtkIdType*, int);
142 
143  void SendCellBlockDataArrays(
144  vtkDataSetAttributes*, vtkDataSetAttributes*, vtkIdType, int, vtkIdType, int);
145 
146  void SendArrays(vtkDataArray*, vtkIdType, int, vtkIdType*, int);
147 
148  void SendBlockArrays(vtkDataArray*, vtkIdType, int, vtkIdType, int);
149 
150  void ReceiveDataArrays(vtkDataSetAttributes*, vtkIdType, int, vtkIdType*, int);
151 
152  void ReceiveArrays(vtkDataArray*, vtkIdType, int, vtkIdType*, int);
153 
154  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
155  vtkInformationVector* outputVector);
156 
157  // Do this as a proprocessing step.
158  void CompleteInputArrays(vtkPolyData* input);
159  void ReceiveInputArrays(vtkDataSetAttributes* attr, int recFrom);
160  void SendInputArrays(vtkDataSetAttributes* attr, int sendTo);
161  int DoubleCheckArrays(vtkPolyData* input);
162 
163  vtkMultiProcessController* Controller;
164 
165  int ColorProc; // Set to 1 to color data according to processor
166 
167 private:
168  vtkRedistributePolyData(const vtkRedistributePolyData&) VTK_DELETE_FUNCTION;
169  void operator=(const vtkRedistributePolyData&) VTK_DELETE_FUNCTION;
170 };
171 
172 //****************************************************************
173 
174 #endif
redistribute poly cells from other processes (special version to color according to processor) ...
virtual void SetPassThrough(int)
These are here for ParaView compatibility.
virtual void SetSocketController(vtkSocketController *)
These are here for ParaView compatibility.
virtual int GetPassThrough()
These are here for ParaView compatibility.