35#include "arccore/alina/BuiltinBackend.h"
36#include "arccore/alina/Adapters.h"
37#include "arccore/alina/PreconditionedSolver.h"
38#include "arccore/alina/AMG.h"
39#include "arccore/alina/Coarsening.h"
40#include "arccore/alina/Relaxation.h"
41#include "arccore/alina/BiCGStabSolver.h"
42#include "arccore/alina/StaticMatrix.h"
44#include "arccore/alina/IO.h"
45#include "arccore/alina/Profiler.h"
49int main(
int argc,
char* argv[])
53 std::cerr <<
"Usage: " << argv[0] <<
" <matrix.mtx>" << std::endl;
58 auto& prof = Alina::Profiler::globalProfiler();
62 std::vector<ptrdiff_t> ptr, col;
63 std::vector<double> val;
67 std::cout <<
"Matrix " << argv[1] <<
": " << rows <<
"x" << cols << std::endl;
71 std::vector<double> f(rows, 1.0);
75 std::vector<double> D(rows, 1.0);
76 for (ptrdiff_t i = 0; i < rows; ++i) {
77 for (ptrdiff_t j = ptr[i], e = ptr[i + 1]; j < e; ++j) {
79 D[i] = 1 /
sqrt(val[j]);
86 for (ptrdiff_t i = 0; i < rows; ++i) {
87 for (ptrdiff_t j = ptr[i], e = ptr[i + 1]; j < e; ++j) {
88 val[j] *= D[i] * D[col[j]];
96 auto A = std::tie(rows, ptr, col, val);
115 auto Ab = Alina::adapter::block_matrix<dmat_type>(A);
120 std::cout << solve << std::endl;
123 std::vector<double> x(rows, 0.0);
126 auto f_ptr =
reinterpret_cast<dvec_type*
>(f.data());
127 auto x_ptr =
reinterpret_cast<dvec_type*
>(x.data());
137 std::cout <<
"Iters: " << r.nbIteration() << std::endl
138 <<
"Error: " << r.residual() << std::endl
139 << prof << std::endl;
Algebraic multigrid method.
Convenience class that bundles together a preconditioner and an iterative solver.
Vue d'un tableau d'éléments de type T.
__host__ __device__ double sqrt(double v)
Racine carrée de v.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Smoothed aggregation coarsening.