Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
rotating-hill.h

Convection-diffusion equation – the rotating hill benchmark.

Convection-diffusion equation – the rotating hill benchmark

struct u {
point operator() (const point & x) const {
return (d == 1) ? point(u0) : point(x[1], -x[0]); }
u (size_t d1) : d(d1), u0 (0.5/acos(Float(-1))) {}
protected: size_t d; Float u0;
};
struct phi {
Float operator() (const point& x) const {
return exp(-4*nu*(t/t0) - dist2(x,x0t())/(t0+4*nu*t)); }
phi (size_t d1, Float nu1, Float t1=0) : d(d1), nu(nu1), t(t1),
u0 (0.5/acos(Float(-1))), x0(-0.5,0) {}
static Float sigma(size_t d, Float nu1, Float t=0) {
return 4*nu1/t0 - 2*d*nu1/(t0 + 4*nu1*t); }
point x0t() const {
if (d == 1) return point(x0[0] + u0*t);
return point( x0[0]*cos(t) + x0[1]*sin(t),
-x0[0]*sin(t) + x0[1]*cos(t)); }
point d_x0t_dt() const {
if (d == 1) return point(u0);
return point(-x0[0]*sin(t) + x0[1]*cos(t),
-x0[0]*cos(t) - x0[1]*sin(t)); }
protected: size_t d; Float nu, t, u0; point x0;
static constexpr Float t0 = 0.2;
};
see the Float page for the full documentation
see the point page for the full documentation
T dist2(const point_basic< T > &x, const point_basic< T > &y)
Definition point.h:292
Definition nu.h:26
Definition phi.h:25
size_t d
Float t
point x0
Float u0
point x0t() const
static constexpr Float t0
point d_x0t_dt() const
Float nu
Float operator()(const Float &x) const
Definition phi.h:27
Definition leveque.h:25
size_t d
point operator()(const point &x) const
Definition leveque.h:26
Float u0
u()
Definition zalesak.h:33