mimeticall.hh
Go to the documentation of this file.00001
00002 #ifndef DUNE_MIMETIC_ALL_HH
00003 #define DUNE_MIMETIC_ALL_HH
00004
00005 #include <cstddef>
00006
00007 #include<dune/common/exceptions.hh>
00008 #include<dune/common/fvector.hh>
00009 #include<dune/common/geometrytype.hh>
00010
00011 #include"../common/localbasis.hh"
00012 #include"../common/localkey.hh"
00013
00014 namespace Dune
00015 {
00016 template<class D, class R, int dim>
00017 class MimeticLocalBasis
00018 {
00019 public:
00020 typedef Dune::LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,
00021 R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
00022
00023 MimeticLocalBasis (unsigned int variant_)
00024 : variant(variant_)
00025 {
00026 }
00027
00028 MimeticLocalBasis ()
00029 : variant(0)
00030 {
00031 }
00032
00033 unsigned int size () const { return variant; }
00034
00036 inline void evaluateFunction (
00037 const typename Traits::DomainType& in,
00038 std::vector<typename Traits::RangeType>& out) const
00039 {
00040 DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
00041 }
00042
00044 inline void evaluateJacobian (
00045 const typename Traits::DomainType& in,
00046 std::vector<typename Traits::JacobianType>& out) const
00047 {
00048 DUNE_THROW(Dune::Exception,"mimetic basis Jacobian evaluation not available");
00049 }
00050
00052 unsigned int order () const
00053 {
00054 DUNE_THROW(Dune::Exception,"mimetic order evaluation not available");
00055 }
00056
00057 private:
00058 unsigned int variant;
00059 };
00060
00061 template<class LB>
00062 class MimeticLocalInterpolation
00063 {
00064 public:
00065
00067 template<typename F, typename C>
00068 void interpolate (const F& f, std::vector<C>& out) const {
00069 DUNE_THROW(Dune::Exception,"mimetic local interpolation not available");
00070 }
00071 };
00072
00076 class MimeticLocalCoefficients
00077 {
00078 public:
00079 MimeticLocalCoefficients (unsigned int variant_)
00080 : variant(variant_), li(variant_)
00081 {
00082 for (int i=0; i<variant; i++)
00083 li[i] = Dune::LocalKey(i,Dune::LocalKey::intersectionCodim,0);
00084 }
00085
00086 MimeticLocalCoefficients ()
00087 : variant(0), li(0)
00088 {
00089 }
00090
00092 std::size_t size () const { return variant; }
00093
00095 const Dune::LocalKey& localKey (std::size_t i) const {
00096 return li[i];
00097 }
00098
00099 private:
00100 unsigned int variant;
00101 std::vector<Dune::LocalKey> li;
00102 };
00103 }
00104
00105 #endif