Class documentation of Concepts

Loading...
Searching...
No Matches

#include <hexsubdiv.hh>

Inheritance diagram for concepts::HexSubdiv4z:
concepts::HexSubdivision concepts::Subdivision concepts::OutputOperator

Public Member Functions

virtual void createChildren (Hexahedron &q) const
 
virtual void removeChildren (Hexahedron &q) const
 

Static Public Member Functions

static const HexSubdiv4zinstance ()
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream.
 
void subFace0011 (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 subFace0110 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const
 
void subFace1001 (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
 
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
 
bool faceSubdiv4 (Quad &q) const
 
QuadfindFace (const Vertex *const v, Quad *const q[4], const unsigned int tau, const unsigned int rho, const unsigned int vtxIdx) const
 
void subdivFace0 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
 
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
 

Detailed Description

Subdivision strategy for hexahedrons which generates 4 children along the z direction.

The children are generated by subdividing the respective faces into 2 or 4 quadrilaterals and introducing one new edge and 4 new faces.

Author
Philipp Frauenfelder, 2002

Definition at line 299 of file hexsubdiv.hh.

Member Function Documentation

◆ createChildren()

virtual void concepts::HexSubdiv4z::createChildren ( Hexahedron q) const
virtual

If no children of q exist, they are created.

Implements concepts::HexSubdivision.

◆ faceSubdiv4()

bool concepts::HexSubdivision::faceSubdiv4 ( Quad q) const
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
qFace to be subdivided into 4
Returns
true if the subdivision in one shot succeeded, false otherwise
Exceptions
StrategyChangeif the subdivision in two shots fails too

◆ findFace()

Quad * concepts::HexSubdivision::findFace ( const Vertex *const  v,
Quad *const  q[4],
const unsigned int  tau,
const unsigned int  rho,
const unsigned int  vtxIdx 
) const
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
vVertex to look for
qList of quads to search through
tauOrientation flags of the quads
rhoRotation flags of the quads
vtxIdxIndex location of the vertex in the quads counted from vertex 0 in the quad in rho = 0 direction
Returns
the matching quad

◆ info()

virtual std::ostream & concepts::HexSubdiv4z::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

◆ removeChildren()

virtual void concepts::HexSubdiv4z::removeChildren ( Hexahedron q) const
virtual

If there are children, they are removed. The additional faces, edges and vertices are removed as well.

Implements concepts::HexSubdivision.

◆ subdivFace0()

void concepts::HexSubdivision::subdivFace0 ( Hexahedron h,
Quad *&  A,
Quad *&  B,
Quad *&  C,
Quad *&  D,
bool  normal 
) const
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
hHexahedron of which the face has to be subdivided
AResult
BResult
CResult
DResult
normalone or two shots

◆ subFace0011()

void concepts::HexSubdivision::subFace0011 ( Quad q,
Z2  rho,
Z4  tau,
Quad *&  A,
Quad *&  B 
) const
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 0011
1 1100

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 and B

◆ subFace0123()

void concepts::HexSubdivision::subFace0123 ( Quad q,
Z2  rho,
Z4  tau,
Quad *&  A,
Quad *&  B,
Quad *&  C,
Quad *&  D 
) const
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 0123
1 1230

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 and D

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