dune-pdelab  2.0.0
minus.hh
Go to the documentation of this file.
1 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=8 sw=2 sts=2:
3 #ifndef DUNE_PDELAB_FUNCTION_MINUS_HH
4 #define DUNE_PDELAB_FUNCTION_MINUS_HH
5 
6 #include <cstddef>
7 
8 #include <dune/common/static_assert.hh>
9 
11 
12 namespace Dune {
13  namespace PDELab {
14 
16 
20  template<typename GF1, typename GF2>
22  : public GridFunctionBase<typename GF1::Traits,
23  MinusGridFunctionAdapter<GF1,GF2> >
24  {
25  dune_static_assert(std::size_t(GF1::Traits::dimRange) ==
26  std::size_t(GF2::Traits::dimRange),
27  "Range dimension must match for both operands of a "
28  "MinusGridFunctionAdapter");
29  typedef typename GF1::Traits T;
31  Base;
32 
33  GF1& gf1;
34  GF2& gf2;
35 
36  public:
37  typedef typename Base::Traits Traits;
38 
39  MinusGridFunctionAdapter(GF1& gf1_, GF2& gf2_)
40  : gf1(gf1_), gf2(gf2_)
41  { }
42 
43  void evaluate(const typename Traits::ElementType &e,
44  const typename Traits::DomainType &x,
45  typename Traits::RangeType &y) const {
46  gf1.evaluate(e,x,y);
47  typename GF2::Traits::RangeType y2;
48  gf2.evaluate(e,x,y2);
49  y -= y2;
50  }
51 
52  const typename Traits::GridViewType& getGridView() const {
53  return gf1.getGridView();
54  }
55 
56  template<typename Time>
57  void setTime(Time time) {
58  gf1.setTime(time);
59  gf2.setTime(time);
60  }
61  };
62 
63  } // namspace PDELab
64 } // namspace Dune
65 
66 #endif // DUNE_PDELAB_FUNCTION_MINUS_HH
const Traits::GridViewType & getGridView() const
Definition: minus.hh:52
Base::Traits Traits
Definition: minus.hh:37
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Definition: minus.hh:43
void setTime(Time time)
Definition: minus.hh:57
MinusGridFunctionAdapter(GF1 &gf1_, GF2 &gf2_)
Definition: minus.hh:39
Substract two GridFunctions.
Definition: minus.hh:21
leaf of a function tree
Definition: function.hh:577
T Traits
Export type traits.
Definition: function.hh:192
const E & e
Definition: interpolate.hh:172