Domain Decomposition Solver. More...

#include <domainDecomp.hh>

Inheritance diagram for concepts::DDSolver< F, G >:
concepts::Operator< F >

Public Types

typedef Cmplxtype< F >::type c_type
 Real type of data type. More...
 
typedef Realtype< F >::type r_type
 Real type of data type. More...
 
typedef F type
 Type of data, e.g. matrix entries. More...
 

Public Member Functions

 DDSolver (DDSpace< G > &spc, Sequence< SparseMatrix< F > * > &A, bool explSchur, SolverFabric< F > &innerSolver, SolverFabric< F > &schurComplSolver, SolverFabric< F > *schurComplPrecond=0)
 Constructor. More...
 
virtual const uint dimX () const
 Returns the size of the image space of the operator (number of rows of the corresponding matrix) More...
 
virtual const uint dimY () const
 Returns the size of the source space of the operator (number of columns of the corresponding matrix) More...
 
virtual void operator() ()
 Application operator without argument. More...
 
virtual void operator() (const Function< c_type > &fncY, Function< c_type > &fncX)
 Application operator for complex function fncY. More...
 
virtual void operator() (const Function< F > &fncY, Function< F > &fncX)
 Application operator. More...
 
virtual void operator() (const Function< r_type > &fncY, Function< F > &fncX)
 Application operator for real function fncY. More...
 
void operator() (const Vector< F > &fncY, Vector< F > &fncX)
 
virtual void show_messages ()
 
virtual ~DDSolver ()
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 

Protected Attributes

uint dimX_
 Dimension of image space and the source space. More...
 
uint dimY_
 

Private Attributes

Sequence< const SparseMatrix< F > * > A_
 Sequence of matrices. More...
 
Sequence< SubMatrixN< SparseMatrix< F > > * > A_BB_
 
Sequence< SubMatrixN< SparseMatrix< F > > * > A_BI_
 
Sequence< SubMatrixN< SparseMatrix< F > > * > A_IB_
 
Sequence< SubMatrixN< SparseMatrix< F > > * > A_II_
 Sequence of matrices of inner-inner, inner-boundary, boundary-inner, and boundary-boundary combination. More...
 
Sequence< Operator< F > * > A_II_inv_
 Sequence of solvers for A_II. More...
 
Set< uint > domains_
 Domains with inner degrees of freedom. More...
 
Set< IndexRangeindicesB_
 Indices of all the boundary between any two domains. More...
 
uint n_
 Size of the reduced system. More...
 
Sequence< Operator< F > * > S_
 Sequence of Schur complements, first is S_0, second S_0+S_1, ... More...
 
Operator< F > * S_0_inv_
 Inverse of Schur complement as preconditioner. More...
 
Operator< F > * S_inv_
 Solver of Schur complement system. More...
 
DDSpace< G > & spc_
 Domain decomposition space. More...
 
DummySpace< G > * spc_B_
 Space of the boundary indices. More...
 

Detailed Description

template<class F, class G = typename Realtype<F>::type>
class concepts::DDSolver< F, G >

Domain Decomposition Solver.

The solvers for the inversion of A_II and the Schur complement can be choosen by handing over the fabrics. The Schur complement system can be preconditioned by the Schur complement of the first domain.

Author
Kersten Schmidt, 2005

Definition at line 33 of file domainDecomp.hh.

Member Typedef Documentation

◆ c_type

template<class F >
typedef Cmplxtype<F>::type concepts::Operator< F >::c_type
inherited

Real type of data type.

Definition at line 49 of file compositions.hh.

◆ r_type

template<class F >
typedef Realtype<F>::type concepts::Operator< F >::r_type
inherited

Real type of data type.

Definition at line 47 of file compositions.hh.

◆ type

template<class F >
typedef F concepts::Operator< F >::type
inherited

Type of data, e.g. matrix entries.

Definition at line 45 of file compositions.hh.

Constructor & Destructor Documentation

◆ DDSolver()

