Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
38namespace ug{
39
42
43template <class iter_t>
44void InvertOrientation(Grid& grid, iter_t elemsBegin,
45 iter_t elemsEnd);
46
48// EdgeOrientationMatches
50
58UG_API
59bool EdgeOrientationMatches(EdgeVertices* ev, Face* f);
60
61UG_API
62bool OrientationMatches(EdgeVertices* ev, Face* f);
65UG_API
66bool OrientationMatches(FaceVertices* fv, Volume* v);
67
69// FixOrientation
71
82template <class TFaceIterator>
83void FixFaceOrientation(Grid& grid, TFaceIterator facesBegin,
84 TFaceIterator facesEnd);
85
88
100template<class TAAPosVRT>
101bool
102CheckOrientation(Volume* vol, TAAPosVRT& aaPosVRT);
103
106
115template<class TVolIterator, class TAAPosVRT>
116int
117FixOrientation(Grid& grid, TVolIterator volsBegin, TVolIterator volsEnd,
118 TAAPosVRT& aaPosVRT);
119
120}// end of namespace
121
122
124// include implementation
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