\hypertarget{a00698}{\section{Open\+Volume\+Mesh\+:\+:Hexahedral\+Mesh\+Topology\+Kernel Class Reference}
\label{a00698}\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 $<$libs\+\_\+required/\+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]{a00698}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00698_a2aa8f199531e0e3700218053212fdf46}{typedef class Cell\+Sheet\+Cell\+Iter {\bfseries Cell\+Sheet\+Cell\+Iter}}\label{a00698_a2aa8f199531e0e3700218053212fdf46}

\item 
\hypertarget{a00698_a80431f7882963b420ffcb50bcfe7b2a4}{typedef class \\*
Half\+Face\+Sheet\+Half\+Face\+Iter {\bfseries Half\+Face\+Sheet\+Half\+Face\+Iter}}\label{a00698_a80431f7882963b420ffcb50bcfe7b2a4}

\item 
\hypertarget{a00698_a1e177f5712ff5a3abd4388e2550e28a6}{typedef class Hex\+Vertex\+Iter {\bfseries Hex\+Vertex\+Iter}}\label{a00698_a1e177f5712ff5a3abd4388e2550e28a6}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \hyperlink{a00556}{Face\+Handle} \hyperlink{a00698_a24812b87dd16229d6e4543a3ec97cf6f}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a00669}{Half\+Edge\+Handle} $>$ \&\+\_\+halfedges, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add face via incident edges. \end{DoxyCompactList}\item 
virtual \hyperlink{a00556}{Face\+Handle} \hyperlink{a00698_aa3abb32b64daa7a4b834304c082e6c1d}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ \&\+\_\+vertices)
\begin{DoxyCompactList}\small\item\em Add face via incident vertices. \end{DoxyCompactList}\item 
\hypertarget{a00698_ad4591572bf3c6526052e1b81b0db60d9}{virtual \hyperlink{a00393}{Cell\+Handle} \hyperlink{a00698_ad4591572bf3c6526052e1b81b0db60d9}{add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a00675}{Half\+Face\+Handle} $>$ \&\+\_\+halffaces, bool \+\_\+topology\+Check=false)}\label{a00698_ad4591572bf3c6526052e1b81b0db60d9}

\begin{DoxyCompactList}\small\item\em Overridden function. \end{DoxyCompactList}\item 
\hyperlink{a00393}{Cell\+Handle} \hyperlink{a00698_a0a355e4e68eb1f8859e7db57948607c1}{add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ \&\+\_\+vertices, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add cell via incident vertices. \end{DoxyCompactList}\item 
\hypertarget{a00698_a37e9bbf840ce3109849dde962bdd5755}{Cell\+Sheet\+Cell\+Iter {\bfseries csc\+\_\+iter} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, const unsigned char \+\_\+orth\+Dir, int \+\_\+max\+\_\+laps=1) const }\label{a00698_a37e9bbf840ce3109849dde962bdd5755}

\item 
\hypertarget{a00698_a65c8eafd30b4b1d5eb9650035f83b63f}{std\+::pair$<$ Cell\+Sheet\+Cell\+Iter, \\*
Cell\+Sheet\+Cell\+Iter $>$ {\bfseries cell\+\_\+sheet\+\_\+cells} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, const unsigned char \+\_\+orth\+Dir, int \+\_\+max\+\_\+laps=1) const }\label{a00698_a65c8eafd30b4b1d5eb9650035f83b63f}

\item 
\hypertarget{a00698_a3475a716ccee372dc52e0383a56cfa51}{Half\+Face\+Sheet\+Half\+Face\+Iter {\bfseries hfshf\+\_\+iter} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a00698_a3475a716ccee372dc52e0383a56cfa51}

\item 
\hypertarget{a00698_a67fbed47cf9aaf515ddf0801bcc10afc}{std\+::pair\\*
$<$ Half\+Face\+Sheet\+Half\+Face\+Iter, \\*
Half\+Face\+Sheet\+Half\+Face\+Iter $>$ {\bfseries halfface\+\_\+sheet\+\_\+halffaces} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a00698_a67fbed47cf9aaf515ddf0801bcc10afc}

\item 
\hypertarget{a00698_a5d9b519f724ba4fa0df120c954b0130e}{Hex\+Vertex\+Iter {\bfseries hv\+\_\+iter} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a00698_a5d9b519f724ba4fa0df120c954b0130e}

