Correcting bugs on iterative solver
+ introducing block-diagonal preconditioner