OpenVolumeMesh
 All Classes Functions Variables Typedefs Pages
OpenVolumeMesh::HexahedralMeshTopologyKernel Class Reference

A data structure basing on PolyhedralMesh with specializations for hexahedra. More...

#include <OpenVolumeMesh/Mesh/HexahedralMeshTopologyKernel.hh>

Inheritance diagram for OpenVolumeMesh::HexahedralMeshTopologyKernel:
OpenVolumeMesh::TopologyKernel OpenVolumeMesh::ResourceManager

Public Types

typedef class CellSheetCellIter CellSheetCellIter
typedef class
HalfFaceSheetHalfFaceIter 
HalfFaceSheetHalfFaceIter
typedef class HexVertexIter HexVertexIter
- Public Types inherited from OpenVolumeMesh::TopologyKernel
typedef OpenVolumeMeshEdge Edge
typedef OpenVolumeMeshFace Face
typedef OpenVolumeMeshCell Cell
- Public Types inherited from OpenVolumeMesh::ResourceManager
typedef std::vector
< BaseProperty * > 
Properties

Public Member Functions

virtual FaceHandle add_face (const std::vector< HalfEdgeHandle > &_halfedges, bool _topologyCheck=false)
 Add face via incident edges.
virtual FaceHandle add_face (const std::vector< VertexHandle > &_vertices)
 Add face via incident vertices.
virtual CellHandle add_cell (const std::vector< HalfFaceHandle > &_halffaces, bool _topologyCheck=false)
 Overridden function.
CellHandle add_cell (const std::vector< VertexHandle > &_vertices)
 Add cell via incident vertices.
CellSheetCellIter csc_iter (const CellHandle &_ref_h, const unsigned char _orthDir) const
HalfFaceSheetHalfFaceIter hfshf_iter (const HalfFaceHandle &_ref_h) const
HexVertexIter hv_iter (const CellHandle &_ref_h) const
HalfFaceHandle opposite_halfface_handle_in_cell (const HalfFaceHandle &_hfh, const CellHandle &_ch) const
HalfFaceHandle xfront_halfface (const CellHandle &_ch) const
HalfFaceHandle xback_halfface (const CellHandle &_ch) const
HalfFaceHandle yfront_halfface (const CellHandle &_ch) const
HalfFaceHandle yback_halfface (const CellHandle &_ch) const
HalfFaceHandle zfront_halfface (const CellHandle &_ch) const
HalfFaceHandle zback_halfface (const CellHandle &_ch) const
unsigned char orientation (const HalfFaceHandle &_hfh, const CellHandle &_ch) const
HalfFaceHandle get_oriented_halfface (const unsigned char _o, const CellHandle &_ch) const
HalfFaceHandle adjacent_halfface_on_sheet (const HalfFaceHandle &_hfh, const HalfEdgeHandle &_heh) const
HalfFaceHandle adjacent_halfface_on_surface (const HalfFaceHandle &_hfh, const HalfEdgeHandle &_heh) const
HalfFaceHandle neighboring_outside_halfface (const HalfFaceHandle &_hfh, const HalfEdgeHandle &_heh) const
- Public Member Functions inherited from OpenVolumeMesh::TopologyKernel
VertexOHalfEdgeIter voh_iter (const VertexHandle &_h) const
HalfEdgeHalfFaceIter hehf_iter (const HalfEdgeHandle &_h) const
VertexCellIter vc_iter (const VertexHandle &_h) const
HalfEdgeCellIter hec_iter (const HalfEdgeHandle &_h) const
CellVertexIter cv_iter (const CellHandle &_h) const
CellCellIter cc_iter (const CellHandle &_h) const
HalfFaceVertexIter hfv_iter (const HalfFaceHandle &_h) const
BoundaryHalfFaceHalfFaceIter bhfhf_iter (const HalfFaceHandle &_ref_h) const
BoundaryFaceIter bf_iter () const
VertexIter v_iter () const
VertexIter vertices_begin () const
VertexIter vertices_end () const
EdgeIter e_iter () const
EdgeIter edges_begin () const
EdgeIter edges_end () const
HalfEdgeIter he_iter () const
HalfEdgeIter halfedges_begin () const
HalfEdgeIter halfedges_end () const
FaceIter f_iter () const
FaceIter faces_begin () const
FaceIter faces_end () const
HalfFaceIter hf_iter () const
HalfFaceIter halffaces_begin () const
HalfFaceIter halffaces_end () const
CellIter c_iter () const
CellIter cells_begin () const
CellIter cells_end () const
virtual unsigned int n_vertices () const
 Get number of vertices in mesh.
