Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver > Class Template Reference

Distributed solver based on subdomain deflation. More...

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

Collaboration diagram for Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >:

Classes

struct  params

Public Types

typedef LocalPrecond::backend_type backend_type
typedef backend_type::params backend_params
typedef backend_type::value_type value_type
typedef math::scalar_of< value_type >::type scalar_type
typedef backend_type::matrix bmatrix
using col_type = backend_type::col_type
using ptr_type = backend_type::ptr_type
typedef backend_type::vector vector
typedef DistributedMatrix< backend_type > matrix

Public Member Functions

template<class Matrix>
 DistributedSubDomainDeflation (mpi_communicator comm, const Matrix &Astrip, const params &prm=params(), const backend_params &bprm=backend_params())
 DistributedSubDomainDeflation (mpi_communicator comm, std::shared_ptr< matrix > A, const params &prm=params(), const backend_params &bprm=backend_params())
void init (const params &prm=params(), const backend_params &bprm=backend_params())
template<class Vec1, class Vec2>
void apply (const Vec1 &rhs, Vec2 &&x) const
std::shared_ptr< matrix > system_matrix_ptr () const
const matrix & system_matrix () const
template<class Matrix, class Vec1, class Vec2>
std::tuple< size_t, value_type > operator() (const Matrix &A, const Vec1 &rhs, Vec2 &&x) const
template<class Vec1, class Vec2>
std::tuple< size_t, value_type > operator() (const Vec1 &rhs, Vec2 &&x) const
size_t size () const
template<class Vector>
void project (Vector &x) const

Private Member Functions

void coarse_solve (std::vector< value_type > &f, std::vector< value_type > &x) const
template<class Vec1, class Vec2>
void postprocess (const Vec1 &rhs, Vec2 &x) const

Private Attributes

mpi_communicator comm
ptrdiff_t nrows
ptrdiff_t ndv
ptrdiff_t nz
std::shared_ptr< matrix > A
std::shared_ptr< matrix > AZ
std::shared_ptr< LocalPrecond > P
std::vector< value_type > df
std::vector< value_type > dx
std::vector< ptrdiff_t > dv_start
std::vector< std::shared_ptr< vector > > Z
std::shared_ptr< DirectSolver > E
std::shared_ptr< vector > q
std::shared_ptr< vector > dd
IterativeSolver S

Static Private Attributes

static const int tag_exc_vals = 2011
static const int tag_exc_dmat = 3011
static const int tag_exc_dvec = 4011
static const int tag_exc_lnnz = 5011

Detailed Description

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
class Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >

Distributed solver based on subdomain deflation.

See also
[Frank2001]

Definition at line 129 of file DistributedSubDomainDeflation.h.

Member Typedef Documentation

◆ backend_params

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef backend_type::params Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::backend_params

Definition at line 134 of file DistributedSubDomainDeflation.h.

◆ backend_type

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef LocalPrecond::backend_type Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::backend_type

Definition at line 133 of file DistributedSubDomainDeflation.h.

◆ bmatrix

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef backend_type::matrix Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::bmatrix

Definition at line 177 of file DistributedSubDomainDeflation.h.

◆ col_type

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
using Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::col_type = backend_type::col_type

Definition at line 178 of file DistributedSubDomainDeflation.h.

◆ matrix

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef DistributedMatrix<backend_type> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::matrix

Definition at line 181 of file DistributedSubDomainDeflation.h.

◆ ptr_type

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
using Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::ptr_type = backend_type::ptr_type

Definition at line 179 of file DistributedSubDomainDeflation.h.

◆ scalar_type

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef math::scalar_of<value_type>::type Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::scalar_type

Definition at line 176 of file DistributedSubDomainDeflation.h.

◆ value_type

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef backend_type::value_type Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::value_type

Definition at line 175 of file DistributedSubDomainDeflation.h.

◆ vector

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
typedef backend_type::vector Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::vector

Definition at line 180 of file DistributedSubDomainDeflation.h.

Constructor & Destructor Documentation

◆ DistributedSubDomainDeflation() [1/2]

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Matrix>
Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::DistributedSubDomainDeflation ( mpi_communicator comm,
const Matrix & Astrip,
const params & prm = params(),
const backend_params & bprm = backend_params() )
inline

Definition at line 184 of file DistributedSubDomainDeflation.h.

◆ DistributedSubDomainDeflation() [2/2]

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::DistributedSubDomainDeflation ( mpi_communicator comm,
std::shared_ptr< matrix > A,
const params & prm = params(),
const backend_params & bprm = backend_params() )
inline

Definition at line 200 of file DistributedSubDomainDeflation.h.

Member Function Documentation

◆ apply()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::apply ( const Vec1 & rhs,
Vec2 && x ) const
inline

