dune-localfunctions
2.1.1
|
00001 // -*- tab-width: 4; indent-tabs-mode: nil -*- 00002 // vi: set ts=4 sw=2 et sts=2: 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