dune-pdelab  2.5-dev
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_CONSTRAINTS_COMMON_CONSTRAINTSPARAMETERS_HH
5 #define DUNE_PDELAB_CONSTRAINTS_COMMON_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::mydimension> & coord) const
39  {
40  return true;
41  }
42 
55  template<typename I>
56  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::mydimension> & 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::mydimension> & coord) const
88  {
89  return false;
90  }
91 
95  template<typename I>
96  bool isNeumann(const I & intersection, const FieldVector<typename I::ctype, I::mydimension> & 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::mydimension> & 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::mydimension> & 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::mydimension> & 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::mydimension> & 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>
244  public TypeTree::LeafNode
245  {
246 
250  template<typename I>
251  bool isDirichlet(const I & intersection, const FieldVector<typename I::ctype, I::mydimension> & 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::mydimension> & 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 
275  : _fluxConstraintsParameters(fluxConstraintsParameters)
276  {}
277 
278  private:
279 
280  FluxConstraintsParameters& _fluxConstraintsParameters;
281 
282  };
283 
293  class NoConstraintsParameters : public TypeTree::LeafNode {};
294 
296 
297  }
298 }
299 
300 #endif // DUNE_PDELAB_CONSTRAINTS_COMMON_CONSTRAINTSPARAMETERS_HH
Dune::PDELab::FluxFromDirichletConstraintsAdapter::isDirichlet
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:199
Dune::PDELab::NoFluxConstraintsParameters::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:164
Dune::PDELab::DirichletFromFluxConstraintsAdapter::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:269
Dune
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Dune::PDELab::DirichletConstraintsParameters::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:68
Dune::PDELab::NoFluxConstraintsParameters
Definition: constraintsparameters.hh:156
Dune::PDELab::DirichletFromFluxConstraintsAdapter::isDirichlet
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:251
Dune::PDELab::FluxConstraintsParameters::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:134
Dune::PDELab::DirichletFromFluxConstraintsAdapter
Definition: constraintsparameters.hh:243
Dune::PDELab::FluxFromDirichletConstraintsAdapter::FluxFromDirichletConstraintsAdapter
FluxFromDirichletConstraintsAdapter(DirichletConstraintsParameters &dirichletConstraintsParameters)
Definition: constraintsparameters.hh:222
Dune::PDELab::NoDirichletConstraintsParameters::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:107
Dune::PDELab::FluxFromDirichletConstraintsAdapter::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:208
Dune::PDELab::DirichletFromFluxConstraintsAdapter::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:260
Dune::PDELab::DirichletConstraintsParameters::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:56
Dune::PDELab::DirichletConstraintsParameters
Definition: constraintsparameters.hh:24
Dune::PDELab::NoFluxConstraintsParameters::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:175
Dune::PDELab::NoDirichletConstraintsParameters::isDirichlet
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:87
Dune::PDELab::FluxFromDirichletConstraintsAdapter
Definition: constraintsparameters.hh:191
Dune::PDELab::FluxConstraintsParameters
Definition: constraintsparameters.hh:120
Dune::PDELab::FluxConstraintsParameters::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:145
Dune::PDELab::NoDirichletConstraintsParameters::isNeumann
bool isNeumann(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:96
Dune::PDELab::NoConstraintsParameters
Definition: constraintsparameters.hh:293
Dune::PDELab::DirichletFromFluxConstraintsAdapter::DirichletFromFluxConstraintsAdapter
DirichletFromFluxConstraintsAdapter(FluxConstraintsParameters &fluxConstraintsParameters)
Definition: constraintsparameters.hh:274
Dune::PDELab::NoDirichletConstraintsParameters
Definition: constraintsparameters.hh:79
Dune::PDELab::DirichletConstraintsParameters::isDirichlet
bool isDirichlet(const I &intersection, const FieldVector< typename I::ctype, I::mydimension > &coord) const
Definition: constraintsparameters.hh:38
Dune::PDELab::FluxFromDirichletConstraintsAdapter::setTime
void setTime(const T &time)
Definition: constraintsparameters.hh:217