These are timing and accuracy results to solve the system $$ \gathered -\nabla\cdot(a\nabla u)+b\cdot\nabla u+cu=f\quad\text{on }\Omega, \\ a\frac{\partial u}{\partial n}+\gamma u=g\quad\text{on }\partial Omega. \endgathered $$ with $b=0$ with $\Omega=[0,1]^2$ and a regular grid of size $129 \times 129$ with one set of diagonals and linear finite elements. Conjugate gradient with various preconditioers was used. I solved the problem on the k=7'th refinement of the two-triangulation of the square until the dot product of the residual with the preconditioner of the residual was $16^{-k}$. It's not clear to me what the stopping criterion should be. The four columns of numbers are L2 error, H1 error, User ms, and GC ms. The L2 and H1 errors were estimated by injecting the approximate solution into a $257 \times 257$ grid and comparing it with the interpolant of the true solution on the fine grid. The problems are roughly in increasing order of difficulty; in the last problem, for example, the stiffness coefficient $a$ varies from 1.0 to 21.0 over the domain. User ms is the amount of user+system time to solve the linear system only; every once in a while there was a garbage collection during the solution process, whose time is measured separately. The tests were run on a box: % cat /proc/cpu model name : Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz % uname -a Linux heine 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux % gsi -v v4.6.4 20120222164157 x86_64-unknown-linux-gnu "./configure 'CC=gcc -march=native -fschedule-insns -frename-registers' '--enable-single-host' '--enable-shared' '--enable-multiple-versions'" % gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6.1/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) heine:~/programs/615project/2012/code> gsc++ -:m1000000 [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] Gambit v4.6.4 > (load "all") "/home/lucier/programs/615project/2012/code/all.o1" > (load "final-tests") "/home/lucier/programs/615project/2012/code/final-tests.o1" > (run-cg-tests symmetric-tests) The number of refinements is 7 a=1, c=1, u=1, Robin, gamma=x (error = 0 with exact linear algebra) CG: (Identity preconditioner) .0000068903 .0000923789 420. 0. CG: (Diagonal preconditioner) .0000462286 .0003439902 368. 100. CG: (Gauss-Seidel preconditioner) .0000364740 .0002816136 320. 0. a=1, c=1, u=x, Neumann (error = 0 with exact linear algebra) CG: (Identity preconditioner) .0000049105 .0000978166 372. 0. CG: (Diagonal preconditioner) .0000280211 .0003103475 144. 96. CG: (Gauss-Seidel preconditioner) .0000932567 .0004037135 252. 0. a=1+xy, c=1, u=x+y, Neumann (error = 0 with exact linear algebra) CG: (Identity preconditioner) .0000058875 .0000905903 544. 0. CG: (Diagonal preconditioner) .0000480641 .0003347609 388. 100. CG: (Gauss-Seidel preconditioner) .0000308550 .0002028615 372. 0. a=1, c=1, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0000178524 .0055265902 280. 0. CG: (Diagonal preconditioner) .0000062320 .0055243868 204. 96. CG: (Gauss-Seidel preconditioner) .0000227212 .0055283885 176. 0. a=1, c=1, u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0000308271 .0136300308 176. 0. CG: (Diagonal preconditioner) .0000513635 .0136335376 60. 0. CG: (Gauss-Seidel preconditioner) .0000463294 .0136320274 136. 0. a=1, c=1, u=\sin(\pi x)+\sin(\pi y), Neumann CG: (Identity preconditioner) .0001293431 .0192817840 248. 0. CG: (Diagonal preconditioner) .0001168842 .0192826374 180. 0. CG: (Gauss-Seidel preconditioner) .0001162350 .0192801277 324. 0. a=11.0+10.0*\cos\pi x, c=1, u=xy, Neumann CG: (Identity preconditioner) .0000143842 .0039063974 1368. 100. CG: (Diagonal preconditioner) .0000173137 .0039080293 568. 96. CG: (Gauss-Seidel preconditioner) .0000167438 .0039074115 476. 0. a=1, c=1+xy, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0000103995 .0055255250 260. 120. CG: (Diagonal preconditioner) .0001655261 .0056521738 188. 0. CG: (Gauss-Seidel preconditioner) .0000233600 .0055282658 232. 0. a=1, c=2+\cos(\pi y), u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0000309947 .0136305575 260. 0. CG: (Diagonal preconditioner) .0000334641 .0136317774 180. 0. CG: (Gauss-Seidel preconditioner) .0000486066 .0136329634 168. 96. a=1, c=1, gamma=2+\cos(\pi x), u=\sin(\pi x)+\sin(\pi y), Robin CG: (Identity preconditioner) .0000358807 .0192766031 348. 0. CG: (Diagonal preconditioner) .0000394758 .0192773913 360. 0. CG: (Gauss-Seidel preconditioner) .0000384384 .0192771901 328. 92. a=11.0+10.0*\cos\pi x, c=1+xy, gamma=2+\cos(\pi x), u=xy, Robin CG: (Identity preconditioner) .0000123240 .0039061715 1140. 96. CG: (Diagonal preconditioner) .0000158813 .0039078359 568. 0. CG: (Gauss-Seidel preconditioner) .0000147558 .0039071844 520. 0. >