\item 
\hypertarget{a00698_abc0de2927ab37fb42710b3d8a22b4c8c}{std\+::pair$<$ Hex\+Vertex\+Iter, \\*
Hex\+Vertex\+Iter $>$ {\bfseries hex\+\_\+vertices} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a00698_abc0de2927ab37fb42710b3d8a22b4c8c}

\item 
\hypertarget{a00698_a885e9cf26e965620562714351acd0b6b}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries opposite\+\_\+halfface\+\_\+handle\+\_\+in\+\_\+cell} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a885e9cf26e965620562714351acd0b6b}

\item 
\hypertarget{a00698_a678c85340f094713f3a08143fe9b0076}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries xfront\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a678c85340f094713f3a08143fe9b0076}

\item 
\hypertarget{a00698_a970c51ef45a0c937e2d1e900ea792c93}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries xback\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a970c51ef45a0c937e2d1e900ea792c93}

\item 
\hypertarget{a00698_a321b65058b7fd3665b4e5b388ece60de}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries yfront\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a321b65058b7fd3665b4e5b388ece60de}

\item 
\hypertarget{a00698_a8c13dbee17f6355baf19bd6ed2095e9d}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries yback\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a8c13dbee17f6355baf19bd6ed2095e9d}

\item 
\hypertarget{a00698_a201f237dc7922e9f7e3a224bbccb6d01}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries zfront\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a201f237dc7922e9f7e3a224bbccb6d01}

\item 
\hypertarget{a00698_a40ff7945f3886e5ce81e67f80c6e3db7}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries zback\+\_\+halfface} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a40ff7945f3886e5ce81e67f80c6e3db7}

\item 
\hypertarget{a00698_a6ef70518e03a7fc52140e03e6241a962}{unsigned char {\bfseries orientation} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a6ef70518e03a7fc52140e03e6241a962}

\item 
\hypertarget{a00698_a19e70fb61e009d94bc5075440419705a}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries get\+\_\+oriented\+\_\+halfface} (const unsigned char \+\_\+o, const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ch) const }\label{a00698_a19e70fb61e009d94bc5075440419705a}

\item 
\hypertarget{a00698_afe74401ae2fd1a7a0048179def506d53}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries adjacent\+\_\+halfface\+\_\+on\+\_\+sheet} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00669}{Half\+Edge\+Handle} \&\+\_\+heh) const }\label{a00698_afe74401ae2fd1a7a0048179def506d53}

\item 
\hypertarget{a00698_a10751d4234e48468cce127b77cf65e4c}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries adjacent\+\_\+halfface\+\_\+on\+\_\+surface} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00669}{Half\+Edge\+Handle} \&\+\_\+heh) const }\label{a00698_a10751d4234e48468cce127b77cf65e4c}

\item 
\hypertarget{a00698_ab85fe53d2f558da8c1c566d4aecab7ad}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries neighboring\+\_\+outside\+\_\+halfface} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00669}{Half\+Edge\+Handle} \&\+\_\+heh) const }\label{a00698_ab85fe53d2f558da8c1c566d4aecab7ad}

\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00698_ae407f45a8e436b3488263c35ea29bd16}{static unsigned char {\bfseries opposite\+\_\+orientation} (const unsigned char \+\_\+d)}\label{a00698_ae407f45a8e436b3488263c35ea29bd16}

\item 
\hypertarget{a00698_a58ba6bf16e515cab654c5f4e5e67f17a}{static unsigned char {\bfseries orthogonal\+\_\+orientation} (const unsigned char \+\_\+o1, const unsigned char \+\_\+o2)}\label{a00698_a58ba6bf16e515cab654c5f4e5e67f17a}

\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00698_a21a27f073b05f7ae78762188340af60a}{static const unsigned char {\bfseries X\+F} = 0}\label{a00698_a21a27f073b05f7ae78762188340af60a}

\item 
\hypertarget{a00698_a16d5eb20c5889a6b85788255428e5df3}{static const unsigned char {\bfseries X\+B} = 1}\label{a00698_a16d5eb20c5889a6b85788255428e5df3}

\item 
\hypertarget{a00698_ac3ac957b541f33ea41bc551ced655aac}{static const unsigned char {\bfseries Y\+F} = 2}\label{a00698_ac3ac957b541f33ea41bc551ced655aac}

