ViennaLS
Loading...
Searching...
No Matches
viennals::ToMultiSurfaceMesh< NumericType, D > Class Template Reference

#include <lsToMultiSurfaceMesh.hpp>

Inheritance diagram for viennals::ToMultiSurfaceMesh< NumericType, D >:
viennals::ToSurfaceMesh< NumericType, D >

Public Member Functions

 ToMultiSurfaceMesh (double minNodeDistFactor=0.05, double eps=1e-12)
 ToMultiSurfaceMesh (SmartPointer< lsDomainType > passedLevelSet, SmartPointer< viennals::Mesh< NumericType > > passedMesh, double minNodeDistFactor=0.05, double eps=1e-12)
 ToMultiSurfaceMesh (std::vector< SmartPointer< lsDomainType > > const &passedLevelSets, SmartPointer< viennals::Mesh< NumericType > > passedMesh, double minNodeDistFactor=0.05, double eps=1e-12)
 ToMultiSurfaceMesh (SmartPointer< viennals::Mesh< NumericType > > passedMesh, double minNodeDistFactor=0.05, double eps=1e-12)
void insertNextLevelSet (SmartPointer< lsDomainType > passedLevelSet)
void clearLevelSets ()
void setMaterialMap (SmartPointer< MaterialMap > passedMaterialMap)
void apply () override
void setLevelSet (SmartPointer< lsDomainType > passedlsDomain)
void setMesh (SmartPointer< Mesh< NumericType > > passedMesh)
void setUpdatePointData (bool update)
void setSharpCorners (bool check)

Protected Types

using ConstSparseIterator

Protected Member Functions

void scaleMesh ()
Vec3D< NumericTypecomputeNodePosition (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int edge)
unsigned getNode (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int edge, std::map< hrleIndex, unsigned > *nodes, std::vector< unsigned > *newDataSourceIds)
void stitchToNeighbor (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int axis, bool isHighFace, unsigned faceNodeId, std::map< hrleIndex, unsigned > *nodes, ConstSparseIterator &valueIt)
bool generateCanonicalSharpCorner2D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int transform, Vec3D< NumericType > &cornerPos) const
bool generateSharpCorner2D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int countNeg, int countPos, int negMask, int posMask, std::map< hrleIndex, unsigned > *nodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt)
bool generateSharpL3D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int countNeg, int countPos, int negMask, int posMask, std::map< hrleIndex, unsigned > *nodes, std::map< hrleIndex, unsigned > *faceNodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt)
bool generateCanonicalSharpEdge3D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int transform, int axis, bool inverted, std::map< hrleIndex, unsigned > *nodes, std::map< hrleIndex, unsigned > *faceNodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt)
bool generateSharpEdge3D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int countNeg, int countPos, int negMask, int posMask, std::map< hrleIndex, unsigned > *nodes, std::map< hrleIndex, unsigned > *faceNodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt)
bool generateCanonicalSharpCorner3D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int transform, bool inverted, std::map< hrleIndex, unsigned > *nodes, std::map< hrleIndex, unsigned > *faceNodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt, Vec3D< NumericType > &cornerPos)
bool generateSharpCorner3D (viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, int countNeg, int countPos, int negMask, int posMask, std::map< hrleIndex, unsigned > *nodes, std::map< hrleIndex, unsigned > &cornerNodes, std::map< hrleIndex, unsigned > *faceNodes, std::vector< unsigned > *newDataSourceIds, ConstSparseIterator &valueIt)
NumericType getInterp (int p_a, int p_b, const viennahrle::ConstSparseCellIterator< hrleDomainType > &cellIt, bool inverted) const
void insertElement (const std::array< unsigned, D > &nodeNumbers)
unsigned insertNode (Vec3D< NumericType > const &pos)

Static Protected Member Functions

static bool triangleMisformed (const std::array< unsigned, D > &nodeNumbers) noexcept
static Vec3D< NumericTypecalculateNormal (const Vec3D< NumericType > &nodeA, const Vec3D< NumericType > &nodeB, const Vec3D< NumericType > &nodeC) noexcept

Protected Attributes

std::vector< SmartPointer< lsDomainType > > levelSets
SmartPointer< Mesh< NumericType > > mesh
const NumericType epsilon
const double minNodeDistanceFactor
bool updatePointData
bool generateSharpCorners
std::unordered_map< I3, unsigned, I3Hash > nodeIdByBin
std::unordered_set< I3, I3Hash > uniqueElements
std::vector< Vec3D< NumericType > > currentNormals
std::vector< NumericTypecurrentMaterials
double currentGridDelta
NumericType currentMaterialId
SmartPointer< lsDomainType > currentLevelSet
PointData< NumericType >::VectorDataType * normalVectorData
std::vector< std::pair< unsigned, Vec3D< NumericType > > > matSharpCornerNodes

Static Protected Attributes

