The diffusive Burgers equation – error analysis
int main(
int argc,
char**argv) {
Float err_expected = (argc > 1) ? atof(argv[1]) : 1;
err_l2_l2 = 0,
err_linf_linf = 0,
meas_omega = 0;
bool have_meas_omega = false;
dout <<
"# t err_l2(t) err_linf(t)" << endl;
while (
din >> even(t,uh)) {
const geo& omega = uh.get_geo();
if (!have_meas_omega) {
have_meas_omega = true;
}
iopt.
set_order (2*uh.get_space().degree()+1);
err_linf_linf = max(err_linf_linf, err_linf);
err_linf_l2 = max(err_linf_l2, err_l2);
err_l2_l2 += sqr(err_l2);
dout << t <<
" " << err_l2 <<
" " << err_linf << endl;
}
err_l2_l2 = sqrt(err_l2_l2/
n);
dout <<
"# err_l2_l2 = " << err_l2_l2 << endl
<< "# err_linf_l2 = " << err_linf_l2 << endl
<< "# err_linf_linf = " << err_linf_linf << endl;
return (err_linf_l2 <= err_expected) ? 0 : 1;
}