dune-pdelab  2.0.0
common/constraintsparameters.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 
4 #ifndef DUNE_PDELAB_CONSTRAINTSPARAMETERS_HH
5 #define DUNE_PDELAB_CONSTRAINTSPARAMETERS_HH
6 
7 #include <dune/common/fvector.hh>
8 #include <dune/typetree/typetree.hh>
9 
10 namespace Dune {
11  namespace PDELab {
12 
16 
25  public TypeTree::LeafNode
26  {
27 
37  template<typename I>
38  bool isDirichlet(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
39  {
40  return true;
41  }
42 
55  template<typename I>
56  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
57  {
58  return false;
59  }
60 
61 
67  template<typename T>
68  void setTime(const T& time)
69  {}
70 
71  };
72 
80  public TypeTree::LeafNode
81  {
82 
86  template<typename I>
87  bool isDirichlet(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
88  {
89  return false;
90  }
91 
95  template<typename I>
96  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
97  {
98  return true;
99  }
100 
106  template<typename T>
107  void setTime(const T& time)
108  {}
109 
110  };
111 
112 
121  public TypeTree::LeafNode
122  {
123 
133  template<typename I>
134  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
135  {
136  return true;
137  }
138 
144  template<typename T>
145  void setTime(const T& time)
146  {}
147 
148  };
149 
157  public TypeTree::LeafNode
158  {
159 
163  template<typename I>
164  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
165  {
166  return false;
167  }
168 
174  template<typename T>
175  void setTime(const T& time)
176  {}
177 
178  };
179 
190  template<typename DirichletConstraintsParameters>
192  public TypeTree::LeafNode
193  {
194 
198  template<typename I>
199  bool isDirichlet(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
200  {
201  return _dirichletConstraintsParameters.isDirichlet(intersection,coord);
202  }
203 
207  template<typename I>
208  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
209  {
210  return !_dirichletConstraintsParameters.isDirichlet(intersection,coord);
211  }
212 
216  template<typename T>
217  void setTime(const T& time)
218  {
219  _dirichletConstraintsParameters.setTime(time);
220  }
221 
223  : _dirichletConstraintsParameters(dirichletConstraintsParameters)
224  {}
225 
226  private:
227 
228  DirichletConstraintsParameters& _dirichletConstraintsParameters;
229 
230  };
231 
242  template<typename FluxConstraintsParameters>
243  struct DirichletFromFluxConstraintsAdapter :
244  public TypeTree::LeafNode
245  {
246 
250  template<typename I>
251  bool isDirichlet(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
252  {
253  return !_fluxConstraintsParameters.isNeumann(intersection,coord);
254  }
255 
259  template<typename I>
260  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::dimension-1> & coord) const
261  {
262  return _fluxConstraintsParameters.isNeumann(intersection,coord);
263  }
264 
268  template<typename T>
269  void setTime(const T& time)
270  {
271  _fluxConstraintsParameters.setTime(time);
272  }
273 
274  DirichletFromFluxConstraintsAdapter(FluxConstraintsParameters& fluxConstraintsParameters)
275  : _fluxConstraintsParameters(fluxConstraintsParameters)
276  {}
277 
278  private:
279 
280  FluxConstraintsParameters& _fluxConstraintsParameters;
281 
282  };
283 
285 
286  }
287 }
288 
289 #endif // DUNE_PDELAB_CONSTRAINTSPARAMETERS_HH
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:199
Definition: common/constraintsparameters.hh:79
void setTime(const T &time)
Definition: common/constraintsparameters.hh:145
void setTime(const T &time)
Definition: common/constraintsparameters.hh:107
Definition: common/constraintsparameters.hh:24
Definition: common/constraintsparameters.hh:156
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:96
FluxFromDirichletConstraintsAdapter(DirichletConstraintsParameters &dirichletConstraintsParameters)
Definition: common/constraintsparameters.hh:222
void setTime(const T &time)
Definition: common/constraintsparameters.hh:217
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:134
Definition: common/constraintsparameters.hh:120
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:164
void setTime(const T &time)
Definition: common/constraintsparameters.hh:175
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:38
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:208
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:87
Definition: common/constraintsparameters.hh:191
void setTime(const T &time)
Definition: common/constraintsparameters.hh:68
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: common/constraintsparameters.hh:56