VTK-m
2.3
|
A cell locator that performs a recursive division of space. More...
#include <CellLocatorBoundingIntervalHierarchy.h>
Public Types | |
using | SupportedCellSets = ::vtkm::cont::internal::CellSetList |
using | CellLocatorExecList = vtkm::ListTransform< SupportedCellSets, vtkm::exec::CellLocatorBoundingIntervalHierarchy > |
using | ExecObjType = vtkm::ListApply< CellLocatorExecList, vtkm::exec::CellLocatorMultiplexer > |
using | LastCell = typename ExecObjType::LastCell |
Public Member Functions | |
CellLocatorBoundingIntervalHierarchy (vtkm::IdComponent numPlanes=4, vtkm::IdComponent maxLeafSize=5) | |
Construct a CellLocatorBoundingIntervalHierarchy while optionally specifying the number of splitting planes and number of cells in each leaf. More... | |
void | SetNumberOfSplittingPlanes (vtkm::IdComponent numPlanes) |
Specify the number of splitting planes to use each time a region is divided. More... | |
vtkm::IdComponent | GetNumberOfSplittingPlanes () |
Specify the number of splitting planes to use each time a region is divided. More... | |
void | SetMaxLeafSize (vtkm::IdComponent maxLeafSize) |
Specify the number of cells in each leaf. More... | |
vtkm::Id | GetMaxLeafSize () |
Specify the number of cells in each leaf. More... | |
ExecObjType | PrepareForExecution (vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token) const |
![]() | |
virtual | ~CellLocatorBase ()=default |
const vtkm::cont::UnknownCellSet & | GetCellSet () const |
Specify the CellSet defining the structure of the cells being searched. More... | |
void | SetCellSet (const vtkm::cont::UnknownCellSet &cellSet) |
Specify the CellSet defining the structure of the cells being searched. More... | |
const vtkm::cont::CoordinateSystem & | GetCoordinates () const |
Specify the CoordinateSystem defining the location of the cells. More... | |
void | SetCoordinates (const vtkm::cont::CoordinateSystem &coords) |
Specify the CoordinateSystem defining the location of the cells. More... | |
void | SetCoordinates (const vtkm::cont::UnknownArrayHandle &coords) |
Specify the CoordinateSystem defining the location of the cells. More... | |
void | Update () const |
Build the search structure used to look up cells. More... | |
Private Member Functions | |
void | Build () override |
Additional Inherited Members | |
![]() | |
void | SetModified () |
bool | GetModified () const |
A cell locator that performs a recursive division of space.
CellLocatorBoundingIntervalHierarchy
creates a search structure by recursively dividing the space in which data lives. It starts by choosing an axis to split and then defines a number of splitting planes (set with SetNumberOfSplittingPlanes()
). These splitting planes divide the physical region into partitions, and the cells are divided among these partitions. The algorithm then recurses into each region and repeats the process until the regions are divided to the point where the contain no more than a maximum number of cells (specified with SetMaxLeafSize()
).
using vtkm::cont::CellLocatorBoundingIntervalHierarchy::CellLocatorExecList = vtkm::ListTransform<SupportedCellSets, vtkm::exec::CellLocatorBoundingIntervalHierarchy> |
using vtkm::cont::CellLocatorBoundingIntervalHierarchy::ExecObjType = vtkm::ListApply<CellLocatorExecList, vtkm::exec::CellLocatorMultiplexer> |
using vtkm::cont::CellLocatorBoundingIntervalHierarchy::LastCell = typename ExecObjType::LastCell |
using vtkm::cont::CellLocatorBoundingIntervalHierarchy::SupportedCellSets = ::vtkm::cont::internal::CellSetList |
|
inline |
Construct a CellLocatorBoundingIntervalHierarchy
while optionally specifying the number of splitting planes and number of cells in each leaf.
|
overrideprivatevirtual |
Implements vtkm::cont::CellLocatorBase.
|
inline |
Specify the number of cells in each leaf.
Larger numbers for the maximum leaf size result in a shallower tree (which is good because it means fewer memory lookups to find a cell), but it also means there will be more cells to check in each leaf (which is bad as checking a cell is slower than decending a tree level).
The default value is 5.
|
inline |
Specify the number of splitting planes to use each time a region is divided.
Larger numbers of splitting planes result in a shallower tree (which is good because it means fewer memory lookups to find a cell), but too many splitting planes could lead to poorly shaped regions that inefficiently partition cells.
The default value is 4.
ExecObjType vtkm::cont::CellLocatorBoundingIntervalHierarchy::PrepareForExecution | ( | vtkm::cont::DeviceAdapterId | device, |
vtkm::cont::Token & | token | ||
) | const |
|
inline |
Specify the number of cells in each leaf.
Larger numbers for the maximum leaf size result in a shallower tree (which is good because it means fewer memory lookups to find a cell), but it also means there will be more cells to check in each leaf (which is bad as checking a cell is slower than decending a tree level).
The default value is 5.
|
inline |
Specify the number of splitting planes to use each time a region is divided.
Larger numbers of splitting planes result in a shallower tree (which is good because it means fewer memory lookups to find a cell), but too many splitting planes could lead to poorly shaped regions that inefficiently partition cells.
The default value is 4.
|
private |
|
private |
|
private |
|
private |