static constexpr unsigned int corner0 [12]
static constexpr unsigned int corner1 [12]
static constexpr unsigned int direction [12]

Member Typedef Documentation

◆ ConstSparseIterator

using viennals::ToSurfaceMesh< NumericType, D >::ConstSparseIterator
protectedinherited

Constructor & Destructor Documentation

◆ ToMultiSurfaceMesh() [1/4]

template<class NumericType, int D>
viennals::ToMultiSurfaceMesh< NumericType, D >::ToMultiSurfaceMesh ( double minNodeDistFactor = 0.05,
double eps = 1e-12 )
inline

◆ ToMultiSurfaceMesh() [2/4]

template<class NumericType, int D>
viennals::ToMultiSurfaceMesh< NumericType, D >::ToMultiSurfaceMesh ( SmartPointer< lsDomainType > passedLevelSet,
SmartPointer< viennals::Mesh< NumericType > > passedMesh,
double minNodeDistFactor = 0.05,
double eps = 1e-12 )
inline

◆ ToMultiSurfaceMesh() [3/4]

template<class NumericType, int D>
viennals::ToMultiSurfaceMesh< NumericType, D >::ToMultiSurfaceMesh ( std::vector< SmartPointer< lsDomainType > > const & passedLevelSets,
SmartPointer< viennals::Mesh< NumericType > > passedMesh,
double minNodeDistFactor = 0.05,
double eps = 1e-12 )
inline

◆ ToMultiSurfaceMesh() [4/4]

template<class NumericType, int D>
viennals::ToMultiSurfaceMesh< NumericType, D >::ToMultiSurfaceMesh ( SmartPointer< viennals::Mesh< NumericType > > passedMesh,
double minNodeDistFactor = 0.05,
double eps = 1e-12 )
inline

Member Function Documentation

◆ apply()

template<class NumericType, int D>
void viennals::ToMultiSurfaceMesh< NumericType, D >::apply ( )
inlineoverridevirtual

◆ calculateNormal()

Vec3D< NumericType > viennals::ToSurfaceMesh< NumericType, D >::calculateNormal ( const Vec3D< NumericType > & nodeA,
const Vec3D< NumericType > & nodeB,
const Vec3D< NumericType > & nodeC )
inlinestaticprotectednoexceptinherited

◆ clearLevelSets()

template<class NumericType, int D>
void viennals::ToMultiSurfaceMesh< NumericType, D >::clearLevelSets ( )
inline

◆ computeNodePosition()

Vec3D< NumericType > viennals::ToSurfaceMesh< NumericType, D >::computeNodePosition ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int edge )
inlineprotectedinherited

◆ generateCanonicalSharpCorner2D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateCanonicalSharpCorner2D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int transform,
Vec3D< NumericType > & cornerPos ) const
inlineprotectedinherited

◆ generateCanonicalSharpCorner3D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateCanonicalSharpCorner3D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int transform,
bool inverted,
std::map< hrleIndex, unsigned > * nodes,
std::map< hrleIndex, unsigned > * faceNodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt,
Vec3D< NumericType > & cornerPos )
inlineprotectedinherited

◆ generateCanonicalSharpEdge3D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateCanonicalSharpEdge3D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int transform,
int axis,
bool inverted,
std::map< hrleIndex, unsigned > * nodes,
std::map< hrleIndex, unsigned > * faceNodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ generateSharpCorner2D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateSharpCorner2D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int countNeg,
int countPos,
int negMask,
int posMask,
std::map< hrleIndex, unsigned > * nodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ generateSharpCorner3D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateSharpCorner3D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int countNeg,
int countPos,
int negMask,
int posMask,
std::map< hrleIndex, unsigned > * nodes,
std::map< hrleIndex, unsigned > & cornerNodes,
std::map< hrleIndex, unsigned > * faceNodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ generateSharpEdge3D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateSharpEdge3D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int countNeg,
int countPos,
int negMask,
int posMask,
std::map< hrleIndex, unsigned > * nodes,
std::map< hrleIndex, unsigned > * faceNodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ generateSharpL3D()

bool viennals::ToSurfaceMesh< NumericType, D >::generateSharpL3D ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int countNeg,
int countPos,
int negMask,
int posMask,
std::map< hrleIndex, unsigned > * nodes,
std::map< hrleIndex, unsigned > * faceNodes,
std::vector< unsigned > * newDataSourceIds,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ getInterp()

NumericType viennals::ToSurfaceMesh< NumericType, D >::getInterp ( int p_a,
int p_b,
const viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
bool inverted ) const
inlineprotectedinherited

◆ getNode()

unsigned viennals::ToSurfaceMesh< NumericType, D >::getNode ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int edge,
std::map< hrleIndex, unsigned > * nodes,
std::vector< unsigned > * newDataSourceIds )
inlineprotectedinherited

◆ insertElement()