virtual unsigned int n_edges () const
 Get number of edges in mesh.
virtual unsigned int n_halfedges () const
 Get number of halfedges in mesh.
virtual unsigned int n_faces () const
 Get number of faces in mesh.
virtual unsigned int n_halffaces () const
 Get number of halffaces in mesh.
virtual unsigned int n_cells () const
 Get number of cells in mesh.
virtual VertexHandle add_vertex ()
 Add abstract vertex.
virtual EdgeHandle add_edge (const VertexHandle &_fromVertex, const VertexHandle &_toHandle, bool _allowDuplicates=false)
 Add edge.
void set_edge (const EdgeHandle &_eh, const VertexHandle &_fromVertex, const VertexHandle &_toVertex)
 Set the vertices of an edge.
void set_face (const FaceHandle &_fh, const std::vector< HalfEdgeHandle > &_hes)
 Set the half-edges of a face.
void set_cell (const CellHandle &_ch, const std::vector< HalfFaceHandle > &_hfs)
 Set the half-faces of a cell.
const Edgeedge (const EdgeHandle &_edgeHandle) const
 Get edge with handle _edgeHandle.
const Faceface (const FaceHandle &_faceHandle) const
 Get face with handle _faceHandle.
const Cellcell (const CellHandle &_cellHandle) const
 Get cell with handle _cellHandle.
Edgeedge (const EdgeHandle &_edgeHandle)
 Get edge with handle _edgeHandle.
Faceface (const FaceHandle &_faceHandle)
 Get face with handle _faceHandle.
Cellcell (const CellHandle &_cellHandle)
 Get cell with handle _cellHandle.
const Edge halfedge (const HalfEdgeHandle &_halfEdgeHandle) const
 Get edge that corresponds to halfedge with handle _halfEdgeHandle.
const Face halfface (const HalfFaceHandle &_halfFaceHandle) const
 Get face that corresponds to halfface with handle _halfFaceHandle.
const Edge opposite_halfedge (const HalfEdgeHandle &_halfEdgeHandle) const
 Get opposite halfedge that corresponds to halfedge with handle _halfEdgeHandle.
const Face opposite_halfface (const HalfFaceHandle &_halfFaceHandle) const
 Get opposite halfface that corresponds to halfface with handle _halfFaceHandle.
const HalfEdgeHandle halfedge (const VertexHandle &_vh1, const VertexHandle &_vh2) const
const HalfFaceHandle halfface (const std::vector< VertexHandle > &_vs) const
const HalfFaceHandle halfface (const std::vector< HalfEdgeHandle > &_hes) const
const HalfEdgeHandle next_halfedge_in_halfface (const HalfEdgeHandle &_heh, const HalfFaceHandle &_hfh) const
 Get next halfedge within a halfface.
const HalfEdgeHandle prev_halfedge_in_halfface (const HalfEdgeHandle &_heh, const HalfFaceHandle &_hfh) const
 Get previous halfedge within a halfface.
unsigned int valence (const VertexHandle &_vh) const
 Get valence of vertex (number of incident edges)
unsigned int valence (const EdgeHandle &_eh) const
 Get valence of edge (number of incident faces)
unsigned int valence (const FaceHandle &_fh) const
 Get valence of face (number of incident edges)
unsigned int valence (const CellHandle &_ch) const
 Get valence of cell (number of incident faces)
virtual VertexIter delete_vertex (const VertexHandle &_h)
 Delete vertex from mesh.
virtual EdgeIter delete_edge (const EdgeHandle &_h)
 Delete edge from mesh.
virtual FaceIter delete_face (const FaceHandle &_h)
 Delete face from mesh.