\item 
\hypertarget{a00698_a42de3845505410e6aa780ce4b8c09005}{static const unsigned char {\bfseries Y\+B} = 3}\label{a00698_a42de3845505410e6aa780ce4b8c09005}

\item 
\hypertarget{a00698_ad9ba9fe1340c5ea81867a5ffc5290132}{static const unsigned char {\bfseries Z\+F} = 4}\label{a00698_ad9ba9fe1340c5ea81867a5ffc5290132}

\item 
\hypertarget{a00698_a83b5c8a8ee06bb696cd2c695d9e8369b}{static const unsigned char {\bfseries Z\+B} = 5}\label{a00698_a83b5c8a8ee06bb696cd2c695d9e8369b}

\item 
\hypertarget{a00698_abdf326cafdbecfd20c0d9ca0b0fe4b25}{static const unsigned char {\bfseries I\+N\+V\+A\+L\+I\+D} = 6}\label{a00698_abdf326cafdbecfd20c0d9ca0b0fe4b25}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00698_a1537c1aaab22730009ff4e748335c2d7}{bool {\bfseries check\+\_\+halfface\+\_\+ordering} (const std\+::vector$<$ \hyperlink{a00675}{Half\+Face\+Handle} $>$ \&\+\_\+hfs) const }\label{a00698_a1537c1aaab22730009ff4e748335c2d7}

\item 
\hypertarget{a00698_a3095c57898f434ab84633e04530c521d}{const \hyperlink{a00675}{Half\+Face\+Handle} \& {\bfseries get\+\_\+adjacent\+\_\+halfface} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+hfh, const \hyperlink{a00669}{Half\+Edge\+Handle} \&\+\_\+heh, const std\+::vector$<$ \hyperlink{a00675}{Half\+Face\+Handle} $>$ \&\+\_\+halffaces) const }\label{a00698_a3095c57898f434ab84633e04530c521d}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00698_afecbff9427d766eb1ce2fe35b933587f}{class {\bfseries Cell\+Sheet\+Cell\+Iter}}\label{a00698_afecbff9427d766eb1ce2fe35b933587f}

\item 
\hypertarget{a00698_a6cb4060a8f13c407f76d5275236f094f}{class {\bfseries Half\+Face\+Sheet\+Half\+Face\+Iter}}\label{a00698_a6cb4060a8f13c407f76d5275236f094f}

\item 
\hypertarget{a00698_a7179f15bad675d26d7bfc143604a0d4f}{class {\bfseries Hex\+Vertex\+Iter}}\label{a00698_a7179f15bad675d26d7bfc143604a0d4f}

\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 X\+F, X\+B, etc. are short for

\begin{DoxyItemize}
\item {\ttfamily X\+F\+:} X-\/axis front face \item {\ttfamily X\+B\+:} X-\/axis back face \item {\ttfamily Y\+F\+:} 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}. X\+F \item {\ttfamily 2}. X\+B \item {\ttfamily 3}. Y\+F \item {\ttfamily 4}. Y\+B \item {\ttfamily 5}. Z\+F \item {\ttfamily 6}. Z\+B \end{DoxyItemize}


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



\subsection{Member Function Documentation}
\hypertarget{a00698_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[{add\+\_\+cell}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Cell\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+cell (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Vertex\+Handle} $>$ \&}]{\+\_\+vertices, }
\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{a00698_a0a355e4e68eb1f8859e7db57948607c1}


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's cell handle 
\end{DoxyReturn}


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

\hypertarget{a00698_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[{add\+\_\+face}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Face\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Half\+Edge\+Handle} $>$ \&}]{\+\_\+halfedges, }
\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00698_a24812b87dd16229d6e4543a3ec97cf6f}


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{a01314_a0d39e76cff8a318046e640b3887a6845}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



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

\hypertarget{a00698_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[{add\+\_\+face}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Face\+Handle} Open\+Volume\+Mesh\+::\+Hexahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Vertex\+Handle} $>$ \&}]{\+\_\+vertices}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00698_aa3abb32b64daa7a4b834304c082e6c1d}


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{a01314_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 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Hexahedral\+Mesh\+Topology\+Kernel.\+hh\item 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Hexahedral\+Mesh\+Topology\+Kernel.\+cc\end{DoxyCompactItemize}
