24#include "arccore/alina/AMG.h"
26#include "arccore/alina/Adapters.h"
27#include "arccore/alina/BlockCSRBackend.h"
28#include "arccore/alina/Coarsening.h"
29#include "arccore/alina/Relaxation.h"
30#include "arccore/alina/BiCGStabSolver.h"
31#include "arccore/alina/Profiler.h"
37 auto& prof = Alina::Profiler::globalProfiler();
42 std::vector<ptrdiff_t> ptr;
43 std::vector<ptrdiff_t> col;
44 std::vector<double> val;
45 std::vector<double> rhs;
49 std::istream_iterator<int> iend;
50 std::istream_iterator<double> dend;
52 std::ifstream fptr(
"rows.txt");
53 std::ifstream fcol(
"cols.txt");
54 std::ifstream fval(
"values.txt");
55 std::ifstream frhs(
"rhs.txt");
57 Alina::precondition(fptr,
"rows.txt not found");
58 Alina::precondition(fcol,
"cols.txt not found");
59 Alina::precondition(fval,
"values.txt not found");
60 Alina::precondition(frhs,
"rhs.txt not found");
62 std::istream_iterator<int> iptr(fptr);
63 std::istream_iterator<int> icol(fcol);
64 std::istream_iterator<double> ival(fval);
65 std::istream_iterator<double> irhs(frhs);
67 ptr.assign(iptr, iend);
68 col.assign(icol, iend);
69 val.assign(ival, dend);
70 rhs.assign(irhs, dend);
73 int n = ptr.size() - 1;
78 prm.coarsening.aggr.eps_strong = 0;
79 prm.coarsening.aggr.block_size = 4;
80 prm.npre = prm.npost = 2;
85 AMG amg(std::tie(n, ptr, col, val), prm, bprm);
88 std::cout << amg << std::endl;
90 std::vector<double> x(n, 0);
98 std::cout <<
"Iterations: " << r.nbIteration() << std::endl
99 <<
"Error: " << r.residual() << std::endl;
101 std::cout << prof << std::endl;
Algebraic multigrid method.
BiConjugate Gradient Stabilized (BiCGSTAB) method.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Alina::detail::empty_params params
block_crs backend definition.