virtual CellIter delete_cell (const CellHandle &_h)
 Delete cell from mesh.
CellIter delete_cell_range (const CellIter &_first, const CellIter &_last)
 Delete range of cells.
virtual void clear (bool _clearProps=true)
 Clear whole mesh.
void enable_bottom_up_incidences (bool _enable=true)
void enable_vertex_bottom_up_incidences (bool _enable=true)
void enable_edge_bottom_up_incidences (bool _enable=true)
void enable_face_bottom_up_incidences (bool _enable=true)
bool has_full_bottom_up_incidences () const
bool has_vertex_bottom_up_incidences () const
bool has_edge_bottom_up_incidences () const
bool has_face_bottom_up_incidences () const
HalfFaceHandle adjacent_halfface_in_cell (const HalfFaceHandle &_halfFaceHandle, const HalfEdgeHandle &_halfEdgeHandle) const
 Get halfface that is adjacent (w.r.t. a common halfedge) within the same cell.
CellHandle incident_cell (const HalfFaceHandle &_halfFaceHandle) const
 Get cell that is incident to the given halfface.
bool is_boundary (const HalfFaceHandle &_halfFaceHandle) const
bool is_boundary (const FaceHandle &_faceHandle) const
bool is_boundary (const EdgeHandle &_edgeHandle) const
bool is_boundary (const HalfEdgeHandle &_halfedgeHandle) const
bool is_boundary (const VertexHandle &_vertexHandle) const
unsigned int n_vertices_in_cell (const CellHandle &_ch) const
const Edge opposite_halfedge (const Edge &_edge) const
const Face opposite_halfface (const Face &_face) const
- Public Member Functions inherited from OpenVolumeMesh::ResourceManager
void resize_vprops (unsigned int _nv)
 Change size of stored vertex properties.
void resize_eprops (unsigned int _ne)
 Change size of stored edge properties.
void resize_fprops (unsigned int _nf)
 Change size of stored face properties.
void resize_cprops (unsigned int _nc)
 Change size of stored cell properties.
