concepts::HexSubdiv8 Class Reference
Subdivision strategy for hexahedrons which generates 8 children. More...
#include <hexsubdiv.hh>
Public Member Functions | |
virtual void | createChildren (Hexahedron &q) const |
If no children of q exist, they are created. More... | |
virtual void | removeChildren (Hexahedron &q) const |
If there are children, they are removed. More... | |
virtual | ~HexSubdiv8 () |
Static Public Member Functions | |
static const HexSubdiv8 * | instance () |
Protected Member Functions | |
bool | faceSubdiv4 (Quad &q) const throw (StrategyChange) |
Takes a face and tries to subdivide it into 4 (by setting the strategy to QuadSubdiv4 ). More... | |
Quad * | findFace (const Vertex *const v, Quad *const q[4], const unsigned int tau, const unsigned int rho, const unsigned int vtxIdx) const |
Looks for the quad in q which contains the vertex v . More... | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. More... | |
void | subdivFace0 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
Subdivides a face of a hexehedron h into 4 children. More... | |
void | subdivFace1 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace2 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace3 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace4 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace5 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subFace0011 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
Gets the two children of q and sorts them. More... | |
void | subFace0110 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace0123 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
Gets the four children of q and sorts them. More... | |
void | subFace1001 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace1100 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace1230 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
void | subFace2301 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
Static Private Attributes | |
static std::unique_ptr< HexSubdiv8 > | instance_ |
Detailed Description
Subdivision strategy for hexahedrons which generates 8 children.
This is the default strategy.
The children are generated by subdividing each face into 4 quadrilaterals and introducing 12 new faces.
Definition at line 167 of file hexsubdiv.hh.
Constructor & Destructor Documentation
◆ ~HexSubdiv8()
|
virtual |
Member Function Documentation
◆ createChildren()
|
virtual |
If no children of q exist, they are created.
Implements concepts::HexSubdivision.
◆ faceSubdiv4()
|
protectedinherited |
Takes a face and tries to subdivide it into 4 (by setting the strategy to QuadSubdiv4
).
Firstly, a normal subdivision in one shot into 4 children is tried. If this fails (by catching a StrategyChange
exception), then a previous subdivision into 2 children was executed on this face. The orthogonal subdivision into 2 children is then reserved (by setting the strategy accordingly) on the two children of the face. This can be called a subdivision into 4 children in two shots.
- Parameters
-
q Face to be subdivided into 4
- Returns
- true if the subdivision in one shot succeeded, false otherwise
- Exceptions
-
StrategyChange if the subdivision in two shots fails too
◆ findFace()
|
protectedinherited |
Looks for the quad in q
which contains the vertex v
.
This is done by a loop over the four entries of q
and checking the indicated vertex (given by the index location vtxIdx
).
- Parameters
-
v Vertex to look for q List of quads to search through tau Orientation flags of the quads rho Rotation flags of the quads vtxIdx Index location of the vertex in the quads counted from vertex 0 in the quad in rho
= 0 direction
- Returns
- the matching quad
◆ info()
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from concepts::OutputOperator.
◆ instance()
|
static |
◆ removeChildren()
|
virtual |
If there are children, they are removed.
The additional faces, edges and vertices are removed as well.
Implements concepts::HexSubdivision.
◆ subdivFace0()
|
protectedinherited |
Subdivides a face of a hexehedron h
into 4 children.
normal
is taken into account: true
means that the face is to be subdivided in one shot, false
means two shots.
- Parameters
-
h Hexahedron of which the face has to be subdivided A Result B Result C Result D Result normal one or two shots
◆ subdivFace1()
|
protectedinherited |
◆ subdivFace2()
|
protectedinherited |
◆ subdivFace3()
|
protectedinherited |
◆ subdivFace4()
|
protectedinherited |
◆ subdivFace5()
|
protectedinherited |
◆ subFace0011()
|
protectedinherited |
Gets the two children of q
and sorts them.
The sorting rule is given in the name and parametrized by the orientation flags rho
and tau
.
The code 0011 means the following:
rho \ tau | 0 | 1 | 2 | 3 |
0 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
The indices 0 and 1 denote the index in the call to Quad::child which has to be used to get the correct face back.
- Returns
A
andB
◆ subFace0110()
|
protectedinherited |
◆ subFace0123()
|
protectedinherited |
Gets the four children of q
and sorts them.
The sorting rule is given in the name and and parametrized by the orientation flags rho
and tau
.
The code 0123 means the following:
rho \ tau | 0 | 1 | 2 | 3 |
0 | 0 | 1 | 2 | 3 |
1 | 1 | 2 | 3 | 0 |
The indices 0, 1, 2 and 3 denote the index in the call to Quad::child which has to be used to get the correct face back.
- Returns
A
,B
,C
andD
◆ subFace1001()
|
protectedinherited |
◆ subFace1100()
|
protectedinherited |
◆ subFace1230()
|
protectedinherited |
◆ subFace2301()
|
protectedinherited |
Member Data Documentation
◆ instance_
|
staticprivate |
Definition at line 176 of file hexsubdiv.hh.
The documentation for this class was generated from the following file:
- geometry/hexsubdiv.hh