AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::quest::experimental::MeshClipper::Impl Struct Referenceabstract

Single interface for methods implemented with execution space templates. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/main/src/axom/quest/MeshClipper.hpp>

Public Member Functions

 Impl (MeshClipper &impl)
 
virtual ~Impl ()=default
 
virtual void initVolumeOverlaps (const axom::ArrayView< MeshClipperStrategy::LabelType > &labels, axom::ArrayView< double > ovlap)=0
 Initialize overlap volumes to full for cells completely inside the shape and zero for cells outside or on shape boundary. More...
 
virtual void zeroVolumeOverlaps (axom::ArrayView< double > ovlap)=0
 Initialize overlap volumes to zero. More...
 
virtual void collectOnIndices (const axom::ArrayView< LabelType > &labels, axom::Array< axom::IndexType > &onIndices)=0
 Collect unlabeled LABEL_ON indices into an index list. More...
 
virtual void remapTetIndices (axom::ArrayView< const axom::IndexType > cellIndices, axom::ArrayView< axom::IndexType > tetIndices)=0
 Remap tet indices by de-referencing the cell indices they refer to. More...
 
virtual void addVolumesOfInteriorTets (axom::ArrayView< const axom::IndexType > cellsOnBdry, axom::ArrayView< const LabelType > tetLabels, axom::ArrayView< double > ovlap)=0
 Add volumes of tets inside the geometry to the volume data. More...
 
virtual void computeClipVolumes3D (axom::ArrayView< double > ovlap, conduit::Node &statistics)=0
 Compute clip volumes for every cell. More...
 
virtual void computeClipVolumes3D (const axom::ArrayView< axom::IndexType > &cellIndices, axom::ArrayView< double > ovlap, conduit::Node &statistics)=0
 Compute clip volumes for cell in an index list. More...
 
virtual void computeClipVolumes3DTets (const axom::ArrayView< axom::IndexType > &tetIndices, axom::ArrayView< double > ovlap, conduit::Node &statistics)=0
 Compute clip volumes for cell tets in an index list. More...
 
virtual void getLabelCounts (axom::ArrayView< const LabelType > labels, axom::IndexType &inCount, axom::IndexType &onCount, axom::IndexType &outCount)=0
 Count the number of labels of each type. More...
 
ShapeMeshgetShapeMesh ()
 
MeshClipperStrategygetStrategy ()
 
MeshClippermyClipper ()
 

Static Public Attributes

static constexpr axom::IndexType NUM_TETS_PER_HEX = MeshClipperStrategy::NUM_TETS_PER_HEX
 

Detailed Description

Single interface for methods implemented with execution space templates.

These methods require messy instantiation of execution spaces and their runtime selection.

The implementations are in class detail::MeshClipperImpl, which is templated on execution space.

Constructor & Destructor Documentation

◆ Impl()

axom::quest::experimental::MeshClipper::Impl::Impl ( MeshClipper impl)
inline

◆ ~Impl()

virtual axom::quest::experimental::MeshClipper::Impl::~Impl ( )
virtualdefault

Member Function Documentation

◆ initVolumeOverlaps()

virtual void axom::quest::experimental::MeshClipper::Impl::initVolumeOverlaps ( const axom::ArrayView< MeshClipperStrategy::LabelType > &  labels,
axom::ArrayView< double >  ovlap 
)
pure virtual

Initialize overlap volumes to full for cells completely inside the shape and zero for cells outside or on shape boundary.

◆ zeroVolumeOverlaps()

virtual void axom::quest::experimental::MeshClipper::Impl::zeroVolumeOverlaps ( axom::ArrayView< double >  ovlap)
pure virtual

Initialize overlap volumes to zero.

◆ collectOnIndices()

virtual void axom::quest::experimental::MeshClipper::Impl::collectOnIndices ( const axom::ArrayView< LabelType > &  labels,
axom::Array< axom::IndexType > &  onIndices 
)
pure virtual

Collect unlabeled LABEL_ON indices into an index list.

◆ remapTetIndices()

virtual void axom::quest::experimental::MeshClipper::Impl::remapTetIndices ( axom::ArrayView< const axom::IndexType cellIndices,
axom::ArrayView< axom::IndexType tetIndices 
)
pure virtual

Remap tet indices by de-referencing the cell indices they refer to.

Parameters
cellIndices[in] a list of cell indices.
tetIndices[in,out] a list of tet indices.

On input, tetIndices have values in [0, cellIndices.size()*NUM_TETS_PER_HEX), as though the cells have indices in [0, cellIndices.size()).

On output, tetIndices values are remapped to match real cell indices. For example, tet index values in [i*NUM_TETS_PER_HEX, (i+1)*NUM_TETS_PER_HEX) are remapped to [j*NUM_TETS_PER_HEX, (j+1)*NUM_TETS_PER_HEX), where j = cellIndices[i], the real cell index.

◆ addVolumesOfInteriorTets()

virtual void axom::quest::experimental::MeshClipper::Impl::addVolumesOfInteriorTets ( axom::ArrayView< const axom::IndexType cellsOnBdry,
axom::ArrayView< const LabelType tetLabels,
axom::ArrayView< double >  ovlap 
)
pure virtual

Add volumes of tets inside the geometry to the volume data.

◆ computeClipVolumes3D() [1/2]

virtual void axom::quest::experimental::MeshClipper::Impl::computeClipVolumes3D ( axom::ArrayView< double >  ovlap,
conduit::Node &  statistics 
)
pure virtual

Compute clip volumes for every cell.

◆ computeClipVolumes3D() [2/2]

virtual void axom::quest::experimental::MeshClipper::Impl::computeClipVolumes3D ( const axom::ArrayView< axom::IndexType > &  cellIndices,
axom::ArrayView< double >  ovlap,
conduit::Node &  statistics 
)
pure virtual

Compute clip volumes for cell in an index list.

◆ computeClipVolumes3DTets()

virtual void axom::quest::experimental::MeshClipper::Impl::computeClipVolumes3DTets ( const axom::ArrayView< axom::IndexType > &  tetIndices,
axom::ArrayView< double >  ovlap,
conduit::Node &  statistics 
)
pure virtual

Compute clip volumes for cell tets in an index list.

The tets are the results from decomposing each cell hex into NUM_TETS_PER_HEX tets and stored consecutively.

◆ getLabelCounts()

virtual void axom::quest::experimental::MeshClipper::Impl::getLabelCounts ( axom::ArrayView< const LabelType labels,
axom::IndexType inCount,
axom::IndexType onCount,
axom::IndexType outCount 
)
pure virtual

Count the number of labels of each type.

◆ getShapeMesh()

ShapeMesh& axom::quest::experimental::MeshClipper::Impl::getShapeMesh ( )
inline

◆ getStrategy()

MeshClipperStrategy& axom::quest::experimental::MeshClipper::Impl::getStrategy ( )
inline

◆ myClipper()

MeshClipper& axom::quest::experimental::MeshClipper::Impl::myClipper ( )
inline

Member Data Documentation

◆ NUM_TETS_PER_HEX

constexpr axom::IndexType axom::quest::experimental::MeshClipper::Impl::NUM_TETS_PER_HEX = MeshClipperStrategy::NUM_TETS_PER_HEX
staticconstexpr

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