1 #ifndef DUNE_FEM_TWISTPROVIDER_HH 2 #define DUNE_FEM_TWISTPROVIDER_HH 11 #include <dune/geometry/referenceelements.hh> 16 #include "topology.hh" 25 template <
class ct,
int dim>
27 template <
class ct,
int dim>
29 template <
class ct,
int dim>
48 template <
class ct,
int dim>
64 void addMapper(
const MapperType& mapper,
int twist);
67 size_t addPoint(
const PointType& points);
70 const MapperType&
getMapper(
int twist)
const;
86 MapperVectorType mappers_;
87 PointVectorType points_;
98 template <
class ct,
int dim>
112 static const TwistStorageType& getTwistStorage(
const QuadratureType& quad);
115 typedef std::vector< const TwistStorageType* > MapperContainerType;
116 typedef typename MapperContainerType::iterator IteratorType;
120 class MapperContainer
123 MapperContainerType mappers_;
126 MapperContainer() : mappers_(100, (TwistStorageType*) 0)
132 IteratorType endit = mappers_.end();
133 for(IteratorType it = mappers_.begin(); it != endit; ++it)
141 static MapperContainerType& instance()
144 static MapperContainer mc;
151 template <
class ct,
int dim>
166 virtual const MatrixType& buildTransformationMatrix(
int twist)
const = 0;
177 template <
class ct,
int dim>
196 const TwistStorageType* createStorage()
const;
200 return helper_->minTwist();
205 return helper_->maxTwist();
216 const QuadratureType& quad_;
219 static const ct eps_;
224 template <
class ct,
int dim>
236 virtual const MatrixType& buildTransformationMatrix(
int tiwst)
const;
239 const Dune::ReferenceElement<ct, dim>& refElem_;
240 mutable MatrixType mat_;
245 template <
class ct,
int dim>
257 virtual const MatrixType& buildTransformationMatrix(
int tiwst)
const;
260 const Dune::ReferenceElement<ct, dim>& refElem_;
261 mutable MatrixType mat_;
266 template <
class ct,
int dim>
277 virtual const MatrixType& buildTransformationMatrix(
int twist)
const;
280 const Dune::ReferenceElement<ct, dim>& refElem_;
281 mutable MatrixType mat_;
286 template <
class ct,
int dim>
299 virtual const MatrixType& buildTransformationMatrix(
int twist)
const;
302 const Dune::ReferenceElement<ct, dim>& refElem_;
303 mutable MatrixType mat_;
311 #endif // #ifndef DUNE_FEM_TWISTPROVIDER_HH BaseType::MatrixType MatrixType
Definition: twistprovider.hh:291
TwistMapperStrategy< ct, dim > BaseType
Definition: twistprovider.hh:248
std::vector< size_t > MapperType
Definition: pointmapper.hh:58
virtual ~TwistMapperStrategy()
virtual desctructor because of virtual functions
Definition: twistprovider.hh:164
int minTwist() const
Definition: twistprovider.hh:168
Traits::QuadratureType QuadratureType
Definition: twistprovider.hh:182
Helper class for TwistProvider which takes care of the creation process.
Definition: twistprovider.hh:28
Traits::PointVectorType PointVectorType
Definition: twistprovider.hh:54
Definition: pointmapper.hh:52
void addMapper(const MapperType &mapper, int twist)
Add a new mapper for a given twist.
Definition: twistprovider.cc:16
FieldMatrix< ct, dim+1, dim > MatrixType
Definition: twistprovider.hh:155
Definition: twistprovider.hh:267
TwistStorage(int minTwist, int maxTwist)
Definition: twistprovider.cc:8
Identifies quadrature points on faces with twists For a given quadrature type and a face with a given...
Definition: twistprovider.hh:30
int maxTwist() const
Largest possible twist + 1 for the quadrature's geometry.
Definition: twistprovider.hh:204
virtual ~QuadrilateralTwistMapperStrategy()
virtual desctructor because of virtual functions
Definition: twistprovider.hh:297
Definition: twistprovider.hh:225
BaseType::MatrixType MatrixType
Definition: twistprovider.hh:249
Traits::MapperType MapperType
Definition: twistprovider.hh:184
virtual ~PointTwistMapperStrategy()
virtual desctructor because of virtual functions
Definition: twistprovider.hh:234
int maxTwist() const
Definition: twistprovider.hh:169
int maxTwist() const
Maximal twist + 1.
Definition: twistprovider.cc:52
Definition: coordinate.hh:4
FieldVector< ct, dim+1 > CoordinateType
Definition: twistprovider.hh:185
size_t addPoint(const PointType &points)
Add a point (in the case of asymmetric quadratures)
Definition: twistprovider.cc:23
Traits::QuadratureType QuadratureType
Generic quadrature type.
Definition: twistprovider.hh:104
Access point for PointMapper objects with twist information PointMapper objects get created once and ...
Definition: twistprovider.hh:26
virtual ~LineTwistMapperStrategy()
virtual desctructor because of virtual functions
Definition: twistprovider.hh:255
TwistMapperStrategy< ct, dim > BaseType
Definition: twistprovider.hh:290
QuadratureType::CoordinateType PointType
extracted types from integration point list
Definition: pointmapper.hh:56
const PointVectorType & getPoints() const
Definition: twistprovider.cc:40
BaseType::MatrixType MatrixType
Definition: twistprovider.hh:228
BaseType::MatrixType MatrixType
Definition: twistprovider.hh:270
TwistMapperStrategy< ct, dim > BaseType
Definition: twistprovider.hh:269
Traits::PointType PointType
Definition: twistprovider.hh:53
TwistMapperCreator< ct, dim >::TwistStorageType TwistStorageType
Definition: twistprovider.hh:108
std::vector< PointType > PointVectorType
Definition: pointmapper.hh:57
int minTwist() const
Lowest possible twist for the quadrature's geometry.
Definition: twistprovider.hh:199
const MapperType & getMapper(int twist) const
Access to a mapper.
Definition: twistprovider.cc:33
TwistStorage< ct, dim > TwistStorageType
Definition: twistprovider.hh:186
std::vector< MapperType > MapperVectorType
Definition: pointmapper.hh:59
Definition: twistprovider.hh:246
virtual ~TriangleTwistMapperStrategy()
virtual desctructor because of virtual functions
Definition: twistprovider.hh:275
Traits::PointType PointType
Definition: twistprovider.hh:183
TwistMapperStrategy(int minTwist, int maxTwist)
Definition: twistprovider.hh:158
int minTwist() const
Minimal twist.
Definition: twistprovider.cc:46
TwistMapperStrategy< ct, dim > BaseType
Definition: twistprovider.hh:227
Definition: twistprovider.hh:287
Traits::MapperType MapperType
Definition: twistprovider.hh:55
This class factors out all geometry dependent stuff in a strategy class.
Definition: twistprovider.hh:152