hierarchicalp2.hh
Go to the documentation of this file.00001
00002
00003 #ifndef DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
00004 #define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
00005
00006 #include <dune/common/geometrytype.hh>
00007
00008 #include <dune/localfunctions/common/localfiniteelementtraits.hh>
00009
00010 #include "hierarchicalp2/hierarchicalsimplexp2localbasis.hh"
00011 #include "hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh"
00012
00013 #include <dune/localfunctions/lagrange/pk2d/pk2dlocalcoefficients.hh>
00014 #include <dune/localfunctions/lagrange/pk3d/pk3dlocalcoefficients.hh>
00015
00016 namespace Dune
00017 {
00018
00021 template<class D, class R, int dim>
00022 class HierarchicalP2LocalFiniteElement
00023 {
00024
00025 dune_static_assert(dim==2 || dim==3, "HierarchicalP2LocalFiniteElement only implemented for dim==2, 3.");
00026
00027 public:
00030 typedef LocalFiniteElementTraits<HierarchicalSimplexP2LocalBasis<D,R,dim>,
00031 typename Dune::SelectType<dim==2, Pk2DLocalCoefficients<2>, Pk3DLocalCoefficients<2> >::Type,
00032 HierarchicalSimplexP2LocalInterpolation<HierarchicalSimplexP2LocalBasis<D,R,dim> > > Traits;
00033
00036 HierarchicalP2LocalFiniteElement ()
00037 {
00038 gt.makeTriangle();
00039 }
00040
00043 const typename Traits::LocalBasisType& localBasis () const
00044 {
00045 return basis;
00046 }
00047
00050 const typename Traits::LocalCoefficientsType& localCoefficients () const
00051 {
00052 return coefficients;
00053 }
00054
00057 const typename Traits::LocalInterpolationType& localInterpolation () const
00058 {
00059 return interpolation;
00060 }
00061
00064 GeometryType type () const
00065 {
00066 return gt;
00067 }
00068
00069 HierarchicalP2LocalFiniteElement* clone () const
00070 {
00071 return new HierarchicalP2LocalFiniteElement(*this);
00072 }
00073
00074 private:
00075 HierarchicalSimplexP2LocalBasis<D,R,dim> basis;
00076
00078 typename Dune::SelectType<dim==2, Pk2DLocalCoefficients<2>, Pk3DLocalCoefficients<2> >::Type coefficients;
00079
00080 HierarchicalSimplexP2LocalInterpolation<HierarchicalSimplexP2LocalBasis<D,R,dim> > interpolation;
00081 GeometryType gt;
00082 };
00083
00084 }
00085
00086 #endif