VTK-m  2.0
Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | List of all members
vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer Class Reference

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

Detailed Description

Facture class for augmenting the hierarchical contour tree to enable computations of measures, e.g., volumne.

Member Function Documentation

◆ CollapseBranches()

void vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::CollapseBranches ( const vtkm::cont::DataSet hierarchicalTreeDataSet,
vtkm::worklet::contourtree_augmented::IdArrayType branchRoot 
)
inline

routine to compute the local set of superarcs that root at a given one

◆ DebugPrint()

std::string vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::DebugPrint ( std::string  message,
const char *  fileName,
long  lineNum 
)
inline

debug routine

◆ LocalBestUpDownByVolume()

void vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::LocalBestUpDownByVolume ( const vtkm::cont::DataSet hierarchicalTreeDataSet,
const vtkm::cont::ArrayHandle< vtkm::Id > &  intrinsicValues,
const vtkm::cont::ArrayHandle< vtkm::Id > &  dependentValues,
vtkm::Id  totalVolume 
)
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

◆ PrintBranches() [1/2]

template<typename IdArrayHandleType , typename DataValueArrayHandleType >
std::string vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::PrintBranches ( const IdArrayHandleType &  hierarchicalTreeSuperarcsAH,
const IdArrayHandleType &  hierarchicalTreeSupernodesAH,
const IdArrayHandleType &  hierarchicalTreeRegularNodeGlobalIdsAH,
const DataValueArrayHandleType &  hierarchicalTreeDataValuesAH,
const IdArrayHandleType &  branchRootAH 
)
static

routines to print branches

◆ PrintBranches() [2/2]

std::string vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::PrintBranches ( const vtkm::cont::DataSet ds)
inlinestatic

Member Data Documentation

◆ BestDownSupernode

vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestDownSupernode

◆ BestDownVolume

vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestDownVolume

◆ BestUpSupernode

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

◆ BestUpVolume

vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::BestUpVolume

◆ DownVolume

vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::DownVolume

◆ Invoke

vtkm::cont::Invoker vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::Invoke
private

Used internally to Invoke worklets.

◆ UpVolume

vtkm::worklet::contourtree_augmented::IdArrayType vtkm::filter::scalar_topology::HierarchicalVolumetricBranchDecomposer::UpVolume

working arrays - kept at class level to simplify debug print


The documentation for this class was generated from the following file: