mimeticall.hh

Go to the documentation of this file.
00001 // -*- tab-width: 4; indent-tabs-mode: nil -*-
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 (unsigned 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

Generated on Fri Apr 29 2011 with Doxygen (ver 1.7.1) [doxygen-log,error-log].