12#ifndef ARCANE_CORE_MATVEC_MATRIX_H
13#define ARCANE_CORE_MATVEC_MATRIX_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/Numeric.h"
20#include "arcane/core/matvec/Vector.h"
25namespace Arcane::MatVec
43class ARCANE_CORE_EXPORT Matrix
51 Matrix(
const Matrix& rhs);
53 void operator=(
const Matrix& rhs);
75 void dump(std::ostream& o)
const;
123 virtual void apply(
Vector& out_vec,
const Vector& vec) = 0;
129class ARCANE_CORE_EXPORT ConjugateGradientSolver
133 ConjugateGradientSolver()
135 , m_residual_norm(0.0)
136 , m_max_iteration(5000)
139 Integer nbIteration()
const {
return m_nb_iteration; }
140 Real residualNorm()
const {
return m_residual_norm; }
141 void setMaxIteration(
Integer max_iteration)
143 m_max_iteration = max_iteration;
149 Real m_residual_norm;
167class ARCANE_CORE_EXPORT DiagonalPreconditioner
172 DiagonalPreconditioner(
const Matrix& matrix);
180 Vector m_inverse_diagonal;
194 void negateVector(
Vector& vec);
204 Matrix matrixMatrixProductFast(
const Matrix& left_matrix,
const Matrix& right_matrix);
210 const Matrix& right_matrix);
222class ARCANE_CORE_EXPORT AMGPreconditioner
231 virtual ~AMGPreconditioner();
235 virtual void build(
const Matrix& matrix);
250class ARCANE_CORE_EXPORT AMGSolver
258 virtual ~AMGSolver();
262 virtual void build(
const Matrix& matrix);
266 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.