2 #ifndef DUNE_PDELAB_LOCALBASISCACHE_HH
3 #define DUNE_PDELAB_LOCALBASISCACHE_HH
8 #include<dune/common/exceptions.hh>
9 #include<dune/common/static_assert.hh>
15 template<
class LocalBasisType>
18 typedef typename LocalBasisType::Traits::DomainFieldType DomainFieldType;
19 typedef typename LocalBasisType::Traits::DomainType DomainType;
20 typedef typename LocalBasisType::Traits::RangeType RangeType;
21 typedef typename LocalBasisType::Traits::JacobianType JacobianType;
25 bool operator() (
const DomainType& v1,
const DomainType& v2)
const
27 for (
typename DomainType::size_type i=0; i<DomainType::dimension; i++)
29 if ( v1[i] < v2[i]-1
e-5 )
return true;
30 if ( v1[i] > v2[i]+1
e-5 )
return false;
36 typedef std::map<DomainType,std::vector<RangeType>,less_than> FunctionCache;
37 typedef std::map<DomainType,std::vector<JacobianType>,less_than> JacobianCache;
45 const std::vector<RangeType>&
48 typename FunctionCache::iterator it = functioncache.find(position);
49 if (it!=functioncache.end())
return it->second;
50 std::vector<RangeType> values;
51 localbasis.evaluateFunction(position,values);
52 it = functioncache.insert(functioncache.begin(),std::pair<DomainType,std::vector<RangeType> >(position,values));
57 const std::vector<JacobianType>&
60 typename JacobianCache::iterator it = jacobiancache.find(position);
61 if (it!=jacobiancache.end())
return it->second;
62 std::vector<JacobianType> values;
63 localbasis.evaluateJacobian(position,values);
64 it = jacobiancache.insert(jacobiancache.begin(),std::pair<DomainType,std::vector<JacobianType> >(position,values));
69 mutable FunctionCache functioncache;
70 mutable JacobianCache jacobiancache;
const std::vector< JacobianType > & evaluateJacobian(const DomainType &position, const LocalBasisType &localbasis) const
evaluate Jacobians at a point
Definition: localbasiscache.hh:58
store values of basis functions and gradients in a cache
Definition: localbasiscache.hh:16
const std::vector< RangeType > & evaluateFunction(const DomainType &position, const LocalBasisType &localbasis) const
evaluate basis functions at a point
Definition: localbasiscache.hh:46
LocalBasisCache()
constructor
Definition: localbasiscache.hh:42
const E & e
Definition: interpolate.hh:172