12#ifndef ARCCORE_ALINA_ALINALIB_H
13#define ARCCORE_ALINA_ALINALIB_H
26#include "arccore/alina/AlinaGlobal.h"
38 double residual = 0.0;
41typedef double (*AlinaDefVecFunction)(
int vec, ptrdiff_t coo,
void* data);
59class ARCCORE_ALINA_EXPORT AlinaParameters
62 friend AlinaPreconditioner;
63 friend AlinaSequentialSolver;
64 friend AlinaDistributedSolver;
82 void setString(
const char* name,
const char* value);
89 std::shared_ptr<AlinaParametersImpl> m_p;
97class ARCCORE_ALINA_EXPORT AlinaCSRMatrixView
105 AlinaCSRMatrixView(Int32 nb_row,
const Int32* row_indexes,
const Int32* columns,
const double* values)
107 , m_row_indexes(row_indexes, nb_row + 1)
108 , m_columns(columns, row_indexes[nb_row])
109 , m_values(values, row_indexes[nb_row])
113 : m_nb_row(row_indexes.size() - 1)
114 , m_row_indexes(row_indexes)
121 constexpr Int32 nbRow()
const {
return m_nb_row; }
151class ARCCORE_ALINA_EXPORT AlinaPreconditioner
157 AlinaPreconditioner(
int n,
166 void apply(
const double* rhs,
double* x);
173 std::shared_ptr<AlinaPreconditionerImpl> m_p;
211 std::shared_ptr<AlinaSequentialSolverImpl> m_p;
232 AlinaDefVecFunction def_vec_func,
242 std::shared_ptr<AlinaDistributedSolverImpl> m_p;
Types and functions associated with the classes SpanImpl, SmallSpan and Span.
CSR Matrix view used in AlinaLib.
void checkSizes() const
Check that sizes are valid:
AlinaConvergenceInfo solve(Arcane::SmallSpan< const double > rhs, Arcane::SmallSpan< double > x)
Find solution for the given RHS.
AlinaDistributedSolver(MPI_Comm comm, const AlinaCSRMatrixView &matrix_view, int n_def_vec, AlinaDefVecFunction def_vec_func, void *def_vec_data, const AlinaParameters ¶ms)
Create distributed solver.
Handle parameters for Alina.
void setInt64(const char *name, Arcane::Int64 value)
Set Int64 parameter in the parameter list.
void setInt32(const char *name, Arcane::Int32 value)
Set Int32 parameter in the parameter list.
void setReal(const char *name, Arcane::Real value)
Set floating point parameter in the parameter list.
void readFromJSON(const char *fname)
Read parameters from a JSON file.
void setString(const char *name, const char *value)
Set floating point parameter in the parameter list.
Handle preconditioner for a solver.
void report()
Printout preconditioner structure.
void apply(const double *rhs, double *x)
Apply AMG preconditioner (x = M^(-1) * rhs).
void report()
Printout solver structure.
AlinaConvergenceInfo solve(Arcane::SmallSpan< const double > rhs, Arcane::SmallSpan< double > x)
Solve the problem for the given right-hand side.
AlinaSequentialSolver(const AlinaCSRMatrixView &matrix_view, const AlinaParameters *parameters)
Build a solver for matrix matrix.
AlinaConvergenceInfo solveMatrix(const AlinaCSRMatrixView &matrix_view, Arcane::SmallSpan< const double > rhs, Arcane::SmallSpan< double > x)
Solve the problem for the given matrix and the right-hand side.
View of an array of elements of type T.
std::int64_t Int64
Signed integer type of 64 bits.
double Real
Type representing a real number.
std::int32_t Int32
Signed integer type of 32 bits.