\hypertarget{a11708}{}\section{Open\+Volume\+Mesh\+:\+:Hexahedral\+Mesh\+Topology\+Kernel Class Reference}
\label{a11708}\index{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}}


A data structure basing on Polyhedral\+Mesh with specializations for hexahedra.  




{\ttfamily \#include $<$Type-\/\+Open\+Volume\+Mesh/libs/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/\+Hexahedral\+Mesh\+Topology\+Kernel.\+hh$>$}

Inheritance diagram for Open\+Volume\+Mesh\+:\+:Hexahedral\+Mesh\+Topology\+Kernel\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a11708}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a11708_a2aa8f199531e0e3700218053212fdf46}\label{a11708_a2aa8f199531e0e3700218053212fdf46}} 
typedef class Cell\+Sheet\+Cell\+Iter {\bfseries Cell\+Sheet\+Cell\+Iter}
\item 
\mbox{\Hypertarget{a11708_a80431f7882963b420ffcb50bcfe7b2a4}\label{a11708_a80431f7882963b420ffcb50bcfe7b2a4}} 
typedef class Half\+Face\+Sheet\+Half\+Face\+Iter {\bfseries Half\+Face\+Sheet\+Half\+Face\+Iter}
\item 
\mbox{\Hypertarget{a11708_a1e177f5712ff5a3abd4388e2550e28a6}\label{a11708_a1e177f5712ff5a3abd4388e2550e28a6}} 
typedef class Hex\+Vertex\+Iter {\bfseries Hex\+Vertex\+Iter}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \hyperlink{a11608}{Face\+Handle} \hyperlink{a11708_a24812b87dd16229d6e4543a3ec97cf6f}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a11608}{Half\+Edge\+Handle} $>$ \&\+\_\+halfedges, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add face via incident edges. \end{DoxyCompactList}\item 
virtual \hyperlink{a11608}{Face\+Handle} \hyperlink{a11708_aa3abb32b64daa7a4b834304c082e6c1d}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a11608}{Vertex\+Handle} $>$ \&\+\_\+vertices)
\begin{DoxyCompactList}\small\item\em Add face via incident vertices. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a11708_ad4591572bf3c6526052e1b81b0db60d9}\label{a11708_ad4591572bf3c6526052e1b81b0db60d9}} 
virtual \hyperlink{a11608}{Cell\+Handle} \hyperlink{a11708_ad4591572bf3c6526052e1b81b0db60d9}{add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a11608}{Half\+Face\+Handle} $>$ \&\+\_\+halffaces, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Overridden function. \end{DoxyCompactList}\item 
\hyperlink{a11608}{Cell\+Handle} \hyperlink{a11708_a0a355e4e68eb1f8859e7db57948607c1}{add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a11608}{Vertex\+Handle} $>$ \&\+\_\+vertices, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add cell via incident vertices. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a11708_afa685e327c80478a6ad81d95657ceaf5}\label{a11708_afa685e327c80478a6ad81d95657ceaf5}} 
Cell\+Sheet\+Cell\+Iter {\bfseries csc\+\_\+iter} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ref\+\_\+h, const unsigned char \+\_\+orth\+Dir, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_a763f571777a275964bb6df0b63a830fd}\label{a11708_a763f571777a275964bb6df0b63a830fd}} 
std\+::pair$<$ Cell\+Sheet\+Cell\+Iter, Cell\+Sheet\+Cell\+Iter $>$ {\bfseries cell\+\_\+sheet\+\_\+cells} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ref\+\_\+h, const unsigned char \+\_\+orth\+Dir, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_af5f971896210ece540b1ac791c8ba2e9}\label{a11708_af5f971896210ece540b1ac791c8ba2e9}} 
Half\+Face\+Sheet\+Half\+Face\+Iter {\bfseries hfshf\+\_\+iter} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_a3d9ac7406a637011786217bead84f644}\label{a11708_a3d9ac7406a637011786217bead84f644}} 
std\+::pair$<$ Half\+Face\+Sheet\+Half\+Face\+Iter, Half\+Face\+Sheet\+Half\+Face\+Iter $>$ {\bfseries halfface\+\_\+sheet\+\_\+halffaces} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_aaf8c80fe86e146bfe6eec31588fbc761}\label{a11708_aaf8c80fe86e146bfe6eec31588fbc761}} 
Hex\+Vertex\+Iter {\bfseries hv\+\_\+iter} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_a6ee238cabc25c39aede132c3b3566d85}\label{a11708_a6ee238cabc25c39aede132c3b3566d85}} 
std\+::pair$<$ Hex\+Vertex\+Iter, Hex\+Vertex\+Iter $>$ {\bfseries hex\+\_\+vertices} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const
\item 
\mbox{\Hypertarget{a11708_a14ef6804446a2133ce75494a13f73471}\label{a11708_a14ef6804446a2133ce75494a13f73471}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries opposite\+\_\+halfface\+\_\+handle\+\_\+in\+\_\+cell} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_af7d3013bfaac4f6c51579ffdaec4ce6e}\label{a11708_af7d3013bfaac4f6c51579ffdaec4ce6e}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries xfront\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a56643e660757b6af8d04cf9d1036295f}\label{a11708_a56643e660757b6af8d04cf9d1036295f}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries xback\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a1e5f7f1a4519ad3f387d2fa96b206bd3}\label{a11708_a1e5f7f1a4519ad3f387d2fa96b206bd3}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries yfront\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a01d1eceed35f9e3653b41bcdcda2392a}\label{a11708_a01d1eceed35f9e3653b41bcdcda2392a}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries yback\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a7e3e07edc7d537c790c45d36a4ad3b4c}\label{a11708_a7e3e07edc7d537c790c45d36a4ad3b4c}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries zfront\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a3757dfda4e32e5698771b0e750b9d1f6}\label{a11708_a3757dfda4e32e5698771b0e750b9d1f6}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries zback\+\_\+halfface} (const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a38a96687dd1bee3543decacae3928f2c}\label{a11708_a38a96687dd1bee3543decacae3928f2c}} 
unsigned char {\bfseries orientation} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_ae048cf1ec7df781ab40ec0b86c75e999}\label{a11708_ae048cf1ec7df781ab40ec0b86c75e999}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries get\+\_\+oriented\+\_\+halfface} (const unsigned char \+\_\+o, const \hyperlink{a11608}{Cell\+Handle} \&\+\_\+ch) const
\item 
\mbox{\Hypertarget{a11708_a5e1ca7a7cc472497c027e780878f6a6a}\label{a11708_a5e1ca7a7cc472497c027e780878f6a6a}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries adjacent\+\_\+halfface\+\_\+on\+\_\+sheet} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Half\+Edge\+Handle} \&\+\_\+heh) const
\item 
\mbox{\Hypertarget{a11708_a3a61abbb5c40a508ca9c35409e0f5fbe}\label{a11708_a3a61abbb5c40a508ca9c35409e0f5fbe}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries adjacent\+\_\+halfface\+\_\+on\+\_\+surface} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Half\+Edge\+Handle} \&\+\_\+heh) const
\item 
\mbox{\Hypertarget{a11708_ad74f5838e4cb9209afc0c7bc1a18e4ff}\label{a11708_ad74f5838e4cb9209afc0c7bc1a18e4ff}} 
\hyperlink{a11608}{Half\+Face\+Handle} {\bfseries neighboring\+\_\+outside\+\_\+halfface} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Half\+Edge\+Handle} \&\+\_\+heh) const
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a11708_ae407f45a8e436b3488263c35ea29bd16}\label{a11708_ae407f45a8e436b3488263c35ea29bd16}} 
static unsigned char {\bfseries opposite\+\_\+orientation} (const unsigned char \+\_\+d)
\item 
\mbox{\Hypertarget{a11708_a58ba6bf16e515cab654c5f4e5e67f17a}\label{a11708_a58ba6bf16e515cab654c5f4e5e67f17a}} 
static unsigned char {\bfseries orthogonal\+\_\+orientation} (const unsigned char \+\_\+o1, const unsigned char \+\_\+o2)
\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a11708_a21a27f073b05f7ae78762188340af60a}\label{a11708_a21a27f073b05f7ae78762188340af60a}} 
static const unsigned char {\bfseries XF} = 0
\item 
\mbox{\Hypertarget{a11708_a16d5eb20c5889a6b85788255428e5df3}\label{a11708_a16d5eb20c5889a6b85788255428e5df3}} 
static const unsigned char {\bfseries XB} = 1
\item 
\mbox{\Hypertarget{a11708_ac3ac957b541f33ea41bc551ced655aac}\label{a11708_ac3ac957b541f33ea41bc551ced655aac}} 
static const unsigned char {\bfseries YF} = 2
\item 
\mbox{\Hypertarget{a11708_a42de3845505410e6aa780ce4b8c09005}\label{a11708_a42de3845505410e6aa780ce4b8c09005}} 
static const unsigned char {\bfseries YB} = 3
\item 
\mbox{\Hypertarget{a11708_ad9ba9fe1340c5ea81867a5ffc5290132}\label{a11708_ad9ba9fe1340c5ea81867a5ffc5290132}} 
static const unsigned char {\bfseries ZF} = 4
\item 
\mbox{\Hypertarget{a11708_a83b5c8a8ee06bb696cd2c695d9e8369b}\label{a11708_a83b5c8a8ee06bb696cd2c695d9e8369b}} 
static const unsigned char {\bfseries ZB} = 5
\item 
\mbox{\Hypertarget{a11708_abdf326cafdbecfd20c0d9ca0b0fe4b25}\label{a11708_abdf326cafdbecfd20c0d9ca0b0fe4b25}} 
static const unsigned char {\bfseries I\+N\+V\+A\+L\+ID} = 6
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a11708_acff0d2637a7c24cdd1d383de4a1af05b}\label{a11708_acff0d2637a7c24cdd1d383de4a1af05b}} 
bool {\bfseries check\+\_\+halfface\+\_\+ordering} (const std\+::vector$<$ \hyperlink{a11608}{Half\+Face\+Handle} $>$ \&\+\_\+hfs) const
\item 
\mbox{\Hypertarget{a11708_a6055f088fe12320b85b8abd21728fc6e}\label{a11708_a6055f088fe12320b85b8abd21728fc6e}} 
const \hyperlink{a11608}{Half\+Face\+Handle} \& {\bfseries get\+\_\+adjacent\+\_\+halfface} (const \hyperlink{a11608}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a11608}{Half\+Edge\+Handle} \&\+\_\+heh, const std\+::vector$<$ \hyperlink{a11608}{Half\+Face\+Handle} $>$ \&\+\_\+halffaces) const
\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a11708_afecbff9427d766eb1ce2fe35b933587f}\label{a11708_afecbff9427d766eb1ce2fe35b933587f}} 
class {\bfseries Cell\+Sheet\+Cell\+Iter}
\item 
\mbox{\Hypertarget{a11708_a6cb4060a8f13c407f76d5275236f094f}\label{a11708_a6cb4060a8f13c407f76d5275236f094f}} 
class {\bfseries Half\+Face\+Sheet\+Half\+Face\+Iter}
\item 
\mbox{\Hypertarget{a11708_a7179f15bad675d26d7bfc143604a0d4f}\label{a11708_a7179f15bad675d26d7bfc143604a0d4f}} 
class {\bfseries Hex\+Vertex\+Iter}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
A data structure basing on Polyhedral\+Mesh with specializations for hexahedra. 

