Loading [MathJax]/extensions/tex2jax.js

DUNE MultiDomainGrid (2.8)

localgeometry.hh
1#ifndef DUNE_MULTIDOMAINGRID_LOCALGEOMETRY_HH
2#define DUNE_MULTIDOMAINGRID_LOCALGEOMETRY_HH
3
4#include <dune/grid/common/geometry.hh>
5
6namespace Dune {
7
8namespace mdgrid {
9
10
11template<int mydim, int coorddim, typename GridImp>
12class LocalGeometryWrapper
13{
14
15 template<int,int,typename>
16 friend class EntityWrapper;
17
18 template<typename,typename>
19 friend class IntersectionWrapper;
20
21 template<typename,typename,typename,typename>
22 friend class SubDomainInterface;
23
24public:
25
26 typedef typename GridImp::ctype ctype;
27 static const int dimension = GridImp::dimension;
28 static const int dimensionworld = GridImp::dimensionworld;
29 static const int mydimension = mydim;
30 static const int coorddimension = coorddim;
31
32private:
33
34 typedef FieldVector<ctype,coorddimension> GlobalCoords;
35 typedef FieldVector<ctype,mydimension> LocalCoords;
36 typedef typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::LocalGeometry HostLocalGeometry; //TODO: fix this
37
38public:
39
40 typedef typename HostLocalGeometry::JacobianInverseTransposed JacobianInverseTransposed;
41 typedef typename HostLocalGeometry::JacobianTransposed JacobianTransposed;
42
43 GeometryType type() const {
44 return _wrappedLocalGeometry.type();
45 }
46
47 int corners() const {
48 return _wrappedLocalGeometry.corners();
49 }
50
51 bool affine() const {
52 return _wrappedLocalGeometry.affine();
53 }
54
55 GlobalCoords corner(int i) const {
56 return _wrappedLocalGeometry.corner(i);
57 }
58
59 GlobalCoords global(const LocalCoords& local) const {
60 return _wrappedLocalGeometry.global(local);
61 }
62
63 LocalCoords local(const GlobalCoords& global) const {
64 return _wrappedLocalGeometry.local(global);
65 }
66
67 bool checkInside(const LocalCoords& local) const {
68 return _wrappedLocalGeometry.checkInside(local);
69 }
70
71 ctype integrationElement(const LocalCoords& local) const {
72 return _wrappedLocalGeometry.integrationElement(local);
73 }
74
75 ctype volume() const {
76 return _wrappedLocalGeometry.volume();
77 }
78
79 GlobalCoords center() const {
80 return _wrappedLocalGeometry.center();
81 }
82
83 const JacobianTransposed
84 jacobianTransposed(const LocalCoords& local) const {
85 return _wrappedLocalGeometry.jacobianTransposed(local);
86 }
87
88 const JacobianInverseTransposed
89 jacobianInverseTransposed(const LocalCoords& local) const {
90 return _wrappedLocalGeometry.jacobianInverseTransposed(local);
91 }
92
93private:
94
95 const HostLocalGeometry _wrappedLocalGeometry;
96
97 LocalGeometryWrapper(const HostLocalGeometry& wrappedLocalGeometry)
98 : _wrappedLocalGeometry(wrappedLocalGeometry)
99 {}
100
101
102};
103
104} // namespace mdgrid
105
106} // namespace Dune
107
108#endif // DUNE_MULTIDOMAINGRID_LOCALGEOMETRY_HH
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Apr 10, 22:40, 2025)