template<class F , class G = typename Realtype<F>::type>
concepts::DDSolver< F, G >::DDSolver ( DDSpace< G > &  spc,
Sequence< SparseMatrix< F > * > &  A,
bool  explSchur,
SolverFabric< F > &  innerSolver,
SolverFabric< F > &  schurComplSolver,
SolverFabric< F > *  schurComplPrecond = 0 
)

Constructor.

Parameters
spcdomain decomposition space
Asequence of matrices, for each domain
explSchurtrue: Schur complement matrices are built explicitly (for direct solvers needed) false: Schur complement taken as operator (enough for iterative solvers)
innerSolversolver for the stiffness matrices for degrees of freedom inside the domains
schurComplSolversolver for the Schur complement system
schurComplPrecondpreconditioner for the Schur complement system

◆ ~DDSolver()

template<class F , class G = typename Realtype<F>::type>
virtual concepts::DDSolver< F, G >::~DDSolver ( )
virtual

Member Function Documentation

◆ dimX()

template<class F >
virtual const uint concepts::Operator< F >::dimX ( ) const
inlinevirtualinherited

Returns the size of the image space of the operator (number of rows of the corresponding matrix)

Definition at line 93 of file compositions.hh.

◆ dimY()

template<class F >
virtual const uint concepts::Operator< F >::dimY ( ) const
inlinevirtualinherited

Returns the size of the source space of the operator (number of columns of the corresponding matrix)

Definition at line 98 of file compositions.hh.

◆ info()

template<class F , class G = typename Realtype<F>::type>
virtual std::ostream& concepts::DDSolver< F, G >::info ( std::ostream &  os) const
protectedvirtual

Reimplemented from concepts::Operator< F >.

◆ operator()() [1/5]

template<class F >
virtual void concepts::Operator< F >::operator() ( )
virtualinherited

◆ operator()() [2/5]

template<class F >
virtual void concepts::Operator< F >::operator() ( const Function< c_type > &  fncY,
Function< c_type > &  fncX 
)
virtualinherited

Application operator for complex function fncY.

Computes fncX = A(fncY) where A is this operator. fncX becomes complex.

In derived classes its enough to implement the operator() for complex Operator's. If a real counterpart is not implemented, the function fncY is splitted into real and imaginary part and the application operator for real functions is called for each. Then the result is combined.

If in a derived class the operator() for complex Operator's is not implemented, a exception is thrown from here.

Reimplemented in concepts::DiagonalSolver< F >, concepts::LiCo< F >, concepts::LiCoI< F >, concepts::Multiple< F >, concepts::VecOperator< F >, concepts::VecOperator< T >, concepts::VecOperator< F::d_type >, concepts::VecOperator< Cmplx >, and concepts::VecOperator< Real >.

◆ operator()() [3/5]

template<class F , class G = typename Realtype<F>::type>
virtual void concepts::DDSolver< F, G >::operator() ( const Function< F > &  fncY,
Function< F > &  fncX 
)
virtual

Application operator.

Computes fncX = A(fncY) where A is this operator.

◆ operator()() [4/5]

template<class F >
virtual void concepts::Operator< F >::operator() ( const Function< r_type > &  fncY,
Function< F > &  fncX 
)
virtualinherited

Application operator for real function fncY.

Computes fncX = A(fncY) where A is this operator.

fncX becomes the type of the operator, for real data it becomes real, for complex data it becomes complex.

In derived classes its enough to implement the operator() for real Operator's. If a complex counterpart is not implemented, the function fncY is transformed to a complex function and then the application operator for complex functions is called.

If in a derived class the operator() for real Operator's is not implemented, a exception is thrown from here.

Reimplemented in concepts::VecOperator< T >, concepts::VecOperator< Real >, concepts::LiCo< F >, concepts::LiCoI< F >, concepts::Multiple< F >, concepts::VecOperator< F >, concepts::VecOperator< F::d_type >, and concepts::VecOperator< Cmplx >.

◆ operator()() [5/5]

template<class F , class G = typename Realtype<F>::type>
void concepts::DDSolver< F, G >::operator() ( const Vector< F > &  fncY,
Vector< F > &  fncX 
)

◆ show_messages()