Definition at line 464 of file DistributedSubDomainDeflation.h.

◆ coarse_solve()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
void Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::coarse_solve ( std::vector< value_type > & f,
std::vector< value_type > & x ) const
inlineprivate

Definition at line 552 of file DistributedSubDomainDeflation.h.

◆ init()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
void Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::init ( const params & prm = params(),
const backend_params & bprm = backend_params() )
inline

Definition at line 216 of file DistributedSubDomainDeflation.h.

◆ operator()() [1/2]

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Matrix, class Vec1, class Vec2>
std::tuple< size_t, value_type > Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::operator() ( const Matrix & A,
const Vec1 & rhs,
Vec2 && x ) const
inline

Definition at line 483 of file DistributedSubDomainDeflation.h.

◆ operator()() [2/2]

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Vec1, class Vec2>
std::tuple< size_t, value_type > Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::operator() ( const Vec1 & rhs,
Vec2 && x ) const
inline

Definition at line 493 of file DistributedSubDomainDeflation.h.

◆ postprocess()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Vec1, class Vec2>
void Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::postprocess ( const Vec1 & rhs,
Vec2 & x ) const
inlineprivate

Definition at line 560 of file DistributedSubDomainDeflation.h.

◆ project()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
template<class Vector>
void Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::project ( Vector & x) const
inline

Definition at line 506 of file DistributedSubDomainDeflation.h.

◆ size()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
size_t Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::size ( ) const
inline

Definition at line 500 of file DistributedSubDomainDeflation.h.

◆ system_matrix()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
const matrix & Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::system_matrix ( ) const
inline

Definition at line 477 of file DistributedSubDomainDeflation.h.

◆ system_matrix_ptr()

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr< matrix > Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::system_matrix_ptr ( ) const
inline

Definition at line 472 of file DistributedSubDomainDeflation.h.

Member Data Documentation

◆ A

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<matrix> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::A
private

Definition at line 537 of file DistributedSubDomainDeflation.h.

◆ AZ

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<matrix> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::AZ
private

Definition at line 537 of file DistributedSubDomainDeflation.h.

◆ comm

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
mpi_communicator Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::comm
private

Definition at line 534 of file DistributedSubDomainDeflation.h.

◆ dd

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<vector> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::dd
private

Definition at line 548 of file DistributedSubDomainDeflation.h.

◆ df

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::vector<value_type> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::df
mutableprivate

Definition at line 540 of file DistributedSubDomainDeflation.h.

◆ dv_start

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::vector<ptrdiff_t> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::dv_start
private

Definition at line 541 of file DistributedSubDomainDeflation.h.

◆ dx

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::vector<value_type> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::dx
private

Definition at line 540 of file DistributedSubDomainDeflation.h.

◆ E

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<DirectSolver> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::E
private

Definition at line 545 of file DistributedSubDomainDeflation.h.

◆ ndv

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
ptrdiff_t Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::ndv
private

Definition at line 535 of file DistributedSubDomainDeflation.h.

◆ nrows

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
ptrdiff_t Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::nrows
private

Definition at line 535 of file DistributedSubDomainDeflation.h.

◆ nz

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
ptrdiff_t Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::nz
private

Definition at line 535 of file DistributedSubDomainDeflation.h.

◆ P

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<LocalPrecond> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::P
private

Definition at line 538 of file DistributedSubDomainDeflation.h.

◆ q

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::shared_ptr<vector> Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::q
private

Definition at line 547 of file DistributedSubDomainDeflation.h.

◆ S

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
IterativeSolver Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::S
private

Definition at line 550 of file DistributedSubDomainDeflation.h.

◆ tag_exc_dmat

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
const int Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::tag_exc_dmat = 3011
staticprivate

Definition at line 530 of file DistributedSubDomainDeflation.h.

◆ tag_exc_dvec

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
const int Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::tag_exc_dvec = 4011
staticprivate

Definition at line 531 of file DistributedSubDomainDeflation.h.

◆ tag_exc_lnnz

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
const int Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::tag_exc_lnnz = 5011
staticprivate

Definition at line 532 of file DistributedSubDomainDeflation.h.

◆ tag_exc_vals

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
const int Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::tag_exc_vals = 2011
staticprivate

Definition at line 529 of file DistributedSubDomainDeflation.h.

◆ Z

template<class LocalPrecond, class IterativeSolver, class DirectSolver = DistributedSkylineLUDirectSolver<typename LocalPrecond::backend_type>>
std::vector<std::shared_ptr<vector> > Arcane::Alina::DistributedSubDomainDeflation< LocalPrecond, IterativeSolver, DirectSolver >::Z
private

Definition at line 543 of file DistributedSubDomainDeflation.h.


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