Ejemplo n.º 1
0
 def solve(verbose=False):
     return helpers.perform_convergence_tests(
         Poisson(),
         exact_sol,
         get_mesh,
         range(6),
         verbose=verbose
         )
Ejemplo n.º 2
0
def solve(problem, max_k, verbose=False):
    def solver(mesh):
        matrix, rhs = pyfvm.discretize_linear(problem, mesh)
        ml = pyamg.smoothed_aggregation_solver(matrix)
        u = ml.solve(rhs, tol=1e-10)
        return u

    return helpers.perform_convergence_tests(
        solver, problem.exact_sol, problem.get_mesh, range(max_k), verbose=verbose
    )
Ejemplo n.º 3
0
def solve(problem, max_k, verbose=False):
    def solver(mesh):
        matrix, rhs = pyfvm.discretize_linear(problem, mesh)
        ml = pyamg.smoothed_aggregation_solver(matrix)
        u = ml.solve(rhs, tol=1e-10)
        return u

    return helpers.perform_convergence_tests(
        solver, problem.exact_sol, problem.get_mesh, range(max_k), verbose=verbose
    )
Ejemplo n.º 4
0
def solve(problem, max_k, verbose=False):
    def solver(mesh):
        f, jacobian = pyfvm.discretize(problem, mesh)

        def jacobian_solver(u0, rhs):
            from scipy.sparse import linalg

            jac = jacobian.get_linear_operator(u0)
            return linalg.spsolve(jac, rhs)

        u0 = numpy.zeros(len(mesh.node_coords))
        u = pyfvm.newton(f.eval, jacobian_solver, u0, verbose=False)
        return u

    return helpers.perform_convergence_tests(
        solver, problem.exact_sol, problem.get_mesh, range(max_k), verbose=verbose
    )
Ejemplo n.º 5
0
def solve(problem, max_k, verbose=False):
    def solver(mesh):
        f, jacobian = pyfvm.discretize(problem, mesh)

        def jacobian_solver(u0, rhs):
            from scipy.sparse import linalg

            jac = jacobian.get_linear_operator(u0)
            return linalg.spsolve(jac, rhs)

        u0 = numpy.zeros(len(mesh.node_coords))
        u = pyfvm.newton(f.eval, jacobian_solver, u0, verbose=False)
        return u

    return helpers.perform_convergence_tests(solver,
                                             problem.exact_sol,
                                             problem.get_mesh,
                                             range(max_k),
                                             verbose=verbose)