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