|
ViennaLS
|
Extract an explicit Mesh<> instance from an lsDomain. The interface is then described by explicit surface elements: Lines in 2D, Triangles in 3D. More...
#include <lsToSurfaceMesh.hpp>
Classes | |
| struct | I3 |
| struct | I3Hash |
Public Member Functions | |
| ToSurfaceMesh (double mnd=0.05, double eps=1e-12) | |
| ToSurfaceMesh (const SmartPointer< lsDomainType > passedLevelSet, SmartPointer< Mesh< T > > passedMesh, double mnd=0.05, double eps=1e-12) | |
| void | setLevelSet (SmartPointer< lsDomainType > passedlsDomain) |
| void | setMesh (SmartPointer< Mesh< T > > passedMesh) |
| void | setUpdatePointData (bool update) |
| void | setSharpCorners (bool check) |
| virtual void | apply () |
Protected Types | |
| using | lsDomainType = viennals::Domain<T, D> |
| using | hrleDomainType = typename lsDomainType::DomainType |
| using | hrleIndex = viennahrle::Index<D> |
| using | ConstSparseIterator = viennahrle::ConstSparseIterator<hrleDomainType> |
Protected Member Functions | |
| void | scaleMesh () |
| Vec3D< T > | computeNodePosition (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< T > &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< T > &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) |
| T | 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< T > const &pos) |
Static Protected Member Functions | |
| static bool | triangleMisformed (const std::array< unsigned, D > &nodeNumbers) noexcept |
| static Vec3D< T > | calculateNormal (const Vec3D< T > &nodeA, const Vec3D< T > &nodeB, const Vec3D< T > &nodeC) noexcept |
Protected Attributes | |
| std::vector< SmartPointer< lsDomainType > > | levelSets |
| SmartPointer< Mesh< T > > | mesh = nullptr |
| const T | epsilon |
| const double | minNodeDistanceFactor |
| bool | updatePointData = true |
| bool | generateSharpCorners = false |
| std::unordered_map< I3, unsigned, I3Hash > | nodeIdByBin |
| std::unordered_set< I3, I3Hash > | uniqueElements |
| std::vector< Vec3D< T > > | currentNormals |
| std::vector< T > | currentMaterials |
| double | currentGridDelta |
| T | currentMaterialId = 0 |
| SmartPointer< lsDomainType > | currentLevelSet = nullptr |
| PointData< T >::VectorDataType * | normalVectorData = nullptr |
| std::vector< std::pair< unsigned, Vec3D< T > > > | matSharpCornerNodes |
Static Protected Attributes | |
| static constexpr unsigned int | corner0 [12] |
| static constexpr unsigned int | corner1 [12] |
| static constexpr unsigned int | direction [12] |
Extract an explicit Mesh<> instance from an lsDomain. The interface is then described by explicit surface elements: Lines in 2D, Triangles in 3D.
|
protected |
|
protected |
|
protected |
|
protected |
|
inlineexplicit |
|
inline |
|
inlinevirtual |
Reimplemented in viennals::ToMultiSurfaceMesh< NumericType, D >.
|
inlinestaticprotectednoexcept |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlinestaticprotectednoexcept |
|
staticconstexprprotected |
|
staticconstexprprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticconstexprprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |