46 #include "vtkFiltersParallelModule.h"
120 vtkGetMacro(RegionAssignment,
int);
157 {
return this->RegionAssignmentMap; }
163 vtkGetMacro(RegionAssignmentMapLength,
int);
327 int RegionAssignment;
333 static char *StrDupWithNew(
const char *s);
341 int *RegionAssignmentMap;
342 int RegionAssignmentMapLength;
343 int **ProcessAssignmentMap;
344 int *NumRegionsAssigned;
346 int UpdateRegionAssignment();
351 char *DataLocationMap;
353 int *NumProcessesInRegion;
356 int *NumRegionsInProcess;
363 double *PointDataMin;
364 double *PointDataMax;
366 char **PointDataName;
372 int BuildGlobalIndexLists(
vtkIdType ncells);
382 int _whoHas(
int L,
int R,
int pos);
383 float *GetLocalVal(
int pos);
384 float *GetLocalValNext(
int pos);
385 void SetLocalVal(
int pos,
float *val);
386 void ExchangeVals(
int pos1,
int pos2);
387 void ExchangeLocalVals(
int pos1,
int pos2);
391 float *CurrentPtArray;
399 int AllCheckForFailure(
int rc,
const char *where,
const char *how);
400 void AllCheckParameters();
407 bool VolumeBounds(
double*);
409 int BreadthFirstDivide(
double *bounds);
413 int Select(
int dim,
int L,
int R);
414 void _select(
int L,
int R,
int K,
int dim);
415 void DoTransfer(
int from,
int to,
int fromIndex,
int toIndex,
int count);
417 int *PartitionAboutMyValue(
int L,
int R,
int K,
int dim);
418 int *PartitionAboutOtherValue(
int L,
int R,
float T,
int dim);
419 int *PartitionSubArray(
int L,
int R,
int K,
int dim,
int p1,
int p2);
422 #ifdef YIELDS_INCONSISTENT_REGION_BOUNDARIES
423 void RetrieveData(
vtkKdNode *kd,
int *buf);
425 void ReduceData(
vtkKdNode *kd,
int *sources);
429 float *DataBounds(
int L,
int K,
int R);
430 void GetLocalMinMax(
int L,
int R,
int me,
float *min,
float *
max);
436 static void CheckFixRegionBoundaries(
vtkKdNode *tree);
440 int AllocateDoubleBuffer();
441 void FreeDoubleBuffer();
442 void SwitchDoubleBuffer();
443 int AllocateSelectBuffer();
444 void FreeSelectBuffer();
446 void InitializeGlobalIndexLists();
447 int AllocateAndZeroGlobalIndexLists();
448 void FreeGlobalIndexLists();
449 void InitializeRegionAssignmentLists();
450 int AllocateAndZeroRegionAssignmentLists();
451 void FreeRegionAssignmentLists();
452 void InitializeProcessDataLists();
453 int AllocateAndZeroProcessDataLists();
454 void FreeProcessDataLists();
455 void InitializeFieldArrayMinMax();
456 int AllocateAndZeroFieldArrayMinMax();
457 void FreeFieldArrayMinMax();
459 void ReleaseTables();
463 void AddProcessRegions(
int procId,
vtkKdNode *kd);
464 void BuildRegionListsForProcesses();
468 int *CollectLocalRegionProcessData();
469 int BuildRegionProcessTables();
470 int BuildFieldArrayMinMax();
471 void AddEntry(
int *list,
int len,
int id);
472 #ifdef VTK_USE_64BIT_IDS
477 static int FindNextLocalArrayIndex(
const char *n,
const char **names,
int len,
int start=0);
Used to send/receive messages in a multiprocess environment.
abstract class to specify dataset behavior
list of point or cell ids
a simple class to control print indentation
dynamic, self-adjusting array of int
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning.
a Kd-tree spatial decomposition of a set of points
int DivideRegion(vtkKdNode *kd, float *c1, int *ids, int nlevels)
void operator=(const vtkKdTree &) VTK_DELETE_FUNCTION
static int Select(int dim, float *c1, int *ids, int nvals, double &coord)
Multiprocessing communication superclass.
Build a k-d tree decomposition of a list of points.
int ViewOrderAllProcessesFromPosition(const double cameraPosition[3], vtkIntArray *orderedList)
Return a list of all processes in order from front to back given a camera position.
vtkIdType GetTotalNumberOfCells()
Get the total number of cells distributed across the data files read by all processes.
int GetCellArrayGlobalRange(const char *name, float range[2])
An added feature of vtkPKdTree is that it will calculate the the global range of field arrays across ...
int GetPointArrayGlobalRange(const char *name, float range[2])
int CreateProcessCellCountData()
Create tables of counts of cells per process per region.
static const int ContiguousAssignment
int GetPointArrayGlobalRange(int arrayIndex, double range[2])
int GetTotalProcessesInRegion(int regionId)
Returns the total number of processes that have data falling within this spatial region.
int GetRegionsCellCountForProcess(int ProcessId, int *count, int len)
Writes to the supplied integer array the number of cells this process has for each region.
int AssignRegionsContiguous()
Let the PKdTree class assign a process to each region by assigning contiguous sets of spatial regions...
int MultiProcessBuildLocator(double *bounds)
int GetRegionListForProcess(int processId, vtkIntArray *regions)
Adds the region IDs for which this process has data to the supplied vtkIntArray.
void SetController(vtkMultiProcessController *c)
Set/Get the communicator object.
int GetCellArrayGlobalRange(int arrayIndex, float range[2])
int GetRegionAssignmentList(int procId, vtkIntArray *list)
Writes the list of region IDs assigned to the specified process.
int GetPointArrayGlobalRange(const char *name, double range[2])
vtkIdType GetCellListsForProcessRegions(int ProcessId, vtkDataSet *set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
int ViewOrderAllProcessesInDirection(const double directionOfProjection[3], vtkIntArray *orderedList)
Return a list of all processes in order from front to back given a vector direction of projection.
int AssignRegions(int *map, int numRegions)
Assign spatial regions to processes via a user defined map.
void BuildLocator()
Build the spatial decomposition.
void PrintTables(ostream &os, vtkIndent indent)
int HasData(int processId, int regionId)
Returns 1 if the process has data for the given region, 0 otherwise.
int GetProcessCellCountForRegion(int processId, int regionId)
Returns the number of cells the specified process has in the specified region.
int GetTotalRegionsForProcess(int processId)
Returns the total number of spatial regions that a given process has data for.
int GetProcessesCellCountForRegion(int regionId, int *count, int len)
Writes the number of cells each process has for the region to the supplied list of length len.
int GetPointArrayGlobalRange(int arrayIndex, float range[2])
void SingleProcessBuildLocator()
const int * GetRegionAssignmentMap()
Returns the region assignment map where index is the region and value is the processes id for that re...
int GetCellArrayGlobalRange(const char *name, double range[2])
static const int UserDefinedAssignment
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
static vtkPKdTree * New()
static const int RoundRobinAssignment
vtkIdType GetCellListsForProcessRegions(int ProcessId, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
static const int NoRegionAssignment
int GetProcessAssignedToRegion(int regionId)
Returns the ID of the process assigned to the region.
void GetAllProcessesBorderingOnPoint(float x, float y, float z, vtkIntArray *list)
The k-d tree spatial regions have been assigned to processes.
int GetCellArrayGlobalRange(int arrayIndex, double range[2])
int AssignRegionsRoundRobin()
Let the PKdTree class assign a process to each region in a round robin fashion.
int CreateGlobalDataArrayBounds()
A convenience function which compiles the global bounds of the data arrays across processes.
int GetProcessListForRegion(int regionId, vtkIntArray *processes)
Adds the list of processes having data for the given region to the supplied list, returns the number ...
void PrintTiming(ostream &os, vtkIndent indent)
Print timing of k-d tree build.
vtkIdType GetCellListsForProcessRegions(int ProcessId, int set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
After regions have been assigned to processes, I may want to know which cells I have that are in the ...
scalable collective communication for a subset of members of a parallel VTK application