void viennals::ToSurfaceMesh< NumericType, D >::insertElement ( const std::array< unsigned, D > & nodeNumbers)
inlineprotectedinherited

◆ insertNextLevelSet()

template<class NumericType, int D>
void viennals::ToMultiSurfaceMesh< NumericType, D >::insertNextLevelSet ( SmartPointer< lsDomainType > passedLevelSet)
inline

◆ insertNode()

unsigned viennals::ToSurfaceMesh< NumericType, D >::insertNode ( Vec3D< NumericType > const & pos)
inlineprotectedinherited

◆ scaleMesh()

void viennals::ToSurfaceMesh< NumericType, D >::scaleMesh ( )
inlineprotectedinherited

◆ setLevelSet()

void viennals::ToSurfaceMesh< NumericType, D >::setLevelSet ( SmartPointer< lsDomainType > passedlsDomain)
inlineinherited

◆ setMaterialMap()

template<class NumericType, int D>
void viennals::ToMultiSurfaceMesh< NumericType, D >::setMaterialMap ( SmartPointer< MaterialMap > passedMaterialMap)
inline

◆ setMesh()

void viennals::ToSurfaceMesh< NumericType, D >::setMesh ( SmartPointer< Mesh< NumericType > > passedMesh)
inlineinherited

◆ setSharpCorners()

void viennals::ToSurfaceMesh< NumericType, D >::setSharpCorners ( bool check)
inlineinherited

◆ setUpdatePointData()

void viennals::ToSurfaceMesh< NumericType, D >::setUpdatePointData ( bool update)
inlineinherited

◆ stitchToNeighbor()

void viennals::ToSurfaceMesh< NumericType, D >::stitchToNeighbor ( viennahrle::ConstSparseCellIterator< hrleDomainType > & cellIt,
int axis,
bool isHighFace,
unsigned faceNodeId,
std::map< hrleIndex, unsigned > * nodes,
ConstSparseIterator & valueIt )
inlineprotectedinherited

◆ triangleMisformed()

bool viennals::ToSurfaceMesh< NumericType, D >::triangleMisformed ( const std::array< unsigned, D > & nodeNumbers)
inlinestaticprotectednoexceptinherited

Member Data Documentation

◆ corner0

unsigned int viennals::ToSurfaceMesh< NumericType, D >::corner0[12]
staticconstexprprotectedinherited

◆ corner1

unsigned int viennals::ToSurfaceMesh< NumericType, D >::corner1[12]
staticconstexprprotectedinherited

◆ currentGridDelta

double viennals::ToSurfaceMesh< NumericType, D >::currentGridDelta
protectedinherited

◆ currentLevelSet

SmartPointer<lsDomainType> viennals::ToSurfaceMesh< NumericType, D >::currentLevelSet
protectedinherited

◆ currentMaterialId

NumericType viennals::ToSurfaceMesh< NumericType, D >::currentMaterialId
protectedinherited

◆ currentMaterials

std::vector<NumericType> viennals::ToSurfaceMesh< NumericType, D >::currentMaterials
protectedinherited

◆ currentNormals

std::vector<Vec3D<NumericType> > viennals::ToSurfaceMesh< NumericType, D >::currentNormals
protectedinherited

◆ direction

unsigned int viennals::ToSurfaceMesh< NumericType, D >::direction[12]
staticconstexprprotectedinherited

◆ epsilon

const NumericType viennals::ToSurfaceMesh< NumericType, D >::epsilon
protectedinherited

◆ generateSharpCorners

bool viennals::ToSurfaceMesh< NumericType, D >::generateSharpCorners
protectedinherited

◆ levelSets

std::vector<SmartPointer<lsDomainType> > viennals::ToSurfaceMesh< NumericType, D >::levelSets
protectedinherited

◆ matSharpCornerNodes

std::vector<std::pair<unsigned, Vec3D<NumericType> > > viennals::ToSurfaceMesh< NumericType, D >::matSharpCornerNodes
protectedinherited

◆ mesh

SmartPointer<Mesh<NumericType> > viennals::ToSurfaceMesh< NumericType, D >::mesh
protectedinherited

◆ minNodeDistanceFactor

const double viennals::ToSurfaceMesh< NumericType, D >::minNodeDistanceFactor
protectedinherited

◆ nodeIdByBin

std::unordered_map<I3, unsigned, I3Hash> viennals::ToSurfaceMesh< NumericType, D >::nodeIdByBin
protectedinherited

◆ normalVectorData

PointData<NumericType>::VectorDataType* viennals::ToSurfaceMesh< NumericType, D >::normalVectorData
protectedinherited

◆ uniqueElements

std::unordered_set<I3, I3Hash> viennals::ToSurfaceMesh< NumericType, D >::uniqueElements
protectedinherited

◆ updatePointData

bool viennals::ToSurfaceMesh< NumericType, D >::updatePointData
protectedinherited

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