Class xlifepp::subdivision::VolMeshTetSphere#

class VolMeshTetSphere : public xlifepp::subdivision::TetrahedronMesh#

Inheritence diagram for xlifepp::subdivision::VolMeshTetSphere:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::subdivision::GeomFigureMesh< Tetrahedron >" tooltip="xlifepp::subdivision::GeomFigureMesh< Tetrahedron >"] "3" [label="xlifepp::subdivision::SimplexMesh< Tetrahedron >" tooltip="xlifepp::subdivision::SimplexMesh< Tetrahedron >"] "6" [label="xlifepp::subdivision::GeomFigureMesh< T_ >" tooltip="xlifepp::subdivision::GeomFigureMesh< T_ >"] "8" [label="xlifepp::subdivision::GeomFigureMesh< T_ >" tooltip="xlifepp::subdivision::GeomFigureMesh< T_ >"] "7" [label="xlifepp::subdivision::SimplexMesh< T_ >" tooltip="xlifepp::subdivision::SimplexMesh< T_ >"] "5" [label="xlifepp::subdivision::SubdivisionMesh" tooltip="xlifepp::subdivision::SubdivisionMesh"] "2" [label="xlifepp::subdivision::TetrahedronMesh" tooltip="xlifepp::subdivision::TetrahedronMesh"] "1" [label="xlifepp::subdivision::VolMeshTetSphere" tooltip="xlifepp::subdivision::VolMeshTetSphere" fillcolor="#BFBFBF"] "4" -> "5" [dir=forward tooltip="public-inheritance"] "4" -> "6" [dir=forward tooltip="template-instance"] "3" -> "4" [dir=forward tooltip="public-inheritance"] "3" -> "7" [dir=forward tooltip="template-instance"] "6" -> "5" [dir=forward tooltip="public-inheritance"] "8" -> "5" [dir=forward tooltip="public-inheritance"] "7" -> "8" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "1" -> "2" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::subdivision::VolMeshTetSphere:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::subdivision::GeomFigureMesh< Tetrahedron >" tooltip="xlifepp::subdivision::GeomFigureMesh< Tetrahedron >"] "3" [label="xlifepp::subdivision::SimplexMesh< Tetrahedron >" tooltip="xlifepp::subdivision::SimplexMesh< Tetrahedron >"] "7" [label="std::basic_string< char >" tooltip="std::basic_string< char >"] "8" [label="std::basic_string< Char >" tooltip="std::basic_string< Char >"] "6" [label="std::string" tooltip="std::string"] "11" [label="std::vector< T >" tooltip="std::vector< T >"] "22" [label="std::vector< T_ >" tooltip="std::vector< T_ >"] "20" [label="std::vector< Tetrahedron >" tooltip="std::vector< Tetrahedron >"] "14" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "19" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "12" [label="std::vector< refnum_t >" tooltip="std::vector< refnum_t >"] "16" [label="std::vector< std::pair< xlifepp::subdivision::PatchGeometry *, refnum_t > >" tooltip="std::vector< std::pair< xlifepp::subdivision::PatchGeometry *, refnum_t > >"] "13" [label="std::vector< std::string >" tooltip="std::vector< std::string >"] "10" [label="std::vector< std::vector< number_t > >" tooltip="std::vector< std::vector< number_t > >"] "15" [label="std::vector< xlifepp::subdivision::PatchGeometry * >" tooltip="std::vector< xlifepp::subdivision::PatchGeometry * >"] "17" [label="std::vector< xlifepp::subdivision::Vertex >" tooltip="std::vector< xlifepp::subdivision::Vertex >"] "18" [label="xlifepp::Point" tooltip="xlifepp::Point"] "21" [label="xlifepp::subdivision::GeomFigureMesh< T_ >" tooltip="xlifepp::subdivision::GeomFigureMesh< T_ >"] "24" [label="xlifepp::subdivision::GeomFigureMesh< T_ >" tooltip="xlifepp::subdivision::GeomFigureMesh< T_ >"] "23" [label="xlifepp::subdivision::SimplexMesh< T_ >" tooltip="xlifepp::subdivision::SimplexMesh< T_ >"] "5" [label="xlifepp::subdivision::SubdivisionMesh" tooltip="xlifepp::subdivision::SubdivisionMesh"] "2" [label="xlifepp::subdivision::TetrahedronMesh" tooltip="xlifepp::subdivision::TetrahedronMesh"] "9" [label="xlifepp::subdivision::TopoGeom" tooltip="xlifepp::subdivision::TopoGeom"] "1" [label="xlifepp::subdivision::VolMeshTetSphere" tooltip="xlifepp::subdivision::VolMeshTetSphere" fillcolor="#BFBFBF"] "4" -> "5" [dir=forward tooltip="public-inheritance"] "4" -> "20" [dir=forward tooltip="usage"] "4" -> "21" [dir=forward tooltip="template-instance"] "3" -> "4" [dir=forward tooltip="public-inheritance"] "3" -> "23" [dir=forward tooltip="template-instance"] "7" -> "8" [dir=forward tooltip="template-instance"] "6" -> "7" [dir=forward tooltip="public-inheritance"] "22" -> "11" [dir=forward tooltip="template-instance"] "20" -> "11" [dir=forward tooltip="template-instance"] "14" -> "11" [dir=forward tooltip="template-instance"] "19" -> "11" [dir=forward tooltip="template-instance"] "12" -> "11" [dir=forward tooltip="template-instance"] "16" -> "11" [dir=forward tooltip="template-instance"] "13" -> "11" [dir=forward tooltip="template-instance"] "10" -> "11" [dir=forward tooltip="template-instance"] "15" -> "11" [dir=forward tooltip="template-instance"] "17" -> "11" [dir=forward tooltip="template-instance"] "18" -> "19" [dir=forward tooltip="public-inheritance"] "21" -> "5" [dir=forward tooltip="public-inheritance"] "21" -> "22" [dir=forward tooltip="usage"] "24" -> "5" [dir=forward tooltip="public-inheritance"] "24" -> "22" [dir=forward tooltip="usage"] "23" -> "24" [dir=forward tooltip="public-inheritance"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "9" [dir=forward tooltip="usage"] "5" -> "17" [dir=forward tooltip="usage"] "5" -> "18" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "9" -> "10" [dir=forward tooltip="usage"] "9" -> "12" [dir=forward tooltip="usage"] "9" -> "13" [dir=forward tooltip="usage"] "9" -> "14" [dir=forward tooltip="usage"] "9" -> "15" [dir=forward tooltip="usage"] "9" -> "16" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="public-inheritance"] }