void clear_vertex_props ()
void clear_edge_props ()
void clear_halfedge_props ()
void clear_face_props ()
void clear_halfface_props ()
void clear_cell_props ()
void clear_mesh_props ()
template<class T >
VertexPropertyT< T > request_vertex_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
EdgePropertyT< T > request_edge_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
HalfEdgePropertyT< T > request_halfedge_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
FacePropertyT< T > request_face_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
HalfFacePropertyT< T > request_halfface_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
CellPropertyT< T > request_cell_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
MeshPropertyT< T > request_mesh_property (const std::string &_name=std::string(), const T _def=T())
unsigned int n_vertex_props () const
unsigned int n_edge_props () const
unsigned int n_halfedge_props () const
unsigned int n_face_props () const
unsigned int n_halfface_props () const
unsigned int n_cell_props () const
unsigned int n_mesh_props () const
template<class T >
void set_persistent (VertexPropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (EdgePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (HalfEdgePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (FacePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (HalfFacePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (CellPropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (MeshPropertyT< T > &_prop, bool _flag=true)
Properties::const_iterator vertex_props_begin () const
Properties::const_iterator vertex_props_end () const
Properties::const_iterator edge_props_begin () const
Properties::const_iterator edge_props_end () const
Properties::const_iterator halfedge_props_begin () const
Properties::const_iterator halfedge_props_end () const
Properties::const_iterator face_props_begin () const
Properties::const_iterator face_props_end () const
Properties::const_iterator halfface_props_begin () const
Properties::const_iterator halfface_props_end () const
Properties::const_iterator cell_props_begin () const
Properties::const_iterator cell_props_end () const
Properties::const_iterator mesh_props_begin () const
Properties::const_iterator mesh_props_end () const
template<class FullPropT , class PropIterT >
bool property_exists (const PropIterT &_begin, const PropIterT &_end, const std::string &_name) const
template<class PropT >
bool vertex_property_exists (const std::string &_name) const
template<class PropT >
bool edge_property_exists (const std::string &_name) const
template<class PropT >
bool halfedge_property_exists (const std::string &_name) const
template<class PropT >
bool face_property_exists (const std::string &_name) const
template<class PropT >
bool halfface_property_exists (const std::string &_name) const
template<class PropT >
bool cell_property_exists (const std::string &_name) const
template<class PropT >
bool mesh_property_exists (const std::string &_name) const

Static Public Member Functions

static unsigned char opposite_orientation (const unsigned char _d)
static unsigned char orthogonal_orientation (const unsigned char _o1, const unsigned char _o2)
- Static Public Member Functions inherited from OpenVolumeMesh::TopologyKernel
static HalfEdgeHandle halfedge_handle (const EdgeHandle &_h, const unsigned char _subIdx)
 Conversion function.
static HalfFaceHandle halfface_handle (const FaceHandle &_h, const unsigned char _subIdx)
 Conversion function.
static EdgeHandle edge_handle (const HalfEdgeHandle &_h)
 Handle conversion.
static FaceHandle face_handle (const HalfFaceHandle &_h)
static HalfEdgeHandle opposite_halfedge_handle (const HalfEdgeHandle &_h)
static HalfFaceHandle opposite_halfface_handle (const HalfFaceHandle &_h)

Static Public Attributes

static const unsigned char XF = 0
static const unsigned char XB = 1
static const unsigned char YF = 2
static const unsigned char YB = 3
static const unsigned char ZF = 4
static const unsigned char ZB = 5
static const unsigned char INVALID = 6
- Static Public Attributes inherited from OpenVolumeMesh::TopologyKernel
static const VertexHandle InvalidVertexHandle = VertexHandle(-1)
static const EdgeHandle InvalidEdgeHandle = EdgeHandle(-1)
static const FaceHandle InvalidFaceHandle = FaceHandle(-1)
static const CellHandle InvalidCellHandle = CellHandle(-1)
static const HalfEdgeHandle InvalidHalfEdgeHandle = HalfEdgeHandle(-1)
static const HalfFaceHandle InvalidHalfFaceHandle = HalfFaceHandle(-1)

Friends

class CellSheetCellIter
class HalfFaceSheetHalfFaceIter
class HexVertexIter

Additional Inherited Members

- Protected Member Functions inherited from OpenVolumeMesh::TopologyKernel
virtual void delete_multiple_vertices (const std::vector< bool > &_tag)
virtual void delete_multiple_edges (const std::vector< bool > &_tag)
virtual void delete_multiple_faces (const std::vector< bool > &_tag)
virtual void delete_multiple_cells (const std::vector< bool > &_tag)
- Protected Attributes inherited from OpenVolumeMesh::TopologyKernel
std::vector< Edgeedges_
std::vector< Facefaces_
std::vector< Cellcells_

Detailed Description

A data structure basing on PolyhedralMesh with specializations for hexahedra.

The hexahedron has an induced "virtual" coordinate system. This supposes the incident half-faces to be given in a specific order. See the following figure for an illustration of the induced coordinate system.

induced_coordsys.png

The abbreviations XF, XB, etc. are short for

  • XF: X-axis front face
  • XB: X-axis back face
  • YF: Y-axis front face
  • ...

The axes refer to the intrinsic "virtual" axes of the hexahedron. The incident half-faces have to be defined in the following order:

  • 1. XF
  • 2. XB
  • 3. YF
  • 4. YB
  • 5. ZF
  • 6. ZB

Member Function Documentation

CellHandle OpenVolumeMesh::HexahedralMeshTopologyKernel::add_cell ( const std::vector< VertexHandle > &  _vertices)

Add cell via incident vertices.

Test whether all required faces are already defined and, if not, create them. Give vertices in the following order:

 5-------6
/|      /|

/ | / | 3----—2 | | 4-—|–7 | / | / |/ |/ 0----—1

Parameters
_verticesA list of vertices in the correct order
Returns
The new hexahedron's cell handle
FaceHandle OpenVolumeMesh::HexahedralMeshTopologyKernel::add_face ( const std::vector< VertexHandle > &  _vertices)
virtual

Add face via incident vertices.

Add face via incident vertices Define the _vertices in counter-clockwise order (from the "outside")

Reimplemented from OpenVolumeMesh::TopologyKernel.


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