rheolef  6.5
neumann-laplace-check.cc
Go to the documentation of this file.
1 #include "rheolef.h"
2 using namespace rheolef;
3 using namespace std;
4 size_t N;
5 Float u_ex (const point& x) { return - 1./12 + (x[0]*(1-x[0]) + x[1]*(1-x[1]) + x[2]*(1-x[2]))/(2.*N); }
6 int main(int argc, char**argv) {
7  environment rheolef (argc, argv);
8  Float error_linf_expected = (argc > 1) ? atof(argv[1]) : 1e+38;
9  field uh; din >> uh;
10  const space& Xh = uh.get_space();
11  N = Xh.get_geo().dimension();
12  field pi_h_u = interpolate(Xh, u_ex);
13  field eh = pi_h_u - uh;
14  trial u (Xh); test v (Xh);
15  form m = integrate (u*v);
16  form a = integrate (dot(grad(u),grad(v)));
17  derr << "error_l2 " << sqrt(m(eh,eh)) << endl
18  << "error_h1 " << sqrt(a(eh,eh)) << endl
19  << "error_linf " << eh.max_abs() << endl;
20  return (eh.max_abs() <= error_linf_expected) ? 0 : 1;
21 }
22