
 Usage

Build, in parallel, a k-d tree decomposition of one or more
vtkDataSets distributed across processors. We assume each
process has read in one portion of a large distributed data
set. When done, each process has access to the k-d tree
structure, can obtain information about which process
contains data for each spatial region, and can depth sort
the spatial regions.
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



 Methods

The class vtkPKdTree has several methods that can be used.
They are listed below. Note that the documentation is
translated automatically from the VTK sources, and may not
be completely intelligible. When in doubt, consult the VTK
website. In the methods listed below, 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.


    Precondition:
        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.


    Precondition:
        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])


* FreeMat_Documentation
* Visualization_Toolkit_Parallel_Classes
* Generated on Thu Jul 25 2013 17:18:34 for FreeMat by
  doxygen_ 1.8.1.1

