dune-pdelab 2.7-git
Loading...
Searching...
No Matches
mimeticfem.hh
Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil -*-
2#ifndef DUNE_PDELAB_FINITEELEMENTMAP_MIMETICFEM_HH
3#define DUNE_PDELAB_FINITEELEMENTMAP_MIMETICFEM_HH
4
5#include<vector>
6#include<dune/geometry/type.hh>
7#include<dune/localfunctions/mimetic.hh>
9
10namespace Dune {
11 namespace PDELab {
12
13 template<typename IIS, typename D, typename R, int dim>
15 public Dune::PDELab::LocalFiniteElementMapInterface<Dune::PDELab::LocalFiniteElementMapTraits< MimeticLocalFiniteElement<D,R,dim> >,
16 MimeticLocalFiniteElementMap<IIS,D,R,dim> >
17 {
18 typedef MimeticLocalFiniteElement<D,R,dim> FE;
19
20 public:
23
25 MimeticLocalFiniteElementMap (const IIS& iis_, Dune::GeometryType::BasicType basicType)
26 : iis(iis_), bt(basicType)
27
28 {
29 // create a standard number of variants
30 variant.resize(20);
31 for (int i=0; i<20; i++) variant[i] = FE(bt,i);
32 }
33
35 template<class EntityType>
36 const typename Traits::FiniteElementType& find (const EntityType& e) const
37 {
38 size_t n = static_cast<size_t>(iis.size(e));
39 if (n<variant.size())
40 return variant[n];
41 else
42 {
43 size_t old_n = variant.size();
44 variant.resize(n+1);
45 for (size_t i=old_n; i<n+1; i++) variant[i] = FE(bt,i);
46 return variant[n];
47 }
48 }
49
50 private:
51 const IIS& iis;
52 Dune::GeometryType::BasicType bt;
53 mutable std::vector<FE> variant;
54 };
55
56 }
57}
58
59#endif // DUNE_PDELAB_FINITEELEMENTMAP_MIMETICFEM_HH
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
T FiniteElementType
Type of finite element from local functions.
Definition finiteelementmap.hh:30
collect types exported by a finite element map
Definition finiteelementmap.hh:38
interface for a finite element map
Definition finiteelementmap.hh:43
Dune::PDELab::LocalFiniteElementMapTraits< FE > Traits
export type of the signature
Definition mimeticfem.hh:22
MimeticLocalFiniteElementMap(const IIS &iis_, Dune::GeometryType::BasicType basicType)
Use when Imp has a standard constructor.
Definition mimeticfem.hh:25
const Traits::FiniteElementType & find(const EntityType &e) const
get local basis functions for entity
Definition mimeticfem.hh:36