Modularize diffusion solver
In order to be able to use different solvers, we want to clearly separate the matrix assembly from the solver part.
In order to be able to use different solvers, we want to clearly separate the matrix assembly from the solver part.