add this idea into modern PETSc/KSP framework https://github.com/chi-tech/chi-tech/blob/5f54abe3a1457e5a546043da9ce67c42696467c4/ChiModules/LinearBoltzmannSolver/IterativeOperations/lbs_compute_pwchange.cc