hexsubdiv.hh
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.
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
virtual void removeChildren(Hexahedron &q) const =0
If there are children, they are removed.
bool faceSubdiv4(Quad &q) const
Takes a face and tries to subdivide it into 4 (by setting the strategy to QuadSubdiv4).
static const HexSubdiv4x * instance()
Subdivision strategy for hexahedrons which generates 2 children perpendicular the y direction.
Definition: hexsubdiv.hh:211
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
Interface for topological subdivision strategies for hexahedrons.
Definition: hexsubdiv.hh:40
virtual void createChildren(Hexahedron &q) const =0
If no children of q exist, they are created.
static const HexSubdiv4y * instance()
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
virtual ~HexSubdiv4x()
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual ~HexSubdiv2y()
Common base class for QuadSubdivision and HexSubdivision.
Definition: subdivision.hh:20
static const HexSubdiv2x * instance()
static std::unique_ptr< HexSubdiv8 > instance_
Definition: hexsubdiv.hh:176
static const HexSubdiv8 * instance()
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
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.
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
virtual ~HexSubdiv2z()
Subdivision strategy for hexahedrons which generates 4 children along the x direction.
Definition: hexsubdiv.hh:255
Exception indicating that changing the subdivision strategy is not allowed (but was tried anyway).
Definition: strategyChange.hh:25
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
void subdivFace4(Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
Subdivision strategy for hexahedrons which generates 2 children perpendicular to the x direction.
Definition: hexsubdiv.hh:189
void subdivFace2(Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
static std::unique_ptr< HexSubdiv2y > instance_
Definition: hexsubdiv.hh:220
void subFace1230(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const
static const HexSubdiv2z * instance()
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.
Subdivision strategy for hexahedrons which generates 8 children.
Definition: hexsubdiv.hh:167
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
void subdivFace3(Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
static const HexSubdiv2y * instance()
static std::unique_ptr< HexSubdiv4x > instance_
Definition: hexsubdiv.hh:264
static std::unique_ptr< HexSubdiv2z > instance_
Definition: hexsubdiv.hh:242
virtual ~HexSubdiv4y()
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual ~HexSubdiv4z()
static std::unique_ptr< HexSubdiv4y > instance_
Definition: hexsubdiv.hh:286
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
void subFace2301(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const
static std::unique_ptr< HexSubdiv4z > instance_
Definition: hexsubdiv.hh:308
void subdivFace5(Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
Subdivision strategy for hexahedrons which generates 4 children along the z direction.
Definition: hexsubdiv.hh:299
void subFace1001(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
static std::unique_ptr< HexSubdiv2x > instance_
Definition: hexsubdiv.hh:198
virtual ~HexSubdiv8()
void subFace1100(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const
void subdivFace1(Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
static const HexSubdiv4z * instance()
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
Subdivision strategy for hexahedrons which generates 2 children perpendicular to the z direction.
Definition: hexsubdiv.hh:233
void subFace0110(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const
virtual void createChildren(Hexahedron &q) const
If no children of q exist, they are created.
virtual ~HexSubdiv2x()
Subdivision strategy for hexahedrons which generates 4 children along the y direction.
Definition: hexsubdiv.hh:277
virtual void removeChildren(Hexahedron &q) const
If there are children, they are removed.
void subFace0011(Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const
Gets the two children of q and sorts them.