Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// ============================================================================
// == ==
// == AMDiS - Adaptive multidimensional simulations ==
// == ==
// ============================================================================
// == ==
// == crystal growth group ==
// == ==
// == Stiftung caesar ==
// == Ludwig-Erhard-Allee 2 ==
// == 53175 Bonn ==
// == germany ==
// == ==
// ============================================================================
// == ==
// == http://www.caesar.de/cg/AMDiS ==
// == ==
// ============================================================================
/** \file ElInfo3d.h */
#ifndef AMDIS_ELINFO3D_H
#define AMDIS_ELINFO3D_H
#include "ElInfo.h"
#include "MemoryManager.h"
namespace AMDiS {
// ============================================================================
// ===== class ElInfo3d =======================================================
// ============================================================================
/** \ingroup Traverse
* \brief
* ElInfo class for 3-dimensional elements (\ref Tetrahedron).
*/
class ElInfo3d : public ElInfo
{
public:
MEMORY_MANAGED(ElInfo3d);
/** \brief
* Constructor. Calls ElInfo's protected Constructor.
*/
ElInfo3d(Mesh* aMesh) : ElInfo(aMesh) {};
/** \brief
* Assignment operator
*/
ElInfo3d& operator=(const ElInfo3d& rhs) {
ElInfo::operator=(rhs);
el_type = rhs.el_type;
orientation = rhs.orientation;
return *this;
}
/** \brief
* 3-dimensional realisation of ElInfo's fillElInfo method.
*/
void fillElInfo(int ichild, const ElInfo *elinfo_old);
/** \brief
* 3-dimensional realisation of ElInfo's fillMacroInfo method.
*/
void fillMacroInfo(const MacroElement *);
/** \brief
* 3-dimensional realisation of ElInfo's worldToCoord method.
*/
const int worldToCoord(const WorldVector<double>& w, DimVec<double>* l) const;
/** \brief
* 3-dimensional realisation of ElInfo's calcGrdLambda method.
*/
double calcGrdLambda(DimVec<WorldVector<double> >& grd_lam) const;
/** \brief
* 3-dimensional realisation of ElInfo's getNormal method.
*/
double getNormal(int side, WorldVector<double> &normal) const;
/** \brief
* update ElInfo after refinement (of some neighbours). Only in 3d!
*/
void update();
/** \brief
* get ElInfo's \ref el_type
*/

Thomas Witkowski
committed
inline unsigned char getType() const {
return el_type;
};
/** \brief
* get ElInfo's \ref orientation
*/

Thomas Witkowski
committed
inline signed char getOrientation() const {
return orientation;
};
/** \brief
* set ElInfo's \ref el_type to t
*/

Thomas Witkowski
committed
inline void setType(unsigned char t) {
el_type = t;
};
/** \brief
* set ElInfo's \ref orientation to o
*/

Thomas Witkowski
committed
inline void setOrientation(signed char o) {
orientation = o;
};
protected:
/** \brief
* \ref el 's type. Is Filled automatically by the traversal routines.
*/
unsigned char el_type;
/** \brief
* +/- 1: sign of the determinant of the transformation to the reference
* element with vertices (0,0,0), (1,1,1), (1,1,0), (1,0,0).
*/
signed char orientation;
};
}
#endif // AMDIS_ELINFO3D_H