dune-localfunctions  2.3.1
dualpq1factory.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
4 #define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
5 
8 
10 
11 namespace Dune {
12 
13 template<class D, class R, int dim>
15 {
16 protected:
21  typedef std::map<Dune::GeometryType,FE*> FEMap;
22 
23 public:
26 
28  {
29  typename FEMap::iterator it = cache_.begin();
30  typename FEMap::iterator end = cache_.end();
31  for(; it!=end; ++it)
32  delete it->second;
33  }
34 
36  static FE* create(const Dune::GeometryType& gt)
37  {
38  if (gt.isSimplex())
40  if (gt.isCube())
42  return 0;
43  }
44 
46  const FiniteElementType& get(const Dune::GeometryType& gt) const
47  {
48  typename FEMap::const_iterator it = cache_.find(gt);
49  if (it==cache_.end())
50  {
51  FiniteElementType* fe = create(gt);
52 
53  if (fe==0)
54  DUNE_THROW(Dune::NotImplemented,"No Dual P/Q1 like local finite element available for geometry type " << gt);
55 
56  cache_[gt] = fe;
57  return *fe;
58  }
59  return *(it->second);
60  }
61 
62 protected:
63  mutable FEMap cache_;
64 };
65 
66 } // namespace Dune
67 
68 #endif // DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
std::map< Dune::GeometryType, FE * > FEMap
Definition: dualpq1factory.hh:21
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:39
FE FiniteElementType
Type of the finite elements stored in this cache.
Definition: dualpq1factory.hh:25
Dune::LocalFiniteElementVirtualInterface< T > FE
Definition: dualpq1factory.hh:20
Dune::DualQ1LocalFiniteElement< D, R, dim > DualQ1
Definition: dualpq1factory.hh:18
~DualPQ1LocalFiniteElementCache()
Definition: dualpq1factory.hh:27
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:379
Dune::DualP1LocalFiniteElement< D, R, dim > DualP1
Definition: dualpq1factory.hh:17
class for wrapping a finite element using the virtual interface
Definition: virtualwrappers.hh:17
Definition: dualpq1factory.hh:14
The local dual p1 finite element on simplices.
Definition: dualp1.hh:22
Dune::FixedOrderLocalBasisTraits< typename DualP1::Traits::LocalBasisType::Traits, 0 >::Traits T
Definition: dualpq1factory.hh:19
The local dual Q1 finite element on cubes.
Definition: dualq1.hh:26
static FE * create(const Dune::GeometryType &gt)
create finite element for given GeometryType
Definition: dualpq1factory.hh:36
FEMap cache_
Definition: dualpq1factory.hh:63