The hexahedron has an induced \char`\"{}virtual\char`\"{} 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.



The abbreviations XF, XB, etc. are short for

\begin{DoxyItemize}
\item {\ttfamily XF\+:} X-\/axis front face \item {\ttfamily XB\+:} X-\/axis back face \item {\ttfamily YF\+:} Y-\/axis front face \item {\ttfamily }...\end{DoxyItemize}
The axes refer to the intrinsic \char`\"{}virtual\char`\"{} axes of the hexahedron. The incident half-\/faces have to be defined in the following order\+:

\begin{DoxyItemize}
\item {\ttfamily 1}. XF \item {\ttfamily 2}. XB \item {\ttfamily 3}. YF \item {\ttfamily 4}. YB \item {\ttfamily 5}. ZF \item {\ttfamily 6}. ZB \end{DoxyItemize}


Definition at line 86 of file Hexahedral\+Mesh\+Topology\+Kernel.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a11708_a0a355e4e68eb1f8859e7db57948607c1}\label{a11708_a0a355e4e68eb1f8859e7db57948607c1}} 
\index{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}!add\+\_\+cell@{add\+\_\+cell}}
\index{add\+\_\+cell@{add\+\_\+cell}!Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}}
\subsubsection{\texorpdfstring{add\+\_\+cell()}{add\_cell()}}
{\footnotesize\ttfamily \hyperlink{a11608}{Cell\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+cell (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{a11608}{Vertex\+Handle} $>$ \&}]{\+\_\+vertices,  }\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false} }\end{DoxyParamCaption})}



