Loading [MathJax]/extensions/tex2jax.js

DUNE MultiDomainGrid (2.8)

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