dune-pdelab  2.5-dev
permeability_adapter.hh
Go to the documentation of this file.
1 #ifndef DUNE_PDELAB_LOCALOPERATOR_PERMEABILITY_ADAPTER_HH
2 #define DUNE_PDELAB_LOCALOPERATOR_PERMEABILITY_ADAPTER_HH
3 
5 
10 template<typename T>
12  : public Dune::PDELab::GridFunctionBase<Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
13  typename T::Traits::RangeFieldType,
14  1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> >
15  ,PermeabilityAdapter<T> >
16 {
17 public:
18  typedef Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
19  typename T::Traits::RangeFieldType,
20  1,Dune::FieldVector<typename T::Traits::RangeFieldType,1> > Traits;
21 
23  PermeabilityAdapter (const typename Traits::GridViewType& g_, T& t_)
24  : g(g_), t(t_)
25  {}
26 
28  inline void evaluate (const typename Traits::ElementType& e,
29  const typename Traits::DomainType& x,
30  typename Traits::RangeType& y) const
31  {
32  y = log(t.A(e,x)[0][0]);
33  }
34 
35  inline const typename Traits::GridViewType& getGridView () const
36  {
37  return g;
38  }
39 
40  inline void setTime(double time_)
41  {
42  t.setTime(time_);
43  }
44 
45 private:
46  const typename Traits::GridViewType& g;
47  T& t;
48 };
49 
54 template<typename T>
56  : public Dune::PDELab::GridFunctionBase<Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
57  typename T::Traits::RangeFieldType,
58  T::Traits::dimDomain,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::dimDomain> >
59  ,DiagonalPermeabilityAdapter<T> >
60 {
61 public:
62  typedef Dune::PDELab::GridFunctionTraits<typename T::Traits::GridViewType,
63  typename T::Traits::RangeFieldType,
64  T::Traits::dimDomain,Dune::FieldVector<typename T::Traits::RangeFieldType,T::Traits::dimDomain> > Traits;
65 
68  : g(g_), t(t_)
69  {}
70 
72  inline void evaluate (const typename Traits::ElementType& e,
73  const typename Traits::DomainType& x,
74  typename Traits::RangeType& y) const
75  {
76  for (int i=0; i<T::Traits::dimDomain; i++)
77  y[i] = log10(t.A(e,x)[i][i]);
78  }
79 
80  inline const typename Traits::GridViewType& getGridView () const
81  {
82  return g;
83  }
84 
85  inline void setTime(double time_)
86  {
87  t.setTime(time_);
88  }
89 
90 private:
91  const typename Traits::GridViewType& g;
92  T& t;
93 };
94 
95 #endif // DUNE_PDELAB_LOCALOPERATOR_PERMEABILITY_ADAPTER_HH
const Entity & e
Definition: localfunctionspace.hh:111
leaf of a function tree
Definition: function.hh:298
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, 1, Dune::FieldVector< typename T::Traits::RangeFieldType, 1 > > Traits
Definition: permeability_adapter.hh:20
void setTime(double time_)
Definition: permeability_adapter.hh:40
Dune::FieldVector< GV::Grid::ctype, GV::dimension > DomainType
domain type in dim-size coordinates
Definition: function.hh:49
DiagonalPermeabilityAdapter(const typename Traits::GridViewType &g_, T &t_)
constructor
Definition: permeability_adapter.hh:67
GV::Traits::template Codim< 0 >::Entity ElementType
codim 0 entity
Definition: function.hh:118
GV GridViewType
The type of the grid view the function lives on.
Definition: function.hh:115
const Traits::GridViewType & getGridView() const
Definition: permeability_adapter.hh:35
PermeabilityAdapter(const typename Traits::GridViewType &g_, T &t_)
constructor
Definition: permeability_adapter.hh:23
Definition: permeability_adapter.hh:55
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: permeability_adapter.hh:28
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: permeability_adapter.hh:72
Dune::PDELab::GridFunctionTraits< typename T::Traits::GridViewType, typename T::Traits::RangeFieldType, T::Traits::dimDomain, Dune::FieldVector< typename T::Traits::RangeFieldType, T::Traits::dimDomain > > Traits
Definition: permeability_adapter.hh:64
Definition: permeability_adapter.hh:11
void setTime(double time_)
Definition: permeability_adapter.hh:85
const Traits::GridViewType & getGridView() const
Definition: permeability_adapter.hh:80
traits class holding the function signature, same as in local function
Definition: function.hh:176