Rheolef
7.1
an efficient C++ finite element environment
harten.h
The Burgers problem: the Harten exact solution
#include "
harten0.h
"
struct
harten
{
Float
operator()
(
const
point
& x)
const
{
Float
x0 = x[0]-
a
*
t
+
c
;
Float
shift = -2*floor((x0+1)/2);
Float
xs = x0 + shift;
check_macro
(xs >= -1 && xs <= 1,
"invalid xs="
<<xs);
return
a
+
b
*
h0
(
point
(xs));
}
harten
(
Float
t1=0,
Float
a1=1,
Float
b1=0.5,
Float
c1=0):
h0
(b1*t1),
t
(t1),
a
(a1),
b
(b1),
c
(c1) {}
Float
M
()
const
{
Float
pi = acos(-1.0);
return
sqr(pi)*
b
; }
Float
min
()
const
{
return
a
-
b
; }
Float
max
()
const
{
return
a
+
b
; }
protected
:
harten0
h0
;
Float
t
,
a
,
b
,
c
;
};
using
u_init
=
harten
;
using
g
=
harten
;
harten::min
Float min() const
Definition:
harten.h:37
harten0.h
The Burgers problem: the Harten exact solution at t=0.
harten::M
Float M() const
Definition:
harten.h:36
check_macro
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
harten::c
Float c
Definition:
harten.h:41
harten::a
Float a
Definition:
harten.h:41
harten::max
Float max() const
Definition:
harten.h:38
harten::harten
harten(Float t1=0, Float a1=1, Float b1=0.5, Float c1=0)
Definition:
harten.h:34
harten::b
Float b
Definition:
harten.h:41
harten::h0
harten0 h0
Definition:
harten.h:40
harten::t
Float t
Definition:
harten.h:41
a
Definition:
diffusion_isotropic.h:25
Float
see the Float page for the full documentation
u_exact
Definition:
interpolate_RTk_polynom.icc:125
point
see the point page for the full documentation
harten
Definition:
harten.h:26
g
Definition:
cavity_dg.h:25
harten::operator()
Float operator()(const point &x) const
Definition:
harten.h:27
harten0
Definition:
harten0.h:26