dune-pdelab  2.4-dev
stokesdgparameter.hh
Go to the documentation of this file.
1 #ifndef DUNE_PDELAB_LOCALOPERATOR_STOKESDGPARAMETER_HH
2 #define DUNE_PDELAB_LOCALOPERATOR_STOKESDGPARAMETER_HH
3 
4 #warning This file is deprecated, include the header dune/pdelab/localoperator/dgnavierstokesparameter.hh instead!
5 
6 #include <dune/common/parametertreeparser.hh>
7 
9 
10 #include "dgparameter.hh"
11 #include "stokesparameter.hh"
12 
13 namespace Dune {
14  namespace PDELab {
15 
27  template<typename GV, typename RF, typename F, typename B, typename V, typename J,
28  typename IP = DefaultInteriorPenalty<typename V::Traits::RangeFieldType> >
29  class DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!") StokesDGParameters
30  : public NavierStokesDefaultParameters<GV,RF,F,B,V,J>
31  {
32  private:
33 
35 
36  void initFromString(const std::string & method)
37  {
38  std::string s = method;
39  std::transform(s.begin(), s.end(), s.begin(), tolower);
40 
41  // nipg (epsilon=1) 2d p1 -> Klaus sagt sollte auch sigma 1 klappen
42  if (s.find("nipg") != std::string::npos)
43  {
44  _epsilon = 1;
45  return;
46  }
47  // sipg (epsilon=-1) 2d p1 -> Klaus sagt sigma=3.9irgendwas
48  if (s.find("sipg") != std::string::npos)
49  {
50  _epsilon = -1;
51  return;
52  }
53  // obb sigma = 0, epsilon =
54  if (s == "obb")
55  {
56  _epsilon = 1;
57  return;
58  }
59  // extract parameters
60  {
61  double sigma, beta;
62  if (3 == sscanf(s.c_str(), "%d %lg %lg", &_epsilon, &sigma, &beta))
63  return;
64  }
65  DUNE_THROW(Dune::Exception, "Unknown DG type " << method);
66  }
67 
68  protected:
69  DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!")
70  StokesDGParameters(const std::string & method, const RF mu, const RF rho,
71  F & f, B & b, V & v, J & j, IP & ip)
72  : Base(mu,rho,f,b,v,j),
73  _ip(ip)
74  {
75  initFromString(method);
76  }
77 
78 
79  public:
80 
82  typedef typename Base::Traits Traits;
83 
84  DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!")
85  StokesDGParameters(const std::string & method, const RF mu,
86  F & f, B & b, V & v, J & j, IP & ip)
87  : Base(mu,1.0,f,b,v,j),
88  _ip(ip)
89  {
90  initFromString(method);
91  }
92 
93  DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!")
94  StokesDGParameters(const Dune::ParameterTree & configuration,
95  F & f, B & b, V & v, J & j, IP & ip)
96  : Base(configuration,f,b,v,j),
97  _ip(ip),
98  _epsilon(configuration.get<int>("epsilon"))
99  {}
100 
101 
103  typename Traits::RangeField
105  {
106  typename Traits::RangeField y(1.0 / dt);
107  return y;
108  }
109 
114  template<typename I>
115  typename Traits::RangeField
116  getFaceIP(const I & ig) const
117  {
118  return _ip.getFaceIP(ig);
119  }
120 
125  template<typename I>
126  typename Traits::RangeField
127  getFaceIP(const I & ig, const typename Traits::IntersectionDomain& ) const
128  {
129  return _ip.getFaceIP(ig);
130  }
131 
134  int
136  {
137  return _epsilon;
138  }
139 
140  private:
141 
142  IP & _ip; // Interior penalty
143  int _epsilon; // IP symmetry factor
144  };
145 
146 
158  template<typename GV, typename RF, typename F, typename B, typename V, typename J,
159  typename IP = DefaultInteriorPenalty<typename V::Traits::RangeField> >
160  class DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!") NavierStokesDGParameters
161  : public StokesDGParameters<GV,RF,F,B,V,J,IP>
162  {
163 
166 
167  public:
168 
169  DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!")
170  NavierStokesDGParameters(const std::string & method, const RF mu, const RF rho,
171  F & f, B & b, V & v, J & j, IP & ip)
172  : Base(method,mu,rho,f,b,v,j,ip)
173  {}
174 
175  DUNE_DEPRECATED_MSG("Deprecated in DUNE-PDELab 2.4, use DGNavierStokesParameters instead!")
176  NavierStokesDGParameters(const Dune::ParameterTree & configuration,
177  F & f, B & b, V & v, J & j, IP & ip)
178  : Base(configuration,f,b,v,j,ip)
179  {}
180 
181  };
182 
183 
184  namespace NavierStokesDGImp{
201  template< typename PRM, typename Dummy = void>
202  struct VariableBoundarySlipSwitch{
203 
204  template<typename IntersectionGeometry>
205  static typename PRM::Traits::RangeField
207  (const PRM & ,
208  const IntersectionGeometry& ,
209  const typename PRM::Traits::IntersectionDomain& )
210  {
211  return 1.0;
212  }
213 
214  };
215 
216  template< typename PRM>
217  struct VariableBoundarySlipSwitch
218  <PRM,typename Dune::enable_if<PRM::enable_variable_slip>::type>
219  {
220  template<typename IntersectionGeometry>
221  static typename PRM::Traits::RangeField
223  (const PRM & prm,
224  const IntersectionGeometry& ig,
225  const typename PRM::Traits::IntersectionDomain& x)
226  {
227  return prm.boundarySlip(ig,x);
228  }
229 
230  };
232  }
233 
234 
235  }
236 }
237 
238 #endif
Definition: stokesparameter.hh:143
int epsilonIPSymmetryFactor()
Definition: stokesdgparameter.hh:135
STL namespace.
Traits::RangeField incompressibilityScaling(typename Traits::RangeField dt) const
Rescaling factor for the incompressibility equation.
Definition: stokesdgparameter.hh:104
const IG & ig
Definition: constraints.hh:147
Base::Traits Traits
Traits class.
Definition: stokesdgparameter.hh:82
Dune::FieldVector< DomainField, dimDomain-1 > IntersectionDomain
domain type
Definition: stokesparameter.hh:63
Parameter class for local operator StokesDG.
Definition: stokesdgparameter.hh:29
Definition: stokesparameter.hh:45
Parameter class for local operator NavierStokesDG.
Definition: stokesdgparameter.hh:160
static PRM::Traits::RangeField boundarySlip(const PRM &, const IntersectionGeometry &, const typename PRM::Traits::IntersectionDomain &)
Definition: dgnavierstokesparameter.hh:164
RF RangeField
Export type for range field.
Definition: stokesparameter.hh:66
Parameter class for local operator DGNavierStokes.
Definition: dgnavierstokesparameter.hh:34
Definition: adaptivity.hh:27
Wrap intersection.
Definition: geometrywrapper.hh:56
Traits::RangeField getFaceIP(const I &ig, const typename Traits::IntersectionDomain &) const
Interior penalty parameter.
Definition: stokesdgparameter.hh:127
const std::string s
Definition: function.hh:1102
Traits::RangeField getFaceIP(const I &ig) const
Interior penalty parameter.
Definition: stokesdgparameter.hh:116