00001 // -*- tab-width: 4; indent-tabs-mode: nil -*- 00002 #ifndef DUNE_EDGES03DLOCALFINITEELEMENT_HH 00003 #define DUNE_EDGES03DLOCALFINITEELEMENT_HH 00004 00005 #include <dune/common/geometrytype.hh> 00006 00007 #include <dune/localfunctions/common/localfiniteelementtraits.hh> 00008 #include "edges03d/edges03dlocalbasis.hh" 00009 #include "edges03d/edges03dlocalcoefficients.hh" 00010 #include "edges03d/edges03dlocalinterpolation.hh" 00011 00012 namespace Dune 00013 { 00014 00017 template<class D, class R> 00018 class EdgeS03DLocalFiniteElement 00019 { 00020 public: 00023 typedef LocalFiniteElementTraits< 00024 EdgeS03DLocalBasis<D,R>, 00025 EdgeS03DLocalCoefficients, 00026 EdgeS03DLocalInterpolation<EdgeS03DLocalBasis<D,R> > 00027 > Traits; 00028 00031 00032 EdgeS03DLocalFiniteElement () 00033 { 00034 gt.makeTetrahedron(); 00035 } 00036 00041 EdgeS03DLocalFiniteElement (unsigned int s) 00042 : basis(s), interpolation(s) 00043 { 00044 gt.makeTetrahedron(); 00045 } 00046 00049 const typename Traits::LocalBasisType& localBasis () const 00050 { 00051 return basis; 00052 } 00053 00056 const typename Traits::LocalCoefficientsType& localCoefficients () const 00057 { 00058 return coefficients; 00059 } 00060 00063 const typename Traits::LocalInterpolationType& localInterpolation () const 00064 { 00065 return interpolation; 00066 } 00067 00070 GeometryType type () const 00071 { 00072 return gt; 00073 } 00074 00075 private: 00076 EdgeS03DLocalBasis<D,R> basis; 00077 EdgeS03DLocalCoefficients coefficients; 00078 EdgeS03DLocalInterpolation<EdgeS03DLocalBasis<D,R> > interpolation; 00079 GeometryType gt; 00080 }; 00081 00082 } 00083 00084 #endif // DUNE_EDGES03DLOCALFINITEELEMENT_HH