VTK-m
2.0
|
Class to compute the Boundary Restricted Augmented Contour Tree (BRACT), a.k.a., BoundaryTree. More...
#include <BoundaryTreeMaker.h>
Public Member Functions | |
VTKM_CONT | BoundaryTreeMaker (MeshType *inputMesh, MeshBoundaryExecObjType &meshBoundaryExecObj, vtkm::worklet::contourtree_augmented::ContourTree &inputTree, BoundaryTree *boundaryTree, InteriorForest *interiorTree) |
VTKM_CONT void | Construct (const vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler *localToGlobalIdRelabeler=nullptr, bool boundaryCritical=true) |
computes a BRACT from a contour tree for a known block note the block ID for debug purposes More... | |
VTKM_CONT void | FindBoundaryVertices (bool boundaryCritical) |
routine to find the set of boundary vertices More... | |
VTKM_CONT void | ComputeDependentBoundaryCounts () |
routine to compute the initial dependent counts (i.e. More... | |
VTKM_CONT void | PropagateBoundaryCounts () |
routine for hyper-propagation to compute dependent boundary counts More... | |
VTKM_CONT void | FindNecessaryInteriorSupernodes () |
routine to find the necessary interior supernodes for the BRACT More... | |
VTKM_CONT void | AugmentBoundaryWithNecessaryInteriorSupernodes () |
routine to add the necessary interior supernodes to the boundary array More... | |
VTKM_CONT void | FindBoundaryTreeSuperarcs () |
routine that sorts on hyperparent to find BRACT superarcs More... | |
VTKM_CONT void | SuppressRegularisedInteriorSupernodes () |
compresses out supernodes in the interior that have become regular in the BRACT More... | |
VTKM_CONT void | SetUpAndDownNeighbours () |
routine to find AN up/down neighbour for each vertex this is deliberately non-canonical and exploits write-conflicts More... | |
VTKM_CONT void | IdentifyRegularisedSupernodes () |
routine to set a flag for each vertex that has become regular in the interior of the BRACT More... | |
VTKM_CONT void | AddTerminalFlagsToUpDownNeighbours () |
this routine sets a flag on every up/down neighbour that points to a critical point to force termination of pointer-doubling More... | |
VTKM_CONT void | PointerDoubleUpDownNeighbours () |
routine that uses pointer-doubling to collapse regular nodes in the BRACT More... | |
VTKM_CONT void | CompressRegularisedNodes () |
routine that compresses the regular nodes out of the BRACT More... | |
VTKM_CONT void | SetInteriorForest (const vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler *localToGlobalIdRelabeler=nullptr) |
sets the arrays in the InteriorForest (i.e., the residue) that need to be passed to the grafting stage. More... | |
VTKM_CONT std::string | DebugPrint (const char *message, const char *fileName, long lineNum) const |
prints the contents of the restrictor object in a standard format More... | |
Private Attributes | |
vtkm::cont::Invoker | Invoke |
Used internally to Invoke worklets. More... | |
Class to compute the Boundary Restricted Augmented Contour Tree (BRACT), a.k.a., BoundaryTree.
|
inline |
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::AddTerminalFlagsToUpDownNeighbours |
this routine sets a flag on every up/down neighbour that points to a critical point to force termination of pointer-doubling
Side effects: This function updates
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::AugmentBoundaryWithNecessaryInteriorSupernodes |
routine to add the necessary interior supernodes to the boundary array
Side effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::CompressRegularisedNodes |
routine that compresses the regular nodes out of the BRACT
Side effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::ComputeDependentBoundaryCounts |
routine to compute the initial dependent counts (i.e.
along each superarc) in preparation for hyper-propagation
along each superarc) in preparation for hyper-propagation
Side-effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::Construct | ( | const vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler * | localToGlobalIdRelabeler = nullptr , |
bool | boundaryCritical = true |
||
) |
computes a BRACT from a contour tree for a known block note the block ID for debug purposes
[in] | localToGlobalIdRelabeler | IdRelabeler for the mesh needed to call this->Mesh->GetGlobalIdsFromMeshIndices(...) used by the this->SetInteriorForest function (default=nullptr). |
[in] | boundaryCritical | If True then use only boundary critical points in the BoundaryTree, otherwise use the full boundary between blocks. (default=true) |
std::string vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::DebugPrint | ( | const char * | message, |
const char * | fileName, | ||
long | lineNum | ||
) | const |
prints the contents of the restrictor object in a standard format
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::FindBoundaryTreeSuperarcs |
routine that sorts on hyperparent to find BRACT superarcs
Side-effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::FindBoundaryVertices | ( | bool | boundaryCritical | ) |
routine to find the set of boundary vertices
[in] | boundaryCritical | If True then use only boundary critical points in the BoundaryTree, otherwise use the full boundary between blocks. (default=true) |
Side-effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::FindNecessaryInteriorSupernodes |
routine to find the necessary interior supernodes for the BRACT
INVARIANT: We have now computed the dependent weight for each supernode For boundary nodes, we will ignore this For non-boundary nodes, if the dependent weight is 0 or nBoundary then all boundary nodes are in one direction, and the node is unnecessary We have decided that if a superarc has any boundary nodes, the entire superarc should be treated as necessary. This extends the criteria so that the superparent and superparent's superarc of any boundary node are necessary
Side-effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::IdentifyRegularisedSupernodes |
routine to set a flag for each vertex that has become regular in the interior of the BRACT
Side effect: This function updates
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::PointerDoubleUpDownNeighbours |
routine that uses pointer-doubling to collapse regular nodes in the BRACT
Side effects: This functions updates
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::PropagateBoundaryCounts |
routine for hyper-propagation to compute dependent boundary counts
Side-effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SetInteriorForest | ( | const vtkm::worklet::contourtree_augmented::mesh_dem::IdRelabeler * | localToGlobalIdRelabeler = nullptr | ) |
sets the arrays in the InteriorForest (i.e., the residue) that need to be passed to the grafting stage.
[in] | localToGlobalIdRelabeler | IdRelabeler for the mesh needed to call this->Mesh->GetGlobalIdsFromMeshIndices(...) (default=nullptr). |
In the original this function was called SetResidue()
Side effects: This function updates:
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SetUpAndDownNeighbours |
routine to find AN up/down neighbour for each vertex this is deliberately non-canonical and exploits write-conflicts
Side effect: This function updates
void vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SuppressRegularisedInteriorSupernodes |
compresses out supernodes in the interior that have become regular in the BRACT
Side-effects: This function has the cummulative side effects of
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::BoundaryIndices |
their sort indices (may be redundant, but . . .)
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::BoundarySuperparents |
the superparents for each boundary vertex
BoundaryTree* vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::BoundaryTreeData |
Data structure for storing the results from this class.
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::BoundaryTreeId |
arrays for computation - stored here to simplify debug print
array for ID in boundary tree
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::BoundaryVertexSuperset |
the regular IDs of the boundary vertices (a conservative over-estimate, needed for hierarchical computation)
vtkm::worklet::contourtree_augmented::ContourTree& vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::ContourTree |
Pointer to the contour tree for the mesh.
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::DownNeighbour |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::HyperarcDependentBoundaryCount |
count of dependent boundary nodes for each hyperarc
InteriorForest* vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::InteriorForestData |
Data structure for the interior forest of a data block, i.e, the contourtree of a block minus the BoundaryTree (also called the residue or BRACT)
|
private |
Used internally to Invoke worklets.
MeshType* vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::Mesh |
Pointer to the input mesh.
MeshBoundaryExecObjType& vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::MeshBoundaryExecutionObject |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::NewVertexId |
array needed for compression
vtkm::Id vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::NumBoundary |
how many vertices ARE on the boundary
vtkm::Id vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::NumKept |
how many vertices are kept in the BRACT
vtkm::Id vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::NumNecessary |
how many interior vertices are necessary
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SuperarcDependentBoundaryCount |
count of dependent boundary nodes for each superarc
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SuperarcIntrinsicBoundaryCount |
count of boundary nodes on each superarc
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::SupernodeTransferBoundaryCount |
count of boundary nodes being transferred at eah supernode
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::TreeToSuperset |
these are essentially the same as the transfer/intrinsic/dependent weights probably about time to refactor and do a generic hyperarc propagation routine (owch!)
mapping from tree super ID to bract superset ID (could potentially be combined with isNecessary)
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::worklet::contourtree_distributed::BoundaryTreeMaker< MeshType, MeshBoundaryExecObjType >::UpNeighbour |