VTK-m
2.0
|
Construct the Contour Tree for a 2D or 3D regular mesh. More...
#include <ContourTreeUniformDistributed.h>
Private Member Functions | |
VTKM_CONT vtkm::cont::DataSet | DoExecute (const vtkm::cont::DataSet &input) override |
VTKM_CONT vtkm::cont::PartitionedDataSet | DoExecutePartitions (const vtkm::cont::PartitionedDataSet &input) override |
VTKM_CONT void | PreExecute (const vtkm::cont::PartitionedDataSet &input) |
VTKM_CONT void | PostExecute (const vtkm::cont::PartitionedDataSet &input, vtkm::cont::PartitionedDataSet &output) |
template<typename FieldType > | |
VTKM_CONT void | ComputeVolumeMetric (vtkmdiy::Master &inputContourTreeMaster, vtkmdiy::DynamicAssigner &assigner, vtkmdiy::RegularSwapPartners &partners, const FieldType &, std::stringstream &timingsStream, std::vector< vtkm::cont::DataSet > &hierarchicalTreeOutputDataSet) |
template<typename T > | |
VTKM_CONT void | DoPostExecute (const vtkm::cont::PartitionedDataSet &input, vtkm::cont::PartitionedDataSet &output) |
Internal helper function that implements the actual functionality of PostExecute. More... | |
Private Attributes | |
bool | UseBoundaryExtremaOnly |
Use only boundary critical points in the parallel merge to reduce communication. More... | |
bool | UseMarchingCubes |
Use marching cubes connectivity for computing the contour tree. More... | |
bool | AugmentHierarchicalTree |
Augment hierarchical tree. More... | |
bool | SaveDotFiles |
Save dot files for all tree computations. More... | |
vtkm::cont::LogLevel | TimingsLogLevel = vtkm::cont::LogLevel::Perf |
Log level to be used for outputting timing information. Default is vtkm::cont::LogLevel::Perf. More... | |
vtkm::cont::LogLevel | TreeLogLevel = vtkm::cont::LogLevel::Info |
Log level to be used for outputting metadata about the trees. Default is vtkm::cont::LogLevel::Info. More... | |
vtkm::Id3 | BlocksPerDimension |
Information about block decomposition TODO/FIXME: Remove need for this information. More... | |
vtkm::cont::ArrayHandle< vtkm::Id3 > | LocalBlockIndices |
std::vector< vtkm::worklet::contourtree_augmented::DataSetMesh > | LocalMeshes |
Intermediate results (one per local data block)... More... | |
std::vector< vtkm::worklet::contourtree_augmented::ContourTree > | LocalContourTrees |
... local contour trees etc. computed during fan in and used during fan out More... | |
std::vector< vtkm::worklet::contourtree_distributed::BoundaryTree > | LocalBoundaryTrees |
std::vector< vtkm::worklet::contourtree_distributed::InteriorForest > | LocalInteriorForests |
vtkm::Id | NumIterations |
The hierarchical trees computed by the filter (array with one entry per block) More... | |
Additional Inherited Members | |
![]() | |
const VTKM_CONT vtkm::cont::Field & | GetFieldFromDataSet (const vtkm::cont::DataSet &input) const |
const VTKM_CONT vtkm::cont::Field & | GetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const |
template<typename Functor , typename... Args> | |
VTKM_CONT void | CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
template<typename Functor , typename... Args> | |
VTKM_CONT void | CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> | |
VTKM_CONT void | CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> | |
VTKM_CONT void | CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
VTKM_CONT vtkm::cont::DataSet | CreateResultField (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::Field &resultField) const |
Create the output data set for DoExecute More... | |
VTKM_CONT vtkm::cont::DataSet | CreateResultField (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, vtkm::cont::Field::Association resultFieldAssociation, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
VTKM_CONT vtkm::cont::DataSet | CreateResultFieldPoint (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
VTKM_CONT vtkm::cont::DataSet | CreateResultFieldCell (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
![]() | |
VTKM_CONT vtkm::cont::DataSet | CreateResult (const vtkm::cont::DataSet &inDataSet) const |
Create the output data set for DoExecute . More... | |
VTKM_CONT vtkm::cont::PartitionedDataSet | CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
VTKM_CONT vtkm::cont::PartitionedDataSet | CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
VTKM_CONT vtkm::cont::DataSet | CreateResult (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
VTKM_CONT vtkm::cont::DataSet | CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const vtkm::cont::CoordinateSystem &resultCoordSystem, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
VTKM_CONT vtkm::cont::DataSet | CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const std::string &coordsName, const vtkm::cont::UnknownArrayHandle &coordsData, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
![]() | |
vtkm::cont::Invoker | Invoke |
Construct the Contour Tree for a 2D or 3D regular mesh.
This filter implements the parallel peak pruning algorithm. In contrast to the ContourTreeUniform filter, this filter is optimized to allow for the computation of the augmented contour tree, i.e., the contour tree including all regular mesh vertices. Augmentation with regular vertices is used in practice to compute statistics (e.g., volume), to segment the input mesh, facilitate iso-value selection, enable localization of all verticies of a mesh in the tree among others.
In addition to single-block computation, the filter also supports multi-block regular grids. The blocks are processed in parallel using DIY and then the tree are merged progressively using a binary-reduction scheme to compute the final contour tree. I.e., in the multi-block context, the final tree is constructed on rank 0.
vtkm::filter::scalar_topology::ContourTreeUniformDistributed::ContourTreeUniformDistributed | ( | vtkm::cont::LogLevel | timingsLogLevel = vtkm::cont::LogLevel::Perf , |
vtkm::cont::LogLevel | treeLogLevel = vtkm::cont::LogLevel::Info |
||
) |
|
inlineoverridevirtual |
Reimplemented from vtkm::filter::Filter.
VTKM_CONT void vtkm::filter::scalar_topology::ContourTreeUniformDistributed::ComputeLocalTree | ( | const vtkm::Id | blockIndex, |
const vtkm::cont::DataSet & | input, | ||
const vtkm::cont::ArrayHandle< T, StorageType > & | fieldArray | ||
) |
VTKM_CONT void vtkm::filter::scalar_topology::ContourTreeUniformDistributed::ComputeLocalTreeImpl | ( | const vtkm::Id | blockIndex, |
const vtkm::cont::DataSet & | input, | ||
const vtkm::cont::ArrayHandle< T, StorageType > & | field, | ||
MeshType & | mesh, | ||
MeshBoundaryExecType & | meshBoundaryExecObject | ||
) |
Implement per block contour tree computation after the MeshType has been discovered.
|
private |
when operating on vtkm::cont::MultiBlock we want to do processing across ranks as well. Just adding pre/post handles for the same does the trick.
|
overrideprivatevirtual |
Implements vtkm::filter::Filter.
|
overrideprivatevirtual |
Reimplemented from vtkm::filter::Filter.
|
private |
Internal helper function that implements the actual functionality of PostExecute.
In the case we operate on vtkm::cont::MultiBlock we need to merge the trees computed on the block to compute the final contour tree.
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
when operating on vtkm::cont::MultiBlock we want to do processing across ranks as well. Just adding pre/post handles for the same does the trick.
|
private |
when operating on vtkm::cont::MultiBlock we want to do processing across ranks as well. Just adding pre/post handles for the same does the trick.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
Augment hierarchical tree.
|
private |
Information about block decomposition TODO/FIXME: Remove need for this information.
|
private |
|
private |
|
private |
... local contour trees etc. computed during fan in and used during fan out
|
private |
|
private |
Intermediate results (one per local data block)...
... local mesh information needed at end of fan out
|
private |
The hierarchical trees computed by the filter (array with one entry per block)
Number of iterations used to compute the contour tree
|
private |
Save dot files for all tree computations.
|
private |
Log level to be used for outputting timing information. Default is vtkm::cont::LogLevel::Perf.
|
private |
Log level to be used for outputting metadata about the trees. Default is vtkm::cont::LogLevel::Info.
|
private |
Use only boundary critical points in the parallel merge to reduce communication.
Disabling this should only be needed for performance testing.
|
private |
Use marching cubes connectivity for computing the contour tree.