AMG/parallel solver modifies matrix
We currently pass an assembled matrix into the linear solver. However, the interface requires passing a non-const matrix. This is because the linear solver actually modifies the matrix pattern depending on the parallel communication strategy.
In my opinion that's not a good implementation. The matrix should be already assembled with the right pattern. And, the preparation of the matrix for the linear solver should be part of the assembler not the solver.
The question is if these modification depend on the specific solver/preconditioner combination or just on the chosen communication strategy and discretization scheme (independent of the solver)? If the latter is the case, we should definitely consider moving the pattern modification to the assembler.