42 #ifndef __vtkPKdTree_h
43 #define __vtkPKdTree_h
61 void PrintTables(ostream& os,
vtkIndent indent);
80 int CreateProcessCellCountData();
87 int CreateGlobalDataArrayBounds();
103 vtkGetMacro(RegionAssignment,
int);
114 int AssignRegions(
int *map,
int numRegions);
119 int AssignRegionsRoundRobin();
126 int AssignRegionsContiguous();
131 const int* GetRegionAssignmentMap()
132 {
return this->RegionAssignmentMap; }
137 vtkGetMacro(RegionAssignmentMapLength,
int);
143 int GetRegionAssignmentList(
int procId,
vtkIntArray *list);
151 void GetAllProcessesBorderingOnPoint(
float x,
float y,
float z,
156 int GetProcessAssignedToRegion(
int regionId);
159 int HasData(
int processId,
int regionId);
163 int GetProcessCellCountForRegion(
int processId,
int regionId);
167 int GetTotalProcessesInRegion(
int regionId);
171 int GetProcessListForRegion(
int regionId,
vtkIntArray *processes);
177 int GetProcessesCellCountForRegion(
int regionId,
int *count,
int len);
181 int GetTotalRegionsForProcess(
int processId);
185 int GetRegionListForProcess(
int processId,
vtkIntArray *regions);
191 int GetRegionsCellCountForProcess(
int ProcessId,
int *count,
int len);
211 vtkIdType GetCellListsForProcessRegions(
int ProcessId,
int set,
215 vtkIdType GetCellListsForProcessRegions(
int ProcessId,
224 VTK_LEGACY(
int DepthOrderAllProcesses(
double *directionOfProjection,
234 int ViewOrderAllProcessesInDirection(
const double directionOfProjection[3],
244 int ViewOrderAllProcessesFromPosition(
const double cameraPosition[3],
253 int GetCellArrayGlobalRange(
const char *
name,
float range[2]);
254 int GetPointArrayGlobalRange(
const char *
name,
float range[2]);
255 int GetCellArrayGlobalRange(
const char *
name,
double range[2]);
256 int GetPointArrayGlobalRange(
const char *
name,
double range[2]);
258 int GetCellArrayGlobalRange(
int arrayIndex,
double range[2]);
259 int GetPointArrayGlobalRange(
int arrayIndex,
double range[2]);
260 int GetCellArrayGlobalRange(
int arrayIndex,
float range[2]);
261 int GetPointArrayGlobalRange(
int arrayIndex,
float range[2]);
268 void SingleProcessBuildLocator();
269 int MultiProcessBuildLocator(
double *bounds);
273 int RegionAssignment;
279 static char *StrDupWithNew(
const char *s);
287 int *RegionAssignmentMap;
288 int RegionAssignmentMapLength;
289 int **ProcessAssignmentMap;
290 int *NumRegionsAssigned;
292 int UpdateRegionAssignment();
297 char *DataLocationMap;
299 int *NumProcessesInRegion;
302 int *NumRegionsInProcess;
309 double *PointDataMin;
310 double *PointDataMax;
312 char **PointDataName;
318 int BuildGlobalIndexLists(
vtkIdType ncells);
328 int _whoHas(
int L,
int R,
int pos);
329 float *GetLocalVal(
int pos);
330 float *GetLocalValNext(
int pos);
331 void SetLocalVal(
int pos,
float *val);
332 void ExchangeVals(
int pos1,
int pos2);
333 void ExchangeLocalVals(
int pos1,
int pos2);
337 float *CurrentPtArray;
345 int AllCheckForFailure(
int rc,
const char *where,
const char *how);
346 void AllCheckParameters();
351 bool VolumeBounds(
double*);
353 int BreadthFirstDivide(
double *bounds);
357 int Select(
int dim,
int L,
int R);
358 void _select(
int L,
int R,
int K,
int dim);
359 void DoTransfer(
int from,
int to,
int fromIndex,
int toIndex,
int count);
361 int *PartitionAboutMyValue(
int L,
int R,
int K,
int dim);
362 int *PartitionAboutOtherValue(
int L,
int R,
float T,
int dim);
363 int *PartitionSubArray(
int L,
int R,
int K,
int dim,
int p1,
int p2);
366 #ifdef YIELDS_INCONSISTENT_REGION_BOUNDARIES
367 void RetrieveData(
vtkKdNode *kd,
int *buf);
369 void ReduceData(
vtkKdNode *kd,
int *sources);
373 float *DataBounds(
int L,
int K,
int R);
374 void GetLocalMinMax(
int L,
int R,
int me,
float *min,
float *
max);
380 static void CheckFixRegionBoundaries(
vtkKdNode *tree);
384 int AllocateDoubleBuffer();
385 void FreeDoubleBuffer();
386 void SwitchDoubleBuffer();
387 int AllocateSelectBuffer();
388 void FreeSelectBuffer();
390 void InitializeGlobalIndexLists();
391 int AllocateAndZeroGlobalIndexLists();
392 void FreeGlobalIndexLists();
393 void InitializeRegionAssignmentLists();
394 int AllocateAndZeroRegionAssignmentLists();
395 void FreeRegionAssignmentLists();
396 void InitializeProcessDataLists();
397 int AllocateAndZeroProcessDataLists();
398 void FreeProcessDataLists();
399 void InitializeFieldArrayMinMax();
400 int AllocateAndZeroFieldArrayMinMax();
401 void FreeFieldArrayMinMax();
403 void ReleaseTables();
407 void AddProcessRegions(
int procId,
vtkKdNode *kd);
408 void BuildRegionListsForProcesses();
412 int *CollectLocalRegionProcessData();
413 int BuildRegionProcessTables();
414 int BuildFieldArrayMinMax();
415 void AddEntry(
int *list,
int len,
int id);
416 #ifdef VTK_USE_64BIT_IDS
421 static int FindNextLocalArrayIndex(
const char *n,
const char **names,
int len,
int start=0);