add a linear solver using PETsc