Topic: Performance tips with PETSc.

I've recently spent some time optimizing a bit of code, and I implemented block support for PETSc matrices.
The limitations are that it cannot really be applied efficiently to problems with varying number of DOFs in each node, or when you have partial Dirichlet boundary conditions on some part of the boundary (this offsets the natural blocking of the unknowns, and likely won't work in a block structure).

The blocks aren't useable in all the PETSc external solvers, so, that is another caveat.

When it comes to MatAssembly + KSPSolve, the blocks can cut down the execution time by ~30%.


(I haven't merged with oofem.org yet)