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/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
Generated on Sat Apr 24 11:15:33 2010 for dune-localfunctions by  doxygen 1.6.3