WIP: Implement an overlapping block Gauss-Seidel step
This patch brings a block Gauss-Seidel step implementation for a general set of blocks. The blocks are specified at run-time, and they can overlap.
I am not really sure yet what the final design should look like. Some open questions and things left to do are:
- Do not hard-wire the type of the local matrix
- Allow to choose different solvers for the local problems
- Precompute the local matrices
- For direct local solvers: Precompute the local factorizations
- Is std::vectorstd::vector the best data structure for the blocks? Or would it make sense to make the data structure configurable?
Comments are welcome.