template<class F >
virtual void concepts::Operator< F >::show_messages ( )
inlinevirtualinherited

Reimplemented in concepts::Newton< F >, concepts::MumpsOverlap< F >, and concepts::Mumps< F >.

Definition at line 100 of file compositions.hh.

Member Data Documentation

◆ A_

template<class F , class G = typename Realtype<F>::type>
Sequence<const SparseMatrix<F>*> concepts::DDSolver< F, G >::A_
private

Sequence of matrices.

Definition at line 69 of file domainDecomp.hh.

◆ A_BB_

template<class F , class G = typename Realtype<F>::type>
Sequence<SubMatrixN<SparseMatrix<F> >*> concepts::DDSolver< F, G >::A_BB_
private

Definition at line 73 of file domainDecomp.hh.

◆ A_BI_

template<class F , class G = typename Realtype<F>::type>
Sequence<SubMatrixN<SparseMatrix<F> >*> concepts::DDSolver< F, G >::A_BI_
private

Definition at line 73 of file domainDecomp.hh.

◆ A_IB_

template<class F , class G = typename Realtype<F>::type>
Sequence<SubMatrixN<SparseMatrix<F> >*> concepts::DDSolver< F, G >::A_IB_
private

Definition at line 73 of file domainDecomp.hh.

◆ A_II_

template<class F , class G = typename Realtype<F>::type>
Sequence<SubMatrixN<SparseMatrix<F> >*> concepts::DDSolver< F, G >::A_II_
private

Sequence of matrices of inner-inner, inner-boundary, boundary-inner, and boundary-boundary combination.

Definition at line 73 of file domainDecomp.hh.

◆ A_II_inv_

template<class F , class G = typename Realtype<F>::type>
Sequence<Operator<F>*> concepts::DDSolver< F, G >::A_II_inv_
private

Sequence of solvers for A_II.

Definition at line 75 of file domainDecomp.hh.

◆ dimX_

template<class F >
uint concepts::Operator< F >::dimX_
protectedinherited

Dimension of image space and the source space.

Definition at line 104 of file compositions.hh.

◆ dimY_

template<class F >
uint concepts::Operator< F >::dimY_
protectedinherited

Definition at line 104 of file compositions.hh.

◆ domains_

template<class F , class G = typename Realtype<F>::type>
Set<uint> concepts::DDSolver< F, G >::domains_
private

Domains with inner degrees of freedom.

Definition at line 65 of file domainDecomp.hh.

◆ indicesB_

template<class F , class G = typename Realtype<F>::type>
Set<IndexRange> concepts::DDSolver< F, G >::indicesB_
private

Indices of all the boundary between any two domains.

Definition at line 61 of file domainDecomp.hh.

◆ n_

template<class F , class G = typename Realtype<F>::type>
uint concepts::DDSolver< F, G >::n_
private

Size of the reduced system.

Definition at line 63 of file domainDecomp.hh.

◆ S_

template<class F , class G = typename Realtype<F>::type>
Sequence<Operator<F>*> concepts::DDSolver< F, G >::S_
private

Sequence of Schur complements, first is S_0, second S_0+S_1, ...

Definition at line 77 of file domainDecomp.hh.

◆ S_0_inv_

template<class F , class G = typename Realtype<F>::type>
Operator<F>* concepts::DDSolver< F, G >::S_0_inv_
private

Inverse of Schur complement as preconditioner.

Definition at line 79 of file domainDecomp.hh.

◆ S_inv_

template<class F , class G = typename Realtype<F>::type>
Operator<F>* concepts::DDSolver< F, G >::S_inv_
private

Solver of Schur complement system.

Definition at line 81 of file domainDecomp.hh.

◆ spc_

template<class F , class G = typename Realtype<F>::type>
DDSpace<G>& concepts::DDSolver< F, G >::spc_
private

Domain decomposition space.

Definition at line 59 of file domainDecomp.hh.

◆ spc_B_

template<class F , class G = typename Realtype<F>::type>
DummySpace<G>* concepts::DDSolver< F, G >::spc_B_
private

Space of the boundary indices.

Definition at line 67 of file domainDecomp.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich