/usr/share/doc/rheolef-doc/examples/transport_dg_error.cc is in rheolef-doc 6.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include "rheolef.h"
using namespace rheolef;
using namespace std;
struct phi : field_functor<phi,Float> {
Float operator() (const point& x) const { return exp(-sigma*x[0]); }
phi(Float sigma1) : sigma(sigma1) {}
Float sigma;
};
int main(int argc, char**argv) {
environment rheolef (argc, argv);
Float tol = (argc > 1) ? atof(argv[1]) : 1e-10;
bool dump = (argc > 2);
Float sigma;
field phi_h;
din >> catchmark("sigma") >> sigma
>> catchmark("phi") >> phi_h;
size_t k = phi_h.get_space().degree();
quadrature_option_type qopt;
qopt.set_family(quadrature_option_type::gauss);
qopt.set_order(2*k+1);
Float err_l2 = sqrt(integrate (phi_h.get_geo(), sqr(phi_h - phi(sigma)), qopt));
space Th1 (phi_h.get_geo(), "P"+itos(k+1)+"d");
field eh = interpolate(Th1, phi_h - phi(sigma));
Float err_linf = eh.max_abs();
derr << "err_l2 = " << err_l2 << endl
<< "err_linf = " << err_linf << endl;
if (dump) {
dout << catchmark("phi_h") << phi_h
<< catchmark("phi") << interpolate(phi_h.get_space(), phi(sigma))
<< catchmark("e") << eh;
}
return (err_l2 < tol) ? 0 : 1;
}
|