ug4
orientation_util.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG_orientation_util
34 #define __H__UG_orientation_util
35 
36 #include "../grid/grid.h"
37 
38 namespace ug{
39 
42 
43 template <class iter_t>
44 void InvertOrientation(Grid& grid, iter_t elemsBegin,
45  iter_t elemsEnd);
46 
48 // EdgeOrientationMatches
50 
58 UG_API
59 bool EdgeOrientationMatches(EdgeVertices* ev, Face* f);
60 
61 UG_API
62 bool OrientationMatches(EdgeVertices* ev, Face* f);
65 UG_API
66 bool OrientationMatches(FaceVertices* fv, Volume* v);
67 
69 // FixOrientation
71 
82 template <class TFaceIterator>
83 void FixFaceOrientation(Grid& grid, TFaceIterator facesBegin,
84  TFaceIterator facesEnd);
85 
88 
100 template<class TAAPosVRT>
101 bool
102 CheckOrientation(Volume* vol, TAAPosVRT& aaPosVRT);
103 
106 
115 template<class TVolIterator, class TAAPosVRT>
116 int
117 FixOrientation(Grid& grid, TVolIterator volsBegin, TVolIterator volsEnd,
118  TAAPosVRT& aaPosVRT);
119 
120 }// end of namespace
121 
122 
124 // include implementation
125 #include "orientation_util_impl.hpp"
126 
127 #endif //__H__UG_orientation_util
#define UG_API
Definition: ug_config.h:65
the ug namespace
bool CheckOrientation(Volume *vol, TAAPosVRT &aaPosVRT)
returns true if the volume is oriented so that all sides point to this outside.
Definition: orientation_util_impl.hpp:155
int FixOrientation(Grid &grid, TVolIterator volsBegin, TVolIterator volsEnd, TAAPosVRT &aaPosVRT)
Changes orientation of badly oriented volumes.
Definition: orientation_util_impl.hpp:188
bool OrientationMatches(const EdgeVertices &e1, const EdgeVertices &e2)
Definition: orientation.cpp:60
void InvertOrientation(Grid &grid, iter_t elemsBegin, iter_t elemsEnd)
inverts the orientation of all elements between elemsBegin and elemsEnd
Definition: orientation_util_impl.hpp:50
bool EdgeOrientationMatches(EdgeVertices *ev, Face *f)
checks if the edge-orientation of the edge and the face matches.
Definition: orientation_util.cpp:37
void FixFaceOrientation(Grid &grid, TFaceIterator facesBegin, TFaceIterator facesEnd)
creates uniform orientation of neighboured and boundary faces.
Definition: orientation_util_impl.hpp:61