62 void PrintTables(ostream& os,
vtkIndent indent);
81 int CreateProcessCellCountData();
88 int CreateGlobalDataArrayBounds();
104 vtkGetMacro(RegionAssignment,
int);
115 int AssignRegions(
int *map,
int numRegions);
120 int AssignRegionsRoundRobin();
127 int AssignRegionsContiguous();
133 {
return this->RegionAssignmentMap; }
138 vtkGetMacro(RegionAssignmentMapLength,
int);
144 int GetRegionAssignmentList(
int procId,
vtkIntArray *list);
152 void GetAllProcessesBorderingOnPoint(
float x,
float y,
float z,
157 int GetProcessAssignedToRegion(
int regionId);
160 int HasData(
int processId,
int regionId);
164 int GetProcessCellCountForRegion(
int processId,
int regionId);
168 int GetTotalProcessesInRegion(
int regionId);
172 int GetProcessListForRegion(
int regionId,
vtkIntArray *processes);
178 int GetProcessesCellCountForRegion(
int regionId,
int *count,
int len);
182 int GetTotalRegionsForProcess(
int processId);
186 int GetRegionListForProcess(
int processId,
vtkIntArray *regions);
192 int GetRegionsCellCountForProcess(
int ProcessId,
int *count,
int len);
212 vtkIdType GetCellListsForProcessRegions(
int ProcessId,
int set,
216 vtkIdType GetCellListsForProcessRegions(
int ProcessId,
227 int ViewOrderAllProcessesInDirection(
const double directionOfProjection[3],
237 int ViewOrderAllProcessesFromPosition(
const double cameraPosition[3],
246 int GetCellArrayGlobalRange(
const char *
name,
float range[2]);
247 int GetPointArrayGlobalRange(
const char *
name,
float range[2]);
248 int GetCellArrayGlobalRange(
const char *
name,
double range[2]);
249 int GetPointArrayGlobalRange(
const char *
name,
double range[2]);
251 int GetCellArrayGlobalRange(
int arrayIndex,
double range[2]);
252 int GetPointArrayGlobalRange(
int arrayIndex,
double range[2]);
253 int GetCellArrayGlobalRange(
int arrayIndex,
float range[2]);
254 int GetPointArrayGlobalRange(
int arrayIndex,
float range[2]);
261 void SingleProcessBuildLocator();
262 int MultiProcessBuildLocator(
double *bounds);
266 int RegionAssignment;
272 static char *StrDupWithNew(
const char *s);
280 int *RegionAssignmentMap;
281 int RegionAssignmentMapLength;
282 int **ProcessAssignmentMap;
283 int *NumRegionsAssigned;
285 int UpdateRegionAssignment();
290 char *DataLocationMap;
292 int *NumProcessesInRegion;
295 int *NumRegionsInProcess;
302 double *PointDataMin;
303 double *PointDataMax;
305 char **PointDataName;
311 int BuildGlobalIndexLists(
vtkIdType ncells);
321 int _whoHas(
int L,
int R,
int pos);
322 float *GetLocalVal(
int pos);
323 float *GetLocalValNext(
int pos);
324 void SetLocalVal(
int pos,
float *val);
325 void ExchangeVals(
int pos1,
int pos2);
326 void ExchangeLocalVals(
int pos1,
int pos2);
330 float *CurrentPtArray;
338 int AllCheckForFailure(
int rc,
const char *where,
const char *how);
339 void AllCheckParameters();
344 bool VolumeBounds(
double*);
346 int BreadthFirstDivide(
double *bounds);
350 int Select(
int dim,
int L,
int R);
351 void _select(
int L,
int R,
int K,
int dim);
352 void DoTransfer(
int from,
int to,
int fromIndex,
int toIndex,
int count);
354 int *PartitionAboutMyValue(
int L,
int R,
int K,
int dim);
355 int *PartitionAboutOtherValue(
int L,
int R,
float T,
int dim);
356 int *PartitionSubArray(
int L,
int R,
int K,
int dim,
int p1,
int p2);
359 #ifdef YIELDS_INCONSISTENT_REGION_BOUNDARIES
360 void RetrieveData(
vtkKdNode *kd,
int *buf);
362 void ReduceData(
vtkKdNode *kd,
int *sources);
366 float *DataBounds(
int L,
int K,
int R);
367 void GetLocalMinMax(
int L,
int R,
int me,
float *min,
float *
max);
373 static void CheckFixRegionBoundaries(
vtkKdNode *tree);
377 int AllocateDoubleBuffer();
378 void FreeDoubleBuffer();
379 void SwitchDoubleBuffer();
380 int AllocateSelectBuffer();
381 void FreeSelectBuffer();
383 void InitializeGlobalIndexLists();
384 int AllocateAndZeroGlobalIndexLists();
385 void FreeGlobalIndexLists();
386 void InitializeRegionAssignmentLists();
387 int AllocateAndZeroRegionAssignmentLists();
388 void FreeRegionAssignmentLists();
389 void InitializeProcessDataLists();
390 int AllocateAndZeroProcessDataLists();
391 void FreeProcessDataLists();
392 void InitializeFieldArrayMinMax();
393 int AllocateAndZeroFieldArrayMinMax();
394 void FreeFieldArrayMinMax();
396 void ReleaseTables();
400 void AddProcessRegions(
int procId,
vtkKdNode *kd);
401 void BuildRegionListsForProcesses();
405 int *CollectLocalRegionProcessData();
406 int BuildRegionProcessTables();
407 int BuildFieldArrayMinMax();
408 void AddEntry(
int *list,
int len,
int id);
409 #ifdef VTK_USE_64BIT_IDS
414 static int FindNextLocalArrayIndex(
const char *n,
const char **names,
int len,
int start=0);
int DivideRegion(vtkKdNode *kd, float *c1, int *ids, int nlevels)
static const int RoundRobinAssignment
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning...
const int * GetRegionAssignmentMap()
Build a k-d tree decomposition of a list of points.
abstract class to specify dataset behavior
vtkIdType GetTotalNumberOfCells()
#define VTKFILTERSPARALLEL_EXPORT
void operator=(const vtkKdTree &)
dynamic, self-adjusting array of int
a simple class to control print indentation
list of point or cell ids
static const int ContiguousAssignment
static int Select(int dim, float *c1, int *ids, int nvals, double &coord)
virtual void PrintTiming(ostream &os, vtkIndent indent)
scalable collective communication for a subset of members of a parallel VTK application ...
static const int NoRegionAssignment
a Kd-tree spatial decomposition of a set of points
static const int UserDefinedAssignment
Used to send/receive messages in a multiprocess environment.
void PrintSelf(ostream &os, vtkIndent indent)
Multiprocessing communication superclass.