def run_deflation_solver(Solver, ls, params): sol = Solver(ls, **params) test_linsys.check_solver(sol, Solver, ls, params) if params['store_arnoldi']: (n_, n) = sol.H.shape # check E assert_array_almost_equal( sol.E, krypy.utils.inner(sol.projection.U, ls.MlAMr*sol.projection.U, ip_B=ls.ip_B)) # check C assert_array_almost_equal( sol.C, krypy.utils.inner(sol.projection.U, ls.MlAMr*sol.V[:, :n], ip_B=ls.ip_B)) # check B_ assert_array_almost_equal( sol.B_, krypy.utils.inner(sol.V, sol.projection.AU, ip_B=ls.ip_B)) # check Ritz pairs check_Ritz(sol, ls)
def run_RitzFactorySimple(Solver, ls, which): vector_factory = krypy.recycling.factories.RitzFactorySimple( n_vectors=3, which=which) recycling_solver = Solver() sols = [] params = {'maxiter': 50, 'tol': 1e-5, 'x0': None} for i in range(3): sols.append(recycling_solver.solve(ls, vector_factory=vector_factory, **params)) test_linsys.check_solver(sols[-1], Solver, ls, params) if i > 0: assert(len(sols[-1].resnorms) <= len(sols[0].resnorms))