Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend > Class Template Reference

Distributed wrapper for Eigen::SparseLU solver. More...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/alina/arccore/alina/DistributedEigenSparseLUDirectSolver.h>

Inheritance diagram for Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >:
Collaboration diagram for Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >:

Public Types

using value_type = Backend::value_type
using EigenMatrix = Eigen::SparseMatrix<value_type, Eigen::ColMajor, int>
using Solver = EigenSolver<Eigen::SparseLU<EigenMatrix>>
typedef Solver::params params
typedef CSRMatrix< value_type > build_matrix
Public Types inherited from Arcane::Alina::DistributedDirectSolverBase< Backend, DistributedEigenSparseLUDirectSolver< Backend > >
typedef Backend::value_type value_type
typedef math::scalar_of< value_type >::type scalar_type
typedef math::rhs_of< value_type >::type rhs_type
using col_type
using ptr_type
typedef CSRMatrix< value_type, col_type, ptr_type > build_matrix

Public Member Functions

template<class Matrix>
 DistributedEigenSparseLUDirectSolver (mpi_communicator comm, const Matrix &A, const params &prm=params())
 Constructor.
int comm_size (int) const
void init (mpi_communicator, const build_matrix &A)
template<class Vec1, class Vec2>
void solve (const Vec1 &rhs, Vec2 &x) const
 Solves the problem for the given right-hand side.
Public Member Functions inherited from Arcane::Alina::DistributedDirectSolverBase< Backend, DistributedEigenSparseLUDirectSolver< Backend > >
void init (mpi_communicator comm, const build_matrix &Astrip)
void init (mpi_communicator comm, const DistributedMatrix< B > &A)
DistributedEigenSparseLUDirectSolver< Backend > & solver ()
const DistributedEigenSparseLUDirectSolver< Backend > & solver () const
void operator() (const VecF &f, VecX &x) const

Static Public Member Functions

static size_t coarse_enough ()

Private Types

using Base = DistributedDirectSolverBase<Backend, DistributedEigenSparseLUDirectSolver<Backend>>

Private Attributes

params prm
std::shared_ptr< Solver > S

Detailed Description

template<typename Backend>
class Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >

Distributed wrapper for Eigen::SparseLU solver.

This is a wrapper around Eigen SparseLU solver that provides a distributed direct solver interface but always works sequentially.

Definition at line 48 of file DistributedEigenSparseLUDirectSolver.h.

Member Typedef Documentation

◆ Base

template<typename Backend>
using Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::Base = DistributedDirectSolverBase<Backend, DistributedEigenSparseLUDirectSolver<Backend>>
private

Definition at line 51 of file DistributedEigenSparseLUDirectSolver.h.

◆ build_matrix

template<typename Backend>
typedef CSRMatrix<value_type> Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::build_matrix

Definition at line 59 of file DistributedEigenSparseLUDirectSolver.h.

◆ EigenMatrix

template<typename Backend>
using Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::EigenMatrix = Eigen::SparseMatrix<value_type, Eigen::ColMajor, int>

Definition at line 56 of file DistributedEigenSparseLUDirectSolver.h.

◆ params

template<typename Backend>
typedef Solver::params Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::params

Definition at line 58 of file DistributedEigenSparseLUDirectSolver.h.

◆ Solver

template<typename Backend>
using Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::Solver = EigenSolver<Eigen::SparseLU<EigenMatrix>>

Definition at line 57 of file DistributedEigenSparseLUDirectSolver.h.

◆ value_type

template<typename Backend>
using Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::value_type = Backend::value_type

Definition at line 55 of file DistributedEigenSparseLUDirectSolver.h.

Constructor & Destructor Documentation

◆ DistributedEigenSparseLUDirectSolver()

template<typename Backend>
template<class Matrix>
Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::DistributedEigenSparseLUDirectSolver ( mpi_communicator comm,
const Matrix & A,
const params & prm = params() )
inline

Constructor.

Definition at line 63 of file DistributedEigenSparseLUDirectSolver.h.

Member Function Documentation

◆ coarse_enough()

template<typename Backend>
size_t Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::coarse_enough ( )
inlinestatic

Definition at line 70 of file DistributedEigenSparseLUDirectSolver.h.

◆ comm_size()

template<typename Backend>
int Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::comm_size ( int ) const
inline

Definition at line 75 of file DistributedEigenSparseLUDirectSolver.h.

◆ init()

template<typename Backend>
void Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::init ( mpi_communicator ,
const build_matrix & A )
inline

Definition at line 80 of file DistributedEigenSparseLUDirectSolver.h.

◆ solve()

template<typename Backend>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::solve ( const Vec1 & rhs,
Vec2 & x ) const
inline

Solves the problem for the given right-hand side.

Parameters
rhsThe right-hand side.
xThe solution.

Definition at line 92 of file DistributedEigenSparseLUDirectSolver.h.

Member Data Documentation

◆ prm

template<typename Backend>
params Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::prm
private

Definition at line 99 of file DistributedEigenSparseLUDirectSolver.h.

◆ S

template<typename Backend>
std::shared_ptr<Solver> Arcane::Alina::DistributedEigenSparseLUDirectSolver< Backend >::S
private

Definition at line 100 of file DistributedEigenSparseLUDirectSolver.h.


The documentation for this class was generated from the following file: