Loading...
Searching...
No Matches
mosolov_error.cc

The Mossolov problem for a circular pipe – error analysis.

The Mossolov problem for a circular pipe – error analysis

#include "rheolef.h"
using namespace rheolef;
using namespace std;
#include "mosolov_exact_circle.h"
int main(int argc, char**argv) {
environment rheolef (argc,argv);
Float tol_u = (argc > 1) ? atof(argv[1]) : 1e-15;
Float tol_s = (argc > 2) ? atof(argv[2]) : 1e-15;
Float Bi, n;
field sigma_h, uh;
din >> catchmark("Bi") >> Bi
>> catchmark("n") >> n
>> catchmark("sigma") >> sigma_h
>> catchmark("u") >> uh;
const geo& omega = uh.get_geo();
Float meas_omega = integrate(uh.get_geo());
geo boundary = omega["boundary"];
const space& Xh = uh.get_space();
const space& Th = sigma_h.get_space();
integrate_option iopt;
iopt.set_family(integrate_option::gauss);
iopt.set_order(3*Xh.degree());
Float err_u_l2 = sqrt(integrate (omega, sqr(uh - u(Bi,n)), iopt)/meas_omega);
Float err_u_h1 = sqrt(integrate (omega, norm2(grad(uh) - grad_u(Bi,n)), iopt)/meas_omega);
Float err_s_l2 = sqrt(integrate (omega, norm2(sigma_h - sigma(Bi,n)), iopt)/meas_omega);
space Xh1 (omega, "P" + to_string(2*Xh.degree()));
space Th1 (omega, "P" + to_string(2*Xh.degree()) + "d", "vector");
field euh = lazy_interpolate (Xh1, uh - u(Bi,n));
field esh = lazy_interpolate (Th1, sigma_h - sigma(Bi,n));
Float err_u_linf = euh.max_abs();
Float err_s_linf = esh.max_abs();
dout << "err_u_linf = " << err_u_linf << endl
<< "err_u_l2 = " << err_u_l2 << endl
<< "err_u_h1 = " << err_u_h1 << endl
<< "err_s_linf = " << err_s_linf << endl
<< "err_s_l2 = " << err_s_l2 << endl;
return (err_u_linf < tol_u) && (err_s_l2 < tol_s) ? 0 : 1;
}
Float
see the Float page for the full documentation
field
see the field page for the full documentation
geo
see the geo page for the full documentation
rheolef::catchmark
see the catchmark page for the full documentation
Definition catchmark.h:67
rheolef::environment
see the environment page for the full documentation
Definition environment.h:121
rheolef::integrate_option
see the integrate_option page for the full documentation
Definition integrate_option.h:125
rheolef::integrate_option::set_family
void set_family(family_type type)
Definition integrate_option.h:260
rheolef::integrate_option::set_order
void set_order(size_t r)
Definition integrate_option.h:254
space
see the space page for the full documentation
main
int main()
Definition field2bb.cc:58
Xh1
space_basic< T, M > Xh1
Definition field_expr.h:232
mosolov_exact_circle.h
The Mossolov problem for a circular pipe – exact solution.
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39
std
STL namespace.
rheolef.h
rheolef - reference manual
grad_u
Definition combustion_exact.icc:34
sigma
Definition mosolov_exact_circle.h:40
u
Definition leveque.h:25