19#include <gtest/gtest.h>
23#include "arccore/alina/BuiltinBackend.h"
24#include "arccore/alina/AMG.h"
25#include "arccore/alina/PreconditionedSolver.h"
27#include "arccore/alina/Coarsening.h"
28#include "arccore/alina/Relaxation.h"
30#include "arccore/alina/ConjugateGradientSolver.h"
31#include "arccore/alina/BiCGStabSolver.h"
32#include "arccore/alina/GMRESSolver.h"
34#include "arccore/alina/Adapters.h"
35#include "arccore/alina/Profiler.h"
37#include "SampleProblemCommon.h"
40using namespace Arcane::Alina;
42TEST(alina_test_complex, complex_matrix_adapter)
44 typedef std::complex<double> complex;
48 std::vector<complex> val;
49 std::vector<complex> rhs;
51 size_t n = sample_problem(32, val, col, ptr, rhs);
53 std::vector<complex> x(n, complex(0.0, 0.0));
58 prm.put(
"precond.coarsening.aggr.block_size", 2);
63 SolverType solve(Alina::adapter::complex_matrix(std::tie(n, ptr, col, val)), prm);
65 std::cout << solve.precond() << std::endl;
67 auto f_range = Alina::adapter::complex_range<const double>(rhs);
68 auto x_range = Alina::adapter::complex_range<double>(x);
72 ASSERT_NEAR(r.residual(), 0.0, 1e-8);
74 std::cout <<
"iters: " << r.nbIteration() << std::endl
75 <<
"resid: " << r.residual() << std::endl;
Algebraic multigrid method.
Convenience class that bundles together a preconditioner and an iterative solver.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-