dune-pdelab  2.5-dev
gridfunctionadapter.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_GRIDFUNCTIONADAPTER_HH
4 #define DUNE_PDELAB_GRIDFUNCTIONSPACE_GRIDFUNCTIONADAPTER_HH
5 
7 
13 template<typename T1, typename T2>
16  Dune::PDELab::GridFunctionTraits<typename T1::Traits::GridViewType,
17  typename T1::Traits::RangeFieldType,
18  1,
19  Dune::FieldVector<typename T1::Traits::RangeFieldType,1> >,
20  DifferenceAdapter<T1,T2> >
21 {
22 public:
23  typedef Dune::PDELab::GridFunctionTraits<typename T1::Traits::GridViewType,
24  typename T1::Traits::RangeFieldType,
25  1,Dune::FieldVector<typename T1::Traits::RangeFieldType,1> > Traits;
26 
28  DifferenceAdapter (const T1& t1_, const T2& t2_) : t1(t1_), t2(t2_) {}
29 
31  inline void evaluate (const typename Traits::ElementType& e,
32  const typename Traits::DomainType& x,
33  typename Traits::RangeType& y) const
34  {
35  typename Traits::RangeType y1;
36  t1.evaluate(e,x,y1);
37  typename Traits::RangeType y2;
38  t2.evaluate(e,x,y2);
39  y1 -= y2;
40  y = y1;
41  }
42 
43  inline const typename Traits::GridViewType& getGridView () const
44  {
45  return t1.getGridView();
46  }
47 
48 private:
49  const T1& t1;
50  const T2& t2;
51 };
52 
53 
59 template<typename T1, typename T2>
62  Dune::PDELab::GridFunctionTraits<typename T1::Traits::GridViewType,
63  typename T1::Traits::RangeFieldType,
64  1,
65  Dune::FieldVector<typename T1::Traits::RangeFieldType,1> >,
66  DifferenceSquaredAdapter<T1,T2> >
67 {
68 public:
69  typedef Dune::PDELab::GridFunctionTraits<typename T1::Traits::GridViewType,
70  typename T1::Traits::RangeFieldType,
71  1,Dune::FieldVector<typename T1::Traits::RangeFieldType,1> > Traits;
72 
74  DifferenceSquaredAdapter (const T1& t1_, const T2& t2_) : t1(t1_), t2(t2_) {}
75 
77  inline void evaluate (const typename Traits::ElementType& e,
78  const typename Traits::DomainType& x,
79  typename Traits::RangeType& y) const
80  {
81  typename T1::Traits::RangeType y1;
82  t1.evaluate(e,x,y1);
83  typename T2::Traits::RangeType y2;
84  t2.evaluate(e,x,y2);
85  y1 -= y2;
86  y = y1.two_norm2();
87  }
88 
89  inline const typename Traits::GridViewType& getGridView () const
90  {
91  return t1.getGridView();
92  }
93 
94 private:
95  const T1& t1;
96  const T2& t2;
97 };
98 
99 #endif
const Entity & e
Definition: localfunctionspace.hh:111
leaf of a function tree
Definition: function.hh:298
Dune::FieldVector< GV::Grid::ctype, GV::dimension > DomainType
domain type in dim-size coordinates
Definition: function.hh:49
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: gridfunctionadapter.hh:43
Adapter returning f1(x)-f2(x) for two given grid functions.
Definition: gridfunctionadapter.hh:14
Dune::PDELab::GridFunctionTraits< typename T1::Traits::GridViewType, typename T1::Traits::RangeFieldType, 1, Dune::FieldVector< typename T1::Traits::RangeFieldType, 1 > > Traits
Definition: gridfunctionadapter.hh:71
DifferenceAdapter(const T1 &t1_, const T2 &t2_)
constructor
Definition: gridfunctionadapter.hh:28
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: gridfunctionadapter.hh:31
Adapter returning ||f1(x)-f2(x)||^2 for two given grid functions.
Definition: gridfunctionadapter.hh:60
const Traits::GridViewType & getGridView() const
Definition: gridfunctionadapter.hh:89
Dune::PDELab::GridFunctionTraits< typename T1::Traits::GridViewType, typename T1::Traits::RangeFieldType, 1, Dune::FieldVector< typename T1::Traits::RangeFieldType, 1 > > Traits
Definition: gridfunctionadapter.hh:25
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: gridfunctionadapter.hh:77
DifferenceSquaredAdapter(const T1 &t1_, const T2 &t2_)
constructor
Definition: gridfunctionadapter.hh:74
traits class holding the function signature, same as in local function
Definition: function.hh:176