12#ifndef ARCANE_MATVEC_MATRIX_H
13#define ARCANE_MATVEC_MATRIX_H
17#include "arcane/utils/ArcanePrecomp.h"
19#include "arcane/utils/Array.h"
20#include "arcane/utils/Numeric.h"
22#include "arcane/matvec/Vector.h"
27namespace Arcane::MatVec
45class ARCANE_CORE_EXPORT Matrix
53 Matrix(
const Matrix& rhs);
55 void operator=(
const Matrix& rhs);
77 void dump(std::ostream& o)
const;
125 virtual void apply(
Vector& out_vec,
const Vector& vec) = 0;
131class ARCANE_CORE_EXPORT ConjugateGradientSolver
135 ConjugateGradientSolver()
137 , m_residual_norm(0.0)
138 , m_max_iteration(5000)
141 Integer nbIteration()
const {
return m_nb_iteration; }
142 Real residualNorm()
const {
return m_residual_norm; }
143 void setMaxIteration(
Integer max_iteration)
145 m_max_iteration = max_iteration;
151 Real m_residual_norm;
169class ARCANE_CORE_EXPORT DiagonalPreconditioner
174 DiagonalPreconditioner(
const Matrix& matrix);
182 Vector m_inverse_diagonal;
196 void negateVector(
Vector& vec);
206 Matrix matrixMatrixProductFast(
const Matrix& left_matrix,
const Matrix& right_matrix);
212 const Matrix& right_matrix);
224class ARCANE_CORE_EXPORT AMGPreconditioner
233 virtual ~AMGPreconditioner();
237 virtual void build(
const Matrix& matrix);
252class ARCANE_CORE_EXPORT AMGSolver
260 virtual ~AMGSolver();
264 virtual void build(
const Matrix& matrix);
268 virtual void solve(
const Vector& vector_b,
Vector& vector_x);
Interface du gestionnaire de traces.
Solveur direct utilisant le pivot de gauss.
Interface d'un préconditionneur.
Matrice avec stockage CSR.
Matrice avec stockage CSR.
MatrixImpl * m_impl
Implémentation.
static Matrix readHypre(const String &filename)
Lit la matrice au format Hypre.
void sortDiagonale()
Arrange le stockage pour que la diagonale soit le premier élément.
IntegerConstArrayView rowsIndex() const
Indices des premiers éléments de chaque ligne.
Real value(Integer row, Integer column) const
Retourne la valeur d'un élément de la matrice.
void setRowsSize(IntegerConstArrayView rows_size)
Positionne le nombre d'éléments non nuls de chaque ligne.
void setValues(IntegerConstArrayView columns, RealConstArrayView values)
Positionne les valeurs des éléments de la matrice.
IntegerConstArrayView columns() const
Indices des colonnes des valeurs.
void setValue(Integer row, Integer column, Real value)
Positionne la valeur d'un élément de la matrice.
static Matrix read(const String &filename)
Lit la matrice au format X Y.
void dump(std::ostream &o) const
Imprime la matrice.
RealConstArrayView values() const
Valeurs de la matrice.
Matrix clone() const
Clone la matrice.
Vecteur d'algèbre linéraire.
Chaîne de caractères unicode.
Int32 Integer
Type représentant un entier.
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
double Real
Type représentant un réel.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.
ConstArrayView< Real > RealConstArrayView
Equivalent C d'un tableau à une dimension de réels.