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.
static vtkPKdTree * New()
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()
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 const int RoundRobinAssignment
vtkIdType GetCellListsForProcessRegions(int ProcessId, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
static const int NoRegionAssignment
const int * GetRegionAssignmentMap()
Returns the region assignment map where index is the region and value is the processes id for that re...
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