Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition > Class Template Reference
Collaboration diagram for Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >:

Classes

struct  params
struct  DistributedAMGLevel

Public Types

using backend_type = Backend
using BackendType = Backend
typedef Backend::params backend_params
typedef Backend::value_type value_type
typedef math::scalar_of< value_type >::type scalar_type
typedef DistributedMatrix< Backend > matrix
typedef Backend::vector vector

Public Member Functions

template<class Matrix>
 DistributedAMG (mpi_communicator comm, const Matrix &A, const params &prm=params(), const backend_params &bprm=backend_params())
 DistributedAMG (mpi_communicator comm, std::shared_ptr< matrix > A, const params &prm=params(), const backend_params &bprm=backend_params())
template<class Matrix>
void rebuild (const Matrix &M, const backend_params &bprm=backend_params())
 Rebuild the hierarchy using the new system matrix.
template<class OtherBackend>
std::enable_if<!std::is_same< Backend, OtherBackend >::value, void >::type rebuild (std::shared_ptr< DistributedMatrix< OtherBackend > > A, const backend_params &bprm=backend_params())
void rebuild (std::shared_ptr< matrix > A, const backend_params &bprm=backend_params())
template<class Vec1, class Vec2>
void cycle (const Vec1 &rhs, Vec2 &&x) const
template<class Vec1, class Vec2>
void apply (const Vec1 &rhs, Vec2 &&x) const
std::shared_ptr< matrix > system_matrix_ptr () const
 Returns the system matrix from the finest level.
const matrix & system_matrix () const

Public Attributes

struct Arcane::Alina::DistributedAMG::params prm

Private Types

typedef std::list< DistributedAMGLevel >::const_iterator level_iterator

Private Member Functions

void init (std::shared_ptr< matrix > A, const backend_params &bprm)
template<class Vec1, class Vec2>
void cycle (level_iterator lvl, const Vec1 &rhs, Vec2 &x) const

Private Attributes

mpi_communicator comm
std::shared_ptr< matrix > A
Repartition repart
std::list< DistributedAMGLevellevels

Friends

template<class B, class C, class R, class D, class I>
std::ostream & operator<< (std::ostream &os, const DistributedAMG< B, C, R, D, I > &a)

Detailed Description

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
class Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >

Definition at line 51 of file DistributedAMG.h.

Member Typedef Documentation

◆ backend_params

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef Backend::params Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::backend_params

Definition at line 58 of file DistributedAMG.h.

◆ backend_type

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
using Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::backend_type = Backend

Definition at line 55 of file DistributedAMG.h.

◆ BackendType

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
using Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::BackendType = Backend

Definition at line 56 of file DistributedAMG.h.

◆ level_iterator

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef std::list<DistributedAMGLevel>::const_iterator Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::level_iterator
private

Definition at line 377 of file DistributedAMG.h.

◆ matrix

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef DistributedMatrix<Backend> Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::matrix

Definition at line 61 of file DistributedAMG.h.

◆ scalar_type

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef math::scalar_of<value_type>::type Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::scalar_type

Definition at line 60 of file DistributedAMG.h.

◆ value_type

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef Backend::value_type Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::value_type

Definition at line 59 of file DistributedAMG.h.

◆ vector

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
typedef Backend::vector Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::vector

Definition at line 62 of file DistributedAMG.h.

Constructor & Destructor Documentation

◆ DistributedAMG() [1/2]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class Matrix>
Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::DistributedAMG ( mpi_communicator comm,
const Matrix & A,
const params & prm = params(),
const backend_params & bprm = backend_params() )
inline

Definition at line 156 of file DistributedAMG.h.

◆ DistributedAMG() [2/2]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::DistributedAMG ( mpi_communicator comm,
std::shared_ptr< matrix > A,
const params & prm = params(),
const backend_params & bprm = backend_params() )
inline

Definition at line 167 of file DistributedAMG.h.

Member Function Documentation

◆ apply()

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::apply ( const Vec1 & rhs,
Vec2 && x ) const
inline

Definition at line 224 of file DistributedAMG.h.

◆ cycle() [1/2]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::cycle ( const Vec1 & rhs,
Vec2 && x ) const
inline

Definition at line 218 of file DistributedAMG.h.

◆ cycle() [2/2]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::cycle ( level_iterator lvl,
const Vec1 & rhs,
Vec2 & x ) const
inlineprivate

Definition at line 429 of file DistributedAMG.h.

◆ init()

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::init ( std::shared_ptr< matrix > A,
const backend_params & bprm )
inlineprivate

Definition at line 384 of file DistributedAMG.h.

◆ rebuild() [1/3]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class Matrix>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::rebuild ( const Matrix & M,
const backend_params & bprm = backend_params() )
inline

Rebuild the hierarchy using the new system matrix.

This requires for prm.allow_rebuild to be set. The transfer operators created during the initial setup are reused.

Definition at line 185 of file DistributedAMG.h.

Referenced by Arcane::Alina::DistributedAMG< Backend, DistributedCoarseningRuntime< Backend >, DistributedRelaxationRuntime< Backend >, DistributedDirectSolverRuntime< Backend >, MatrixPartitionerRuntime< Backend > >::rebuild().

Here is the caller graph for this function:

◆ rebuild() [2/3]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class OtherBackend>
std::enable_if<!std::is_same< Backend, OtherBackend >::value, void >::type Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::rebuild ( std::shared_ptr< DistributedMatrix< OtherBackend > > A,
const backend_params & bprm = backend_params() )
inline

Definition at line 193 of file DistributedAMG.h.

◆ rebuild() [3/3]

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
void Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::rebuild ( std::shared_ptr< matrix > A,
const backend_params & bprm = backend_params() )
inline

Definition at line 199 of file DistributedAMG.h.

◆ system_matrix()

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
const matrix & Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::system_matrix ( ) const
inline

Definition at line 242 of file DistributedAMG.h.

◆ system_matrix_ptr()

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
std::shared_ptr< matrix > Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::system_matrix_ptr ( ) const
inline

Returns the system matrix from the finest level.

Definition at line 237 of file DistributedAMG.h.

◆ operator<<

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
template<class B, class C, class R, class D, class I>
std::ostream & operator<< ( std::ostream & os,
const DistributedAMG< B, C, R, D, I > & a )
friend

Definition at line 478 of file DistributedAMG.h.

Member Data Documentation

◆ A

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
std::shared_ptr<matrix> Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::A
private

Definition at line 380 of file DistributedAMG.h.

◆ comm

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
mpi_communicator Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::comm
private

Definition at line 379 of file DistributedAMG.h.

◆ levels

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
std::list<DistributedAMGLevel> Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::levels
private

Definition at line 382 of file DistributedAMG.h.

◆ repart

template<class Backend, class Coarsening, class Relaxation, class DirectSolver = DistributedSkylineLUDirectSolver<Backend>, class Repartition = SimpleMatrixPartitioner<Backend>>
Repartition Arcane::Alina::DistributedAMG< Backend, Coarsening, Relaxation, DirectSolver, Repartition >::repart
private

Definition at line 381 of file DistributedAMG.h.


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