12#ifndef ARCCORE_ALINA_ALINALIB_H
13#define ARCCORE_ALINA_ALINALIB_H
26#include "arccore/alina/AlinaGlobal.h"
36namespace Arcane::AlinaLib
46 double residual = 0.0;
67enum class eAlinaSolverType
75enum class eAlinaPreconditionerType
88class ARCCORE_ALINA_EXPORT AlinaParameters
90 friend AlinaPreconditioner;
91 friend AlinaSequentialSolver;
92 friend AlinaDistributedSolver;
93 friend AlinaSequentialSolverImpl;
94 friend AlinaDistributedSolverImpl;
112 void setString(
const char* name,
const char* value);
119 std::shared_ptr<AlinaParametersImpl> m_p;
132 friend AlinaSequentialSolverImpl;
133 friend AlinaDistributedSolverImpl;
161 void setString(
const char* name,
const char* value);
169 void setSolverAbsoluteTolerance(
Real value);
170 void setSolverRelativeTolerance(
Real value);
171 void setSolverMaxIteration(
Int32 value);
172 void setSolverVerbosity(
Int32 value);
174 void setSolverPreconditioner(eAlinaPreconditionerType v);
175 void setSolverType(eAlinaSolverType v);
183 std::shared_ptr<AlinaSolverParametersImpl> m_p;
191class ARCCORE_ALINA_EXPORT AlinaCSRMatrixView
195 AlinaCSRMatrixView(
Int32 nb_row,
const Int32* row_indexes,
const Int32* columns,
const double* values)
197 , m_row_indexes(row_indexes, nb_row + 1)
198 , m_columns(columns, row_indexes[nb_row])
199 , m_values(values, row_indexes[nb_row])
203 : m_nb_row(row_indexes.size() - 1)
204 , m_row_indexes(row_indexes)
211 constexpr Int32 nbRow()
const {
return m_nb_row; }
218 void dump(std::ostream& o)
const;
245class ARCCORE_ALINA_EXPORT AlinaPreconditioner
249 AlinaPreconditioner(
int n,
258 void apply(
const double* rhs,
double* x);
265 std::shared_ptr<AlinaPreconditionerImpl> m_p;
304 std::shared_ptr<IAlinaSolverImpl> m_p;
Déclarations générales de la composante 'message_passing'.
Types et fonctions associés aux classes SpanImpl, SmallSpan et Span.
Vue de matrice CSR utilisée dans AlinaLib.
void checkSizes() const
Vérifie que les tailles sont valides :
Implémentation pour un solveur distribué.
Gestion des paramètres pour Alina.
void setInt64(const char *name, Int64 value)
Définit un paramètre Int64 dans la liste de paramètres.
void setString(const char *name, const char *value)
Définit un paramètre flottant dans la liste de paramètres.
void setInt32(const char *name, Int32 value)
Définit un paramètre Int32 dans la liste de paramètres.
void readFromJSON(const char *fname)
Lit les paramètres à partir d'un fichier JSON.
void setReal(const char *name, Real value)
Définit un paramètre flottant dans la liste de paramètres.
Gestion du préconditionneur pour un solveur.
void report()
Affiche la structure du préconditionneur.
void apply(const double *rhs, double *x)
Applique le préconditionneur AMG (x = M^(-1) * rhs).
Implémentation pour un solveur séquentiel.
Gestion des paramètres pour les solveurs.
void readFromJSON(const char *fname)
Lit les paramètres à partir d'un fichier JSON.
void setString(const char *name, const char *value)
Définit un paramètre flottant dans la liste de paramètres.
void setInt32(const char *name, Int32 value)
Définit un paramètre Int32 dans la liste de paramètres.
void setReal(const char *name, Real value)
Définit un paramètre flottant dans la liste de paramètres.
void setInt64(const char *name, Int64 value)
Définit un paramètre Int64 dans la liste de paramètres.
AlinaSolverParameters()
Crée un solveur séquentiel.
Solveur de système linéaire.
AlinaSolver(const AlinaSolverParameters ¶ms, const AlinaCSRMatrixView &matrix_view)
Crée un solveur.
void report()
Affiche la structure du solveur.
AlinaConvergenceInfo solveMatrix(const AlinaCSRMatrixView &matrix_view, SmallSpan< const double > rhs, SmallSpan< double > x)
Résoud le problème pour la matrice et le côté droit donnés.
AlinaConvergenceInfo solve(SmallSpan< const double > rhs, SmallSpan< double > x)
Trouve la solution pour le côté droit donné.
Interface du gestionnaire de traces.
Interface du gestionnaire des échanges de messages.
Vue d'un tableau d'éléments de type T.
std::int64_t Int64
Type entier signé sur 64 bits.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.
Information de convergence.