12#ifndef ARCCORE_ALINA_MPI_DISTRIBUTEDSKYLINELUDIRECTSOLVER_H
13#define ARCCORE_ALINA_MPI_DISTRIBUTEDSKYLINELUDIRECTSOLVER_H
26#include "arccore/alina/BuiltinBackend.h"
27#include "arccore/alina/Adapters.h"
28#include "arccore/alina/SkylineLUSolver.h"
29#include "arccore/alina/DistributedDirectSolverBase.h"
34namespace Arcane::Alina
45template <
typename value_type>
47:
public DistributedDirectSolverBase<value_type, DistributedSkylineLUDirectSolver<value_type>>
52 typedef typename Solver::params params;
56 template <
class Matrix>
58 const params& prm = params{})
61 static_cast<Base*
>(
this)->init(comm, A);
64 static size_t coarse_enough()
66 return Solver::coarse_enough();
69 int comm_size(
int )
const
74 void init(mpi_communicator,
const build_matrix& A)
76 S = std::make_shared<Solver>(A, prm);
85 template <
class Vec1,
class Vec2>
86 void solve(
const Vec1& rhs, Vec2& x)
const
95 std::shared_ptr<Solver> S;
Base class for distributed direct solver.
DistributedSkylineLUDirectSolver(mpi_communicator comm, const Matrix &A, const params &prm=params{})
Constructor.
void solve(const Vec1 &rhs, Vec2 &x) const
Solves the problem for the given right-hand side.
Direct solver that uses Skyline LU factorization.
Matrix class, to be used by user.
Sparse matrix stored in CSR (Compressed Sparse Row) format.
Convenience wrapper around MPI_Comm.