add preconditioner & cubic interpolation