Public Functions

VolMeshTetSphere(const std::vector<std::pair<real_t, dimen_t>> &rots, const int nboctants, const number_t nbsubdiv = 0, const number_t order = 1, const number_t type = 1, const real_t radius = 1., const Point Center = Point(0, 0, 0), const number_t minVertexNum = 1, const number_t minElementNum = 1)#

main constructor

Build a mesh of tetrahedrons by successive subdivisions.

Parameters:
  • rots – rotations to be applied to the sphere to get its final position. Each rotation, if any, is defined by an angle in degrees and the number of the absolute axis (1, 2 or 3) around which the rotation is made. Each rotation is applied in turn to the sphere starting from the canonical initial position where the sphere is centered at the origin and its local axes are parallel to the absolute axes.

  • nboctants – number of octants to be filled nboctants may take a value in [1, 8]. For the half-sphere and the sphere, when a spherical subdivision is requested (argument type different from 0, see below), the initial mesh may consist of one single tetrahedron instead of respectively 4 and 8 tetrahedrons, which reduces the number of tetrahedrons of the final mesh by a factor 4 and 8 respectively. In order to activate this behaviour, nboctants must take the value -4 and -8 respectively.

  • nbsubdiv – subdivision level (0 by default) nbsubdiv = 0 corresponds to the initial mesh. For nbsubdiv > 0, each tetrahedron is subdivided into 8 tetrahedrons with the same orientation as the original one: if the first tetrahedron is (1,2,3,4), the vectors 12x13, 41x43, 43x42 and 42x41 define the exterior normals to the faces.

  • order – order of the tetrahedra in the final mesh (1 by default) The default value is 1, which leads to a P1 mesh, in which case each tetrahedron is defined by its 4 vertices. For higher orders, the supplemental vertices correspond to the regular Lagrange mesh. Moreover, if the second argument (type) is non 0, the vertices belonging to the appropriate boundary lie on the sphere. See below the two possible ways to compute these vertices.

  • type – type of the subdivision (1 by default) . if type = 0, the algorithm leads to a simple (flat) subdivision of the initial mesh where new vertices are all the midpoints of the edges. . if type = 1, the algorithm leads to a subdivision where the vertices belonging to a prescribed boundary are computed so that they lie on the sphere ; they are computed as the radial projections of the vertices of the Lagrange mesh of order k over the triangular chord face.

  • radius – radius of the sphere (1. by default)

  • Center – center of the sphere ((0,0,0) by default)

  • minVertexNum – minimum number associated to the vertices of the mesh (1 by default)

  • minElementNum – minimum number associated to the elements of the mesh (1 by default)

void statistics(std::ostream &os) const#

prints, on stream os, some statistics about the mesh

Prints, on stream os, some statistics about a tetrahedron mesh.