[WIP] Add/refactore conjugate gradient methods
Contains
- conjugate gradient method (CG), truncated CG, regularized CG, truncated regularized CG
- relative termination criteria based on the relative residual resp. an estimate on the relative energy error
- a generic iterative method that requires a termination criterion and a step implementation
- gtest unit and functional tests in folder tests/
- some elementary template meta-functions in fglue/
- mixins for common algorithmic parameters in mixins/
I took care to keep the interface of the previous implementation of the conjugate gradient method. At one point I did not do this. The default termination criterion is based on the relative energy error and not on the relative residual error. Since this termination criterion is more robust it was my preferred default choice. If you prefer the residual based termination criterion as default criterion I will change this.
Minor changes:
- added operator<< for InverseOperatorResult
- changed type of the static member category (in solvers and preconditioners) from anonymous enum to SolverCategory::Category (I think here it would be nice to replace SolverCategory with an enum class)
Edited by Markus Blatt