3 #ifndef DUNE_GEOGRID_GEOMETRY_HH
4 #define DUNE_GEOGRID_GEOMETRY_HH
6 #include <dune/common/nullptr.hh>
7 #include <dune/common/typetraits.hh>
9 #include <dune/geometry/referenceelements.hh>
10 #include <dune/geometry/multilineargeometry.hh>
24 template<
class hasSingleGeometryType,
int dim,
int mydim >
28 static const unsigned int id = hasSingleGeometryType::topologyId;
29 static const unsigned int idMask = (1u << mydim) - 1u;
32 static const bool v = hasSingleGeometryType::v && ((mydim == dim) || ((
id | 1u) == 1u) || ((
id | 1u) == idMask));
33 static const unsigned int topologyId = (
v ?
id & idMask : ~0u);
36 template<
class hasSingleGeometryType,
int dim >
39 static const bool v =
true;
40 static const unsigned int topologyId = GenericGeometry::CubeTopology< 1 >::type::id;
43 template<
class hasSingleGeometryType,
int dim >
46 static const bool v =
true;
47 static const unsigned int topologyId = GenericGeometry::CubeTopology< 0 >::type::id;
55 template<
class Gr
id >
58 typedef typename remove_const< Grid >::type::Traits
Traits;
60 typedef typename Traits::ctype
ctype;
62 typedef GenericGeometry::MatrixHelper< GenericGeometry::DuneCoordTraits< ctype > >
MatrixHelper;
64 static ctype tolerance () {
return 16 * std::numeric_limits< ctype >::epsilon(); }
66 template<
int mydim,
int cdim >
83 template<
int mydim,
int cdim,
class Gr
id >
88 typedef typename remove_const< Grid >::type::Traits Traits;
90 template<
int,
int,
class >
friend class Geometry;
93 typedef typename Traits::ctype
ctype;
101 typedef CachedMultiLinearGeometry< ctype, mydimension, coorddimension, GeometryTraits< Grid > >
BasicMapping;
106 template<
class CoordVector >
116 unsigned int refCount_;
131 template<
class CoordVector >
136 void *mappingStorage = grid.allocateStorage(
sizeof(
Mapping ) );
137 mapping_ =
new( mappingStorage )
Mapping( type, coords );
142 : grid_( other.grid_ ),
143 mapping_( other.mapping_ )
162 mapping_ = other.mapping_;
166 operator bool ()
const {
return bool( mapping_ ); }
168 bool affine ()
const {
return mapping_->affine(); }
171 int corners ()
const {
return mapping_->corners(); }
187 void destroyMapping ()
189 mapping_->~Mapping();
190 grid().deallocateStorage( mapping_,
sizeof( Mapping ) );
204 namespace FacadeOptions
207 template<
int mydim,
int cdim,
class Gr
id >
210 static const bool v =
false;
217 #endif // #ifndef DUNE_GEOGRID_GEOMETRY_HH
static const int codimension
Definition: geometrygrid/geometry.hh:98
Mapping::JacobianInverseTransposed JacobianInverseTransposed
Definition: geometrygrid/geometry.hh:124
ctype volume() const
Definition: geometrygrid/geometry.hh:179
Definition: geometrygrid/geometry.hh:56
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
static const bool v
Definition: geometrygrid/geometry.hh:32
Definition: geometrygrid/geometry.hh:103
Traits::ctype ctype
Definition: geometrygrid/geometry.hh:93
Geometry(const Grid &grid, const GeometryType &type, const CoordVector &coords)
Definition: geometrygrid/geometry.hh:132
Traits::ctype ctype
Definition: geometrygrid/geometry.hh:60
remove_const< Grid >::type::Traits Traits
Definition: geometrygrid/geometry.hh:58
Geometry(const Grid &grid)
Definition: geometrygrid/geometry.hh:126
static const int coorddimension
Definition: geometrygrid/geometry.hh:96
Wrapper class for geometries.
Definition: common/geometry.hh:101
ctype integrationElement(const LocalCoordinate &local) const
Definition: geometrygrid/geometry.hh:178
Geometry(const This &other)
Definition: geometrygrid/geometry.hh:141
Traits class determining whether the Dune::Geometry facade class stores the implementation object by ...
Definition: common/geometry.hh:46
Mapping::JacobianTransposed JacobianTransposed
Definition: geometrygrid/geometry.hh:123
GenericGeometry::MatrixHelper< GenericGeometry::DuneCoordTraits< ctype > > MatrixHelper
Definition: geometrygrid/geometry.hh:62
const This & operator=(const This &other)
Definition: geometrygrid/geometry.hh:155
CachedMultiLinearGeometry< ctype, mydimension, coorddimension, GeometryTraits< Grid > > BasicMapping
Definition: geometrygrid/geometry.hh:101
static const int mydimension
Definition: geometrygrid/geometry.hh:95
Mapping::GlobalCoordinate GlobalCoordinate
Definition: geometrygrid/geometry.hh:121
bool affine() const
Definition: geometrygrid/geometry.hh:168
~Geometry()
Definition: geometrygrid/geometry.hh:149
Mapping::LocalCoordinate LocalCoordinate
Definition: geometrygrid/geometry.hh:120
Definition: geometrygrid/geometry.hh:73
Definition: geometrygrid/geometry.hh:67
static const bool v
Whether to store by reference.
Definition: common/geometry.hh:49
GlobalCoordinate corner(const int i) const
Definition: geometrygrid/geometry.hh:172
GeoGrid::CornerStorage< mydim, cdim, Grid > Type
Definition: geometrygrid/geometry.hh:69
Definition: geometrygrid/geometry.hh:25
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:386
int corners() const
Definition: geometrygrid/geometry.hh:171
static const unsigned int topologyId
Definition: geometrygrid/geometry.hh:33
GlobalCoordinate center() const
Definition: geometrygrid/geometry.hh:173
LocalCoordinate local(const GlobalCoordinate &global) const
Definition: geometrygrid/geometry.hh:176
bool removeReference()
Definition: geometrygrid/geometry.hh:113
A set of traits classes to store static information about grid implementation.
GlobalCoordinate global(const LocalCoordinate &local) const
Definition: geometrygrid/geometry.hh:175
static ctype tolerance()
Definition: geometrygrid/geometry.hh:64
const JacobianTransposed & jacobianTransposed(const LocalCoordinate &local) const
Definition: geometrygrid/geometry.hh:181
GeometryType type() const
Definition: geometrygrid/geometry.hh:169
const JacobianInverseTransposed & jacobianInverseTransposed(const LocalCoordinate &local) const
Definition: geometrygrid/geometry.hh:182
Definition: cornerstorage.hh:20
const Grid & grid() const
Definition: geometrygrid/geometry.hh:184
Definition: cornerstorage.hh:172
static const int dimension
Definition: geometrygrid/geometry.hh:97
Mapping(const GeometryType &type, const CoordVector &coords)
Definition: geometrygrid/geometry.hh:107
Definition: geometrygrid/geometry.hh:84
void addReference()
Definition: geometrygrid/geometry.hh:112