///////////////////////////////////////////////////////////////////
// Mladen Jurak
// Praktikum primijenjene matematike 2, ak. god. 2004/05
// FreeFEM++
//
// Rutina za ispis L2 greske u latex formatu.
////////////////////////////////////////////////////////////////////
// Ispis je u obliku tabele
func int ispis(real[int] & time, real[int] & errL2, real[int] & errRelL2,
int noOfItems, bool zaglavlje, string & ime)
// Klasična C-style funkcija. Mora biti definirana prije svojeg
// poziva.
// time = polje vremenskih trenutaka
// errL2 = polje pripadnih L2 grešaka
// errRelL2 = polje pripadnih relativnih L2 grešaka
// noOfItems = broj vrijednosti koje treba ispisati
// zaglavlje = true ako treba ispisati latex zaglavlje, false ako ne.
//
// Ako se vektori ne definiraju kao reference bivaju uništeni na izlazu iz funkcije
// Kompilacija: latex ime_datoteke.tex
// Prikaz: xdvi ime_datoteke.dvi
{
if( (noOfItems > errL2.n) || (noOfItems > time.n) || (noOfItems > errRelL2.n) )
{
cout << "Greska pri pozivu funkcije ispis. "
<< "Broj elemenata za ispis suvise velik.\n";
cout << "Broj elemenata za ispis = "<< noOfItems << endl;
cout << "Dimenzija polja time = " << time.n << endl;
cout << "Dimenzija polja errL2 = " << errL2.n << endl;
cout << "Dimenzija polja errRelL2 = " << errRelL2.n << endl;
exit(-36);
}
ofstream ofile(ime);
if(zaglavlje == true)
{
ofile << "\\documentclass[12pt]{article}\n";
ofile << "\\usepackage{amsmath}\n";
ofile << "\\usepackage{amssymb}\n";
ofile << "\n";
ofile << "\\begin{document}\n";
ofile << "\n";
}
ofile << "\\begin{center}\n";
ofile << "\\begin{tabular}{|c|c|c|}\\hline\n";
ofile <<
" t \& $\\| u_e(t) -u_h(t) \\|_{L^2}$ \& $\\| u_e(t) -u_h(t) \\|_{L^2}/\\| u_e(t)\\|_{L^2}$ \\\\ \\hline\\hline\n";
for(int i=0; i<noOfItems; ++i)
ofile << time[i]<< " \& "<< errL2[i]<< " \& "<<errRelL2[i]<< " \\\\ \\hline\n";
ofile << "\\end{tabular}\n";
ofile << "\\end{center}\n";
if(zaglavlje == true)
{
ofile << "\n";
ofile << "\\end{document}\n";
}
return 1;
}