VTK-m
2.0
|
Facture class for augmenting the hierarchical contour tree to enable computations of measures, e.g., volumne. More...
#include <HierarchicalVolumetricBranchDecomposer.h>
Public Member Functions | |
void | LocalBestUpDownByVolume (const vtkm::cont::DataSet &hierarchicalTreeDataSet, const vtkm::cont::ArrayHandle< vtkm::Id > &intrinsicValues, const vtkm::cont::ArrayHandle< vtkm::Id > &dependentValues, vtkm::Id totalVolume) |
routines to compute branch decomposition by volume WARNING: we now have two types of hierarchical tree sharing a data structure: I. More... | |
void | CollapseBranches (const vtkm::cont::DataSet &hierarchicalTreeDataSet, vtkm::worklet::contourtree_augmented::IdArrayType &branchRoot) |
routine to compute the local set of superarcs that root at a given one More... | |
std::string | DebugPrint (std::string message, const char *fileName, long lineNum) |
debug routine More... | |
Static Public Member Functions | |
template<typename IdArrayHandleType , typename DataValueArrayHandleType > | |
static std::string | PrintBranches (const IdArrayHandleType &hierarchicalTreeSuperarcsAH, const IdArrayHandleType &hierarchicalTreeSupernodesAH, const IdArrayHandleType &hierarchicalTreeRegularNodeGlobalIdsAH, const DataValueArrayHandleType &hierarchicalTreeDataValuesAH, const IdArrayHandleType &branchRootAH) |
routines to print branches More... | |
static std::string | PrintBranches (const vtkm::cont::DataSet &ds) |
Public Attributes | |
vtkm::worklet::contourtree_augmented::IdArrayType | BestUpSupernode |
we will want arrays for swapping with our partners, holding the best up/down superarc & the corresponding volume the best up/down will be in local supernode IDs initially, but during the swap will need to be global node IDs More... | |
vtkm::worklet::contourtree_augmented::IdArrayType | BestDownSupernode |
vtkm::worklet::contourtree_augmented::IdArrayType | BestUpVolume |
vtkm::worklet::contourtree_augmented::IdArrayType | BestDownVolume |
vtkm::worklet::contourtree_augmented::IdArrayType | UpVolume |
working arrays - kept at class level to simplify debug print More... | |
vtkm::worklet::contourtree_augmented::IdArrayType | DownVolume |
Private Attributes | |
vtkm::cont::Invoker | Invoke |
Used internally to Invoke worklets. More... | |
Facture class for augmenting the hierarchical contour tree to enable computations of measures, e.g., volumne.
|
inline |
routine to compute the local set of superarcs that root at a given one
|
inline |
debug routine
|
inline |
routines to compute branch decomposition by volume WARNING: we now have two types of hierarchical tree sharing a data structure: I.
hierarchical tree without augmentation II. hierarchical tree with augmentation We only expect to call this for II, but it's wiser to make sure that it computes for I as well. Also, this code is substantially identical to ContourTreeMaker::ComputeVolumeBranchDecomposition() except for: A. it has to deal with the round/iteration paradigm of hierarchical trees, and B. Stages III-IV in particular are modified C. Several stages involve fan-ins The principal reason for the modifications in B. is that the old code collapses branches to their maximum which is often a leaf. In the hierarchical version, the leaf will often not be represented on all ranks, so we modify it to collapse towards the "most senior". This will be easiest if we collapse by superarc IDs instead of supernode IDs For C., we have to break the code into separate routines so that the fan-in MPI can be outside this unit.
WARNING! WARNING! WARNING! In the non-hierarchical version, the last (virtual root) superarc goes from the highest ID supernode to NO_SUCH_ELEMENT If it was included in the sorts, this could cause problems The (simple) way out of this was to set nSuperarcs = nSupernodes - 1 when copying our temporary list of superarcs that way we don't use it at all. In the hierarchical version, this no longer works, because attachment points may also have virtual superarcs So we either need to compress them out (an extra log step) or ignore them in the later loop. Of the two, compressing them out is safer
routine that determines the best upwards/downwards edges at each vertex Unlike the local version, the best might only be stored on another rank so we will compute the locally best up or down, then swap until all ranks choose the same best
|
static |
routines to print branches
|
inlinestatic |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestDownSupernode |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestDownVolume |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestUpSupernode |
we will want arrays for swapping with our partners, holding the best up/down superarc & the corresponding volume the best up/down will be in local supernode IDs initially, but during the swap will need to be global node IDs
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestUpVolume |
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::DownVolume |
|
private |
Used internally to Invoke worklets.
vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::UpVolume |
working arrays - kept at class level to simplify debug print