Add cell via incident vertices. 

Test whether all required faces are already defined and, if not, create them. Give vertices in the following order\+: \begin{DoxyVerb} 5-------6
/|      /|
\end{DoxyVerb}
 / $\vert$ / $\vert$ 3-\/-\/-\/-\/---2 $\vert$ $\vert$ 4-\/---$\vert$--7 $\vert$ / $\vert$ / $\vert$/ $\vert$/ 0-\/-\/-\/-\/---1


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertices} & A list of vertices in the correct order \\
\hline
{\em \+\_\+topology\+Check} & Flag if a topology check should be performed before adding the cell\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hexahedron\textquotesingle{}s cell handle 
\end{DoxyReturn}


Definition at line 290 of file Hexahedral\+Mesh\+Topology\+Kernel.\+cc.

\mbox{\Hypertarget{a11708_a24812b87dd16229d6e4543a3ec97cf6f}\label{a11708_a24812b87dd16229d6e4543a3ec97cf6f}} 
\index{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}!add\+\_\+face@{add\+\_\+face}}
\index{add\+\_\+face@{add\+\_\+face}!Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}}
\subsubsection{\texorpdfstring{add\+\_\+face()}{add\_face()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \hyperlink{a11608}{Face\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{a11608}{Half\+Edge\+Handle} $>$ \&}]{\+\_\+halfedges,  }\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Add face via incident edges. 

Add face via incident edges

\begin{DoxyReturn}{Returns}
Handle of the new face, Invalid\+Face\+Handle if {\itshape \+\_\+halfedges} are not connected and {\itshape \+\_\+topology\+Check} is {\itshape true}.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If \+\_\+halfedges are not connected and {\itshape \+\_\+topology\+Check} is {\itshape false}, the behavior is undefined. 
\end{DoxyWarning}


Reimplemented from \hyperlink{a11652_a0d39e76cff8a318046e640b3887a6845}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



Definition at line 62 of file Hexahedral\+Mesh\+Topology\+Kernel.\+cc.

\mbox{\Hypertarget{a11708_aa3abb32b64daa7a4b834304c082e6c1d}\label{a11708_aa3abb32b64daa7a4b834304c082e6c1d}} 
\index{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}!add\+\_\+face@{add\+\_\+face}}
\index{add\+\_\+face@{add\+\_\+face}!Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel}}
\subsubsection{\texorpdfstring{add\+\_\+face()}{add\_face()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \hyperlink{a11608}{Face\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{a11608}{Vertex\+Handle} $>$ \&}]{\+\_\+vertices }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Add face via incident vertices. 

Add face via incident vertices Define the \+\_\+vertices in counter-\/clockwise order (from the \char`\"{}outside\char`\"{}) 

Reimplemented from \hyperlink{a11652_a12dfd3700d0fb4c0374865c0e55bbef4}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



Definition at line 79 of file Hexahedral\+Mesh\+Topology\+Kernel.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Type-\/\+Open\+Volume\+Mesh/libs/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Hexahedral\+Mesh\+Topology\+Kernel.\+hh\item 
Type-\/\+Open\+Volume\+Mesh/libs/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Hexahedral\+Mesh\+Topology\+Kernel.\+cc\end{DoxyCompactItemize}
