Section: Visualization Toolkit Parallel Classes
This class can also assign spatial regions to processors, based on one of several region assignment schemes. By default a contiguous, convex region is assigned to each process. Several queries return information about how many and what cells I have that lie in a region assigned to another process.
To create an instance of class vtkPKdTree, simply invoke its constructor as follows
obj = vtkPKdTree
obj
is an instance of the vtkPKdTree class.
string = obj.GetClassName ()
int = obj.IsA (string name)
vtkPKdTree = obj.NewInstance ()
vtkPKdTree = obj.SafeDownCast (vtkObject o)
obj.BuildLocator ()
- Build the spatial decomposition. Call this explicitly
after changing any parameters affecting the build of the
tree. It must be called by all processes in the parallel
application, or it will hang.
vtkIdType = obj.GetTotalNumberOfCells ()
- Create tables of counts of cells per process per region.
These tables can be accessed with queries like
"HasData", "GetProcessCellCountForRegion", and so on.
You must have called BuildLocator() beforehand. This
method must be called by all processes or it will hang.
Returns 1 on error, 0 when no error.
int = obj.CreateProcessCellCountData ()
- Create tables of counts of cells per process per region.
These tables can be accessed with queries like
"HasData", "GetProcessCellCountForRegion", and so on.
You must have called BuildLocator() beforehand. This
method must be called by all processes or it will hang.
Returns 1 on error, 0 when no error.
int = obj.CreateGlobalDataArrayBounds ()
- A convenience function which compiles the global
bounds of the data arrays across processes.
These bounds can be accessed with
"GetCellArrayGlobalRange" and "GetPointArrayGlobalRange".
This method must be called by all processes or it will hang.
Returns 1 on error, 0 when no error.
obj.SetController (vtkMultiProcessController c)
- Set/Get the communicator object
vtkMultiProcessController = obj.GetController ()
- Set/Get the communicator object
int = obj.GetRegionAssignment ()
- The PKdTree class can assign spatial regions to processors after
building the k-d tree, using one of several partitioning criteria.
These functions Set/Get whether this assignment is computed.
The default is "Off", no assignment is computed. If "On", and
no assignment scheme is specified, contiguous assignment will be
computed. Specifying an assignment scheme (with AssignRegions*())
automatically turns on RegionAssignment.
int = obj.AssignRegions (int map, int numRegions)
- Assign spatial regions to processes via a user defined map.
The user-supplied map is indexed by region ID, and provides a
process ID for each region.
int = obj.AssignRegionsRoundRobin ()
- Let the PKdTree class assign a process to each region in a
round robin fashion. If the k-d tree has not yet been
built, the regions will be assigned after BuildLocator executes.
int = obj.AssignRegionsContiguous ()
- Let the PKdTree class assign a process to each region
by assigning contiguous sets of spatial regions to each
process. The set of regions assigned to each process will
always have a union that is a convex space (a box).
If the k-d tree has not yet been built, the regions
will be assigned after BuildLocator executes.
int = obj.GetRegionAssignmentList (int procId, vtkIntArray list)
- Writes the list of region IDs assigned to the specified
process. Regions IDs start at 0 and increase by 1 from there.
Returns the number of regions in the list.
obj.GetAllProcessesBorderingOnPoint (float x, float y, float z, vtkIntArray list)
- The k-d tree spatial regions have been assigned to processes.
Given a point on the boundary of one of the regions, this
method creates a list of all processes whose region
boundaries include that point. This may be required when
looking for processes that have cells adjacent to the cells
of a given process.
int = obj.GetProcessAssignedToRegion (int regionId)
- Returns the ID of the process assigned to the region.
int = obj.HasData (int processId, int regionId)
- Returns 1 if the process has data for the given region,
0 otherwise.
int = obj.GetProcessCellCountForRegion (int processId, int regionId)
- Returns the number of cells the specified process has in the
specified region.
int = obj.GetTotalProcessesInRegion (int regionId)
- Returns the total number of processes that have data
falling within this spatial region.
int = obj.GetProcessListForRegion (int regionId, vtkIntArray processes)
- Adds the list of processes having data for the given
region to the supplied list, returns the number of
processes added.
int = obj.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. Returns the number of
cell counts written. The order of the cell counts corresponds
to the order of process IDs in the process list returned by
GetProcessListForRegion.
int = obj.GetTotalRegionsForProcess (int processId)
- Returns the total number of spatial regions that a given
process has data for.
int = obj.GetRegionListForProcess (int processId, vtkIntArray regions)
- Adds the region IDs for which this process has data to
the supplied vtkIntArray. Retruns the number of regions.
int = obj.GetRegionsCellCountForProcess (int ProcessId, int count, int len)
- Writes to the supplied integer array the number of cells this
process has for each region. Returns the number of
cell counts written. The order of the cell counts corresponds
to the order of region IDs in the region list returned by
GetRegionListForProcess.
vtkIdType = obj.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 regions assigned to a particular
process.
This method takes a process ID and two vtkIdLists. It
writes to the first list the IDs of the cells
contained in the process' regions. (That is, their cell
centroid is contained in the region.) To the second list it
write the IDs of the cells which intersect the process' regions
but whose cell centroid lies elsewhere.
The total number of cell IDs written to both lists is returned.
Either list pointer passed in can be NULL, and it will be ignored.
If there are multiple data sets, you must specify which data set
you wish cell IDs for.
The caller should delete these two lists when done. This method
uses the cell lists created in vtkKdTree::CreateCellLists().
If the cell lists for the process' regions do not exist, this
method will first build the cell lists for all regions by calling
CreateCellLists(). You must remember to DeleteCellLists() when
done with all calls to this method, as cell lists can require a
great deal of memory.
vtkIdType = obj.GetCellListsForProcessRegions (int ProcessId, vtkDataSet 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 regions assigned to a particular
process.
This method takes a process ID and two vtkIdLists. It
writes to the first list the IDs of the cells
contained in the process' regions. (That is, their cell
centroid is contained in the region.) To the second list it
write the IDs of the cells which intersect the process' regions
but whose cell centroid lies elsewhere.
The total number of cell IDs written to both lists is returned.
Either list pointer passed in can be NULL, and it will be ignored.
If there are multiple data sets, you must specify which data set
you wish cell IDs for.
The caller should delete these two lists when done. This method
uses the cell lists created in vtkKdTree::CreateCellLists().
If the cell lists for the process' regions do not exist, this
method will first build the cell lists for all regions by calling
CreateCellLists(). You must remember to DeleteCellLists() when
done with all calls to this method, as cell lists can require a
great deal of memory.
vtkIdType = obj.GetCellListsForProcessRegions (int ProcessId, vtkIdList inRegionCells, vtkIdList onBoundaryCells)
- After regions have been assigned to processes, I may want to know
which cells I have that are in the regions assigned to a particular
process.
This method takes a process ID and two vtkIdLists. It
writes to the first list the IDs of the cells
contained in the process' regions. (That is, their cell
centroid is contained in the region.) To the second list it
write the IDs of the cells which intersect the process' regions
but whose cell centroid lies elsewhere.
The total number of cell IDs written to both lists is returned.
Either list pointer passed in can be NULL, and it will be ignored.
If there are multiple data sets, you must specify which data set
you wish cell IDs for.
The caller should delete these two lists when done. This method
uses the cell lists created in vtkKdTree::CreateCellLists().
If the cell lists for the process' regions do not exist, this
method will first build the cell lists for all regions by calling
CreateCellLists(). You must remember to DeleteCellLists() when
done with all calls to this method, as cell lists can require a
great deal of memory.
int = obj.DepthOrderAllProcesses (double directionOfProjection, vtkIntArray orderedList)
- DO NOT CALL. Deprecated in VTK 5.2. Use ViewOrderAllProcessesInDirection
or ViewOrderAllProcessesFromPosition.
int = obj.ViewOrderAllProcessesInDirection (double directionOfProjection[3], vtkIntArray orderedList)
- Return a list of all processes in order from front to back given a
vector direction of projection. Use this to do visibility sorts
in parallel projection mode. `orderedList' will be resized to the number
of processes. The return value is the number of processes.
\pre orderedList_exists: orderedList!=0
int = obj.ViewOrderAllProcessesFromPosition (double cameraPosition[3], vtkIntArray orderedList)
- Return a list of all processes in order from front to back given a
camera position. Use this to do visibility sorts in perspective
projection mode. `orderedList' will be resized to the number
of processes. The return value is the number of processes.
\pre orderedList_exists: orderedList!=0
int = obj.GetCellArrayGlobalRange (string name, float range[2])
int = obj.GetPointArrayGlobalRange (string name, float range[2])
int = obj.GetCellArrayGlobalRange (string name, double range[2])
int = obj.GetPointArrayGlobalRange (string name, double range[2])
int = obj.GetCellArrayGlobalRange (int arrayIndex, double range[2])
int = obj.GetPointArrayGlobalRange (int arrayIndex, double range[2])
int = obj.GetCellArrayGlobalRange (int arrayIndex, float range[2])
int = obj.GetPointArrayGlobalRange (int arrayIndex, float range[2])