Skip to content
Snippets Groups Projects
Commit 25415575 authored by Adrian Burri's avatar Adrian Burri
Browse files

const issues and alleviating the need for a registration of quadratures

[[Imported from SVN: r1658]]
parent c0a4f8a0
No related branches found
No related tags found
No related merge requests found
...@@ -82,6 +82,10 @@ CachingBaseFunctionSet<FunctionSpaceType >:: ...@@ -82,6 +82,10 @@ CachingBaseFunctionSet<FunctionSpaceType >::
values(int baseFunct, const QuadratureType& quad) const { values(int baseFunct, const QuadratureType& quad) const {
ConstRangeMapIterator it = vals_.find(quad.getIdentifier()); ConstRangeMapIterator it = vals_.find(quad.getIdentifier());
if (it == vals_.end()) {
registerQuadrature(quad);
it = vals_.find(quad.getIdentifier());
}
assert(it != vals_.end()); // Forgot to initialise with quadrature, eh? assert(it != vals_.end()); // Forgot to initialise with quadrature, eh?
assert(baseFunct < numOfBaseFct_); assert(baseFunct < numOfBaseFct_);
...@@ -95,6 +99,10 @@ CachingBaseFunctionSet<FunctionSpaceType >:: ...@@ -95,6 +99,10 @@ CachingBaseFunctionSet<FunctionSpaceType >::
gradients(int baseFunct, const QuadratureType& quad) const { gradients(int baseFunct, const QuadratureType& quad) const {
ConstJacobianMapIterator it = grads_.find(quad.getIdentifier()); ConstJacobianMapIterator it = grads_.find(quad.getIdentifier());
if (it == grads_.end()) {
registerQuadrature(quad);
it = grads_.find(quad.getIdentifier());
}
assert(it != grads_.end()); assert(it != grads_.end());
assert(baseFunct < numOfBaseFct_); assert(baseFunct < numOfBaseFct_);
...@@ -118,7 +126,7 @@ faces(int faceIdx, int baseFct, const QuadratureType& quad) const { ...@@ -118,7 +126,7 @@ faces(int faceIdx, int baseFct, const QuadratureType& quad) const {
template <class FunctionSpaceType> template <class FunctionSpaceType>
template <class QuadratureType> template <class QuadratureType>
void CachingBaseFunctionSet<FunctionSpaceType>:: void CachingBaseFunctionSet<FunctionSpaceType>::
registerQuadrature( const QuadratureType &quad ) registerQuadrature( const QuadratureType &quad ) const
{ {
// check if quadrature is already registered // check if quadrature is already registered
int identifier = quad.getIdentifier(); int identifier = quad.getIdentifier();
...@@ -156,7 +164,7 @@ registerQuadrature( const QuadratureType &quad ) ...@@ -156,7 +164,7 @@ registerQuadrature( const QuadratureType &quad )
template <class FunctionSpaceType> template <class FunctionSpaceType>
template <class QuadratureType, class EntityType> template <class QuadratureType, class EntityType>
void CachingBaseFunctionSet<FunctionSpaceType>:: void CachingBaseFunctionSet<FunctionSpaceType>::
registerQuadrature(const QuadratureType &quad, const EntityType& en) { registerQuadrature(const QuadratureType &quad, const EntityType& en) const {
//- Local typedefs //- Local typedefs
typedef typename EntityType::IntersectionIterator IntersectionIterator; typedef typename EntityType::IntersectionIterator IntersectionIterator;
......
...@@ -118,12 +118,12 @@ namespace Dune { ...@@ -118,12 +118,12 @@ namespace Dune {
//! The base function set will only work for quadratures which were //! The base function set will only work for quadratures which were
//! registered //! registered
template <class QuadratureType> template <class QuadratureType>
void registerQuadrature(const QuadratureType & quad); void registerQuadrature(const QuadratureType & quad) const;
//! Register face quadrature //! Register face quadrature
template <class QuadratureType, class EntityType> template <class QuadratureType, class EntityType>
void registerQuadrature(const QuadratureType& quad, void registerQuadrature(const QuadratureType& quad,
const EntityType& en); const EntityType& en) const;
private: private:
//- Local typedefs //- Local typedefs
...@@ -151,13 +151,13 @@ namespace Dune { ...@@ -151,13 +151,13 @@ namespace Dune {
std::vector<BaseFunctionInterfaceType *> baseFunctionList_ ; std::vector<BaseFunctionInterfaceType *> baseFunctionList_ ;
//! map with cached values for base functions //! map with cached values for base functions
RangeMap vals_; mutable RangeMap vals_;
//! map with cached values for base function gradients //! map with cached values for base function gradients
JacobianMap grads_; mutable JacobianMap grads_;
//! map with cached values for face values of base functions //! map with cached values for face values of base functions
FaceMap faces_; mutable FaceMap faces_;
}; // end class CachingBaseFunctionSet }; // end class CachingBaseFunctionSet
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment