Rheolef  7.1
an efficient C++ finite element environment
rotating-hill.h
Go to the documentation of this file.
1 struct u {
26  point operator() (const point & x) const {
27  return (d == 1) ? point(u0) : point(x[1], -x[0]); }
28  u (size_t d1) : d(d1), u0 (0.5/acos(Float(-1))) {}
29  protected: size_t d; Float u0;
30 };
31 struct phi {
32  Float operator() (const point& x) const {
33  return exp(-4*nu*(t/t0) - dist2(x,x0t())/(t0+4*nu*t)); }
34  phi (size_t d1, Float nu1, Float t1=0) : d(d1), nu(nu1), t(t1),
35  u0 (0.5/acos(Float(-1))), x0(-0.5,0) {}
36  static Float sigma(size_t d, Float nu1, Float t=0) {
37  return 4*nu1/t0 - 2*d*nu1/(t0 + 4*nu1*t); }
38  point x0t() const {
39  if (d == 1) return point(x0[0] + u0*t);
40  return point( x0[0]*cos(t) + x0[1]*sin(t),
41  -x0[0]*sin(t) + x0[1]*cos(t)); }
42  point d_x0t_dt() const {
43  if (d == 1) return point(u0);
44  return point(-x0[0]*sin(t) + x0[1]*cos(t),
45  -x0[0]*cos(t) - x0[1]*sin(t)); }
46  protected: size_t d; Float nu, t, u0; point x0;
47  static constexpr Float t0 = 0.2;
48 };
u::operator()
point operator()(const point &x) const
Definition: leveque.h:26
phi::t
Float t
Definition: rotating-hill.h:46
phi::d
size_t d
Definition: rotating-hill.h:46
nu
Definition: nu.h:26
phi
Definition: phi.h:25
phi::d_x0t_dt
point d_x0t_dt() const
Definition: rotating-hill.h:42
phi::phi
phi(size_t d1, Float nu1, Float t1=0)
Definition: rotating-hill.h:34
phi::operator()
Float operator()(const Float &x) const
Definition: phi.h:27
phi::sigma
static Float sigma(size_t d, Float nu1, Float t=0)
Definition: rotating-hill.h:36
u::d
size_t d
Definition: rotating-hill.h:29
rheolef::exp
tensor_basic< T > exp(const tensor_basic< T > &a, size_t d)
Definition: tensor-exp.cc:92
phi::x0
point x0
Definition: rotating-hill.h:46
u::u0
Float u0
Definition: rotating-hill.h:29
u
Definition: leveque.h:25
phi::u0
Float u0
Definition: rotating-hill.h:46
Float
see the Float page for the full documentation
point
see the point page for the full documentation
phi::x0t
point x0t() const
Definition: rotating-hill.h:38
phi::nu
Float nu
Definition: rotating-hill.h:46
u::u
u(size_t d1)
Definition: rotating-hill.h:28
rheolef::dist2
T dist2(const point_basic< T > &x, const point_basic< T > &y)
Definition: point.h:293
phi::t0
static constexpr Float t0
Definition: rotating-hill.h:47