Rheolef  7.1
an efficient C++ finite element environment
navier_stokes_taylor_dg.cc

The Navier-Stokes equations for the Taylor benchmark with fixed-point and discontinuous Galerkin methods – di Pietro & Ern variant

#include "rheolef.h"
using namespace rheolef;
using namespace std;
#include "taylor.h"
#include "inertia.h"
int main(int argc, char**argv) {
environment rheolef (argc, argv);
geo omega (argv[1]);
space Xh (omega, argv[2], "vector");
space Qh (omega, argv[2]);
Float Re = (argc > 3) ? atof(argv[3]) : 1;
size_t max_iter = (argc > 4) ? atoi(argv[4]) : 1;
form a, b, c, mp;
field lh, kh;
stokes_dirichlet_dg (Xh, Qh, a, b, c, mp, lh, kh);
field uh (Xh, 0), ph (Qh, 0);
problem_mixed stokes (a, b, c);
stokes.set_metric (mp);
stokes.solve (lh, kh, uh, ph);
trial u (Xh); test v (Xh);
form a1 = a + Re*inertia (uh, u, v);
lh += Re*inertia_fix_rhs (v);
derr << "#k r as" << endl;
for (size_t k = 0; k < max_iter; ++k) {
stokes = problem_mixed (a1, b, c);
stokes.set_metric (mp);
stokes.solve (lh, kh, uh, ph);
form th = inertia (uh, u, v);
a1 = a + Re*th;
field rh = a1*uh + b.trans_mult(ph) - lh;
derr << k << " " << rh.max_abs() << " " << th(uh,uh) << endl;
}
dout << catchmark("Re") << Re << endl
<< catchmark("u") << uh
<< catchmark("p") << ph;
}
main
int main(int argc, char **argv)
Definition: navier_stokes_taylor_dg.cc:31
form
see the form page for the full documentation
rheolef::catchmark
see the catchmark page for the full documentation
Definition: catchmark.h:67
taylor.h
The Taylor benchmark – right-hand-side and boundary condition.
mkgeo_ball.b
int b
Definition: mkgeo_ball.sh:152
field
see the field page for the full documentation
rheolef::problem_mixed
problem_mixed_basic< Float > problem_mixed
see the problem_mixed page for the full documentation
Definition: problem_mixed.h:236
problem_mixed
see the problem_mixed page for the full documentation
space
see the space page for the full documentation
rheolef.h
rheolef - reference manual
stokes_dirichlet_dg.icc
The Stokes problem with Dirichlet boundary condition by the discontinuous Galerkin method – solver fu...
a
Definition: diffusion_isotropic.h:25
inertia
form inertia(W w, U u, V v, integrate_option iopt=integrate_option())
Definition: inertia.h:26
rheolef::environment
see the environment page for the full documentation
Definition: environment.h:115
lh
field lh(Float epsilon, Float t, const test &v)
Definition: burgers_diffusion_operators.icc:25
inertia.h
The inertia term of the Navier-Stokes equation with the discontinuous Galerkin method – di Pietro & E...
stokes_dirichlet_dg
void stokes_dirichlet_dg(const space &Xh, const space &Qh, form &a, form &b, form &c, form &mp, field &lh, field &kh, integrate_option iopt=integrate_option())
Definition: stokes_dirichlet_dg.icc:25
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
test
see the test page for the full documentation
u
Definition: leveque.h:25
rheolef::derr
odiststream derr(cerr)
see the diststream page for the full documentation
Definition: diststream.h:436
Float
see the Float page for the full documentation
inertia_fix_rhs
field inertia_fix_rhs(test v, integrate_option iopt=integrate_option())
Definition: inertia.h:37
u
Float u(const point &x)
Definition: transmission_error.cc:26
trial
see the test page for the full documentation
mkgeo_ball.a
int a
Definition: mkgeo_ball.sh:151
rheolef::dout
odiststream dout(cout)
see the diststream page for the full documentation
Definition: diststream.h:430
rheolef::std
Definition: vec_expr_v2.h:402
geo
see the geo page for the full documentation
mkgeo_ball.c
int c
Definition: mkgeo_ball.sh:153