# [linear][istlsolvers] Improve parameter handling and allow setting a matrix operator for reuse

- [parallelhelpers] Introduce possibility to split treatment of vector and matrix
- [linear][istlsolvers] Improve parameter handling and allow setting a matrix operator for reuse
- The solver accepts now either a parameter group or a Dune::ParameterTree. In the case of the latter, the parameter tree is forwarded without modificaiton to the dune-istl solvers.
- Introduce a new function to set the maximum number of itertions
- Introduce two new interfaces "setMatrix(A)" and "solve(x, b)". The first one constructs a solver based on the matrix A. If the new solve interface without matrix is called, this pre-constructed solver is used in the solver. solve(A, x, b) still exists and construct a solver based on A and ignores any stored solver. This allows to contruct a solver and then reuse it for many right hand sides. This can be practical, for example, in parallel for linear problems where constructing the solver involves the modificaiton of the matrix and communication and is therefore an expensive step.
- [projection] Use istl solvers replacing old solver backends
- Use new istl solvers everywhere
- Deprecated the old solvers
- Return solver result that is convertible to bool but contains Dune::InverseOperatorResults
- Simplify parallel code branches
- Make solver copyable by using shared_ptr for parallel helper

Fixes #1220 (closed) Fixes #1230 (closed) Fixes #1223 (closed)

Edited by Timo Koch