dune-fem 2.12-git
Loading...
Searching...
No Matches
gridpart/idgridpart/geometry.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_GRIDPART_IDGRIDPART_GEOMETRY_HH
2#define DUNE_FEM_GRIDPART_IDGRIDPART_GEOMETRY_HH
3
4#include <type_traits>
5
6#include <dune/grid/common/geometry.hh>
7
8namespace Dune
9{
10
11 namespace Fem
12 {
13
14 // Internal Forward Declarations
15 // -----------------------------
16
17 template< int, int, class > class IdGeometry;
18 template< int, int, class > class IdLocalGeometry;
19
20
21 // IdBasicGeometry
22 // ---------------
23
24 template< class Traits >
26 {
27 typedef typename Traits::HostGeometryType HostGeometryType;
28
29 static const int mydimension = HostGeometryType::mydimension;
30 static const int coorddimension = HostGeometryType::coorddimension;
31
32 typedef typename HostGeometryType::ctype ctype;
35
36 typedef typename HostGeometryType::JacobianTransposed JacobianTransposed;
37 typedef typename HostGeometryType::JacobianInverseTransposed JacobianInverseTransposed;
38
39 typedef typename HostGeometryType::Jacobian Jacobian;
40 typedef typename HostGeometryType::JacobianInverse JacobianInverse;
41
42 IdBasicGeometry ( const HostGeometryType &hostGeometry )
43 : hostGeometry_( hostGeometry )
44 {}
45
46 operator bool () const { return bool( hostGeometry_ ); }
47
48 GeometryType type () const { return hostGeometry_.type(); }
49 bool affine () const { return hostGeometry_.affine(); }
50
51 int corners () const { return hostGeometry_.corners(); }
52 GlobalVector corner ( const int i ) const { return hostGeometry_.corner( i ); }
53 GlobalVector center () const { return hostGeometry_.center(); }
54
55 GlobalVector global ( const LocalVector &local ) const { return hostGeometry_.global( local ); }
56 LocalVector local ( const GlobalVector &global ) const { return hostGeometry_.local( global ); }
57
58 ctype integrationElement ( const LocalVector &local ) const { return hostGeometry_.integrationElement( local ); }
59 ctype volume () const { return hostGeometry_.volume(); }
60
62 {
63 return hostGeometry_.jacobianTransposed( local );
64 }
65
67 {
68 return hostGeometry_.jacobianInverseTransposed( local );
69 }
70
72 {
73 return hostGeometry_.jacobian( local );
74 }
75
77 {
78 return hostGeometry_.jacobianInverse( local );
79 }
80
81 private:
82 HostGeometryType hostGeometry_;
83 };
84
85
86
87 // IdGeometryTraits
88 // ----------------
89
90 template< int mydim, class GridFamily >
92 {
94
95 static const int dimension = HostGridPartType::dimension;
96 static const int mydimension = mydim;
97 static const int codimension = dimension - mydimension;
98
99 typedef typename HostGridPartType::template Codim< codimension >::GeometryType HostGeometryType;
100 };
101
102
103
104 // IdGeometry
105 // ----------
106
107 template< int mydim, int cdim, class GridFamily >
109 : public IdBasicGeometry< IdGeometryTraits< mydim, GridFamily > >
110 {
112
113 public:
115
117 {}
118
119 IdGeometry ( const HostGeometryType &hostGeometry )
120 : Base( hostGeometry )
121 {}
122 };
123
124
125
126 // IdLocalGeometryTraits
127 // ---------------------
128
129 template< int mydim, class GridFamily >
131 {
133
134 static const int dimension = HostGridPartType::dimension;
135 static const int mydimension = mydim;
136 static const int codimension = dimension - mydimension;
137
138 typedef typename HostGridPartType::template Codim< codimension >::LocalGeometryType HostGeometryType;
139 };
140
141
142
143 // IdLocalGeometry
144 // -------------------
145
146 template< int mydim, int cdim, class GridFamily >
148 : public IdBasicGeometry< IdLocalGeometryTraits< mydim, GridFamily > >
149 {
151
152 public:
154
157
158 IdLocalGeometry ( const HostGeometryType &hostGeometry )
159 : Base( hostGeometry )
160 {}
161 };
162
163 } // namespace Fem
164
165} // namespace Dune
166
167#endif // #ifndef DUNE_FEM_GRIDPART_IDGRIDPART_GEOMETRY_HH
const GlobalIndex & global() const
LocalIndex & local()
Definition gridpart/idgridpart/geometry.hh:110
IdGeometry()
Definition gridpart/idgridpart/geometry.hh:116
Base::HostGeometryType HostGeometryType
Definition gridpart/idgridpart/geometry.hh:114
IdGeometry(const HostGeometryType &hostGeometry)
Definition gridpart/idgridpart/geometry.hh:119
Definition gridpart/idgridpart/geometry.hh:149
IdLocalGeometry(const HostGeometryType &hostGeometry)
Definition gridpart/idgridpart/geometry.hh:158
IdLocalGeometry()
Definition gridpart/idgridpart/geometry.hh:155
Base::HostGeometryType HostGeometryType
Definition gridpart/idgridpart/geometry.hh:153
Definition gridpart/idgridpart/geometry.hh:26
bool affine() const
Definition gridpart/idgridpart/geometry.hh:49
ctype integrationElement(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:58
FieldVector< ctype, coorddimension > GlobalVector
Definition gridpart/idgridpart/geometry.hh:34
Traits::HostGeometryType HostGeometryType
Definition gridpart/idgridpart/geometry.hh:27
GlobalVector corner(const int i) const
Definition gridpart/idgridpart/geometry.hh:52
JacobianTransposed jacobianTransposed(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:61
JacobianInverseTransposed jacobianInverseTransposed(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:66
int corners() const
Definition gridpart/idgridpart/geometry.hh:51
GeometryType type() const
Definition gridpart/idgridpart/geometry.hh:48
LocalVector local(const GlobalVector &global) const
Definition gridpart/idgridpart/geometry.hh:56
HostGeometryType::ctype ctype
Definition gridpart/idgridpart/geometry.hh:32
static const int coorddimension
Definition gridpart/idgridpart/geometry.hh:30
GlobalVector global(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:55
GlobalVector center() const
Definition gridpart/idgridpart/geometry.hh:53
HostGeometryType::JacobianTransposed JacobianTransposed
Definition gridpart/idgridpart/geometry.hh:36
ctype volume() const
Definition gridpart/idgridpart/geometry.hh:59
HostGeometryType::JacobianInverseTransposed JacobianInverseTransposed
Definition gridpart/idgridpart/geometry.hh:37
JacobianInverse jacobianInverse(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:76
static const int mydimension
Definition gridpart/idgridpart/geometry.hh:29
HostGeometryType::Jacobian Jacobian
Definition gridpart/idgridpart/geometry.hh:39
FieldVector< ctype, mydimension > LocalVector
Definition gridpart/idgridpart/geometry.hh:33
IdBasicGeometry(const HostGeometryType &hostGeometry)
Definition gridpart/idgridpart/geometry.hh:42
Jacobian jacobian(const LocalVector &local) const
Definition gridpart/idgridpart/geometry.hh:71
HostGeometryType::JacobianInverse JacobianInverse
Definition gridpart/idgridpart/geometry.hh:40
Definition gridpart/idgridpart/geometry.hh:92
static const int codimension
Definition gridpart/idgridpart/geometry.hh:97
std::remove_const< GridFamily >::type::Traits::HostGridPartType HostGridPartType
Definition gridpart/idgridpart/geometry.hh:93
static const int dimension
Definition gridpart/idgridpart/geometry.hh:95
HostGridPartType::template Codim< codimension >::GeometryType HostGeometryType
Definition gridpart/idgridpart/geometry.hh:99
static const int mydimension
Definition gridpart/idgridpart/geometry.hh:96
Definition gridpart/idgridpart/geometry.hh:131
static const int codimension
Definition gridpart/idgridpart/geometry.hh:136
static const int dimension
Definition gridpart/idgridpart/geometry.hh:134
std::remove_const< GridFamily >::type::Traits::HostGridPartType HostGridPartType
Definition gridpart/idgridpart/geometry.hh:132
HostGridPartType::template Codim< codimension >::LocalGeometryType HostGeometryType
Definition gridpart/idgridpart/geometry.hh:138
static const int mydimension
Definition gridpart/idgridpart/geometry.hh:135