ASPECT
Public Member Functions | Private Attributes | List of all members
aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType > Class Template Reference
Inheritance diagram for aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >:
Inheritance graph
[legend]

Public Member Functions

 BlockSchurGMGPreconditioner (const StokesMatrixType &Stokes_matrix, const ABlockMatrixType &A_block, const BTBlockOperatorType &BT_block, const SchurComplementMatrixType &Schur_complement_block, const ABlockPreconditionerType &A_block_preconditioner, const SchurComplementPreconditionerType &Schur_complement_preconditioner, const bool do_solve_A, const bool do_solve_Schur_complement, const bool A_block_is_symmetric, const double A_block_tolerance, const double Schur_complement_tolerance)
 Constructor. More...
 
void vmult (::LinearAlgebra::distributed::BlockVector< double > &dst, const ::LinearAlgebra::distributed::BlockVector< double > &src) const
 
unsigned int n_iterations_A_block () const
 
unsigned int n_iterations_Schur_complement () const
 

Private Attributes

const StokesMatrixType & stokes_matrix
 
const ABlockMatrixType & A_block
 
const BTBlockOperatorType & BT_block
 
const SchurComplementMatrixType & Schur_complement_block
 
const ABlockPreconditionerType & A_block_preconditioner
 
const SchurComplementPreconditionerType & Schur_complement_preconditioner
 
const bool do_solve_A
 
const bool do_solve_Schur_complement
 
const bool A_block_is_symmetric
 
unsigned int n_iterations_A_
 
unsigned int n_iterations_Schur_complement_
 
const double A_block_tolerance
 
const double Schur_complement_tolerance
 
mutable ::LinearAlgebra::distributed::BlockVector< double > utmp
 

Detailed Description

template<class StokesMatrixType, class ABlockMatrixType, class BTBlockOperatorType, class SchurComplementMatrixType, class ABlockPreconditionerType, class SchurComplementPreconditionerType>
class aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >

Implement the block Schur preconditioner for the Stokes system.

Definition at line 116 of file stokes_matrix_free.h.

Constructor & Destructor Documentation

§ BlockSchurGMGPreconditioner()

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::BlockSchurGMGPreconditioner ( const StokesMatrixType &  Stokes_matrix,
const ABlockMatrixType &  A_block,
const BTBlockOperatorType &  BT_block,
const SchurComplementMatrixType &  Schur_complement_block,
const ABlockPreconditionerType &  A_block_preconditioner,
const SchurComplementPreconditionerType &  Schur_complement_preconditioner,
const bool  do_solve_A,
const bool  do_solve_Schur_complement,
const bool  A_block_is_symmetric,
const double  A_block_tolerance,
const double  Schur_complement_tolerance 
)

Constructor.

Parameters
Stokes_matrixThe entire Stokes matrix
A_blockThe A block of the Stokes matrix
BT_blockThe B^T block of the Stokes matrix
Schur_complement_blockThe matrix which describes the Schur complement approximation
A_block_preconditionerPreconditioner object for the matrix A.
Schur_complement_preconditionerPreconditioner object for the Schur complement.
do_solve_AA flag indicating whether we should actually solve with the matrix \(A_block\), or only apply one preconditioner step with it.
do_solve_Schur_complementA flag indicating whether we should actually solve with the matrix \(Schur_complement_block\), or only apply one preconditioner step with it.
A_block_is_symmetricA flag indicating whether the A block is symmetric.
A_block_toleranceThe tolerance for the CG solver which computes the inverse of the A block.
Schur_complement_toleranceThe tolerance for the CG solver which computes the inverse of the Schur complement block (Schur complement approximation matrix).

Definition at line 189 of file stokes_matrix_free.h.

References aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_block().

Member Function Documentation

§ vmult()

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
void aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::vmult ( ::LinearAlgebra::distributed::BlockVector< double > &  dst,
const ::LinearAlgebra::distributed::BlockVector< double > &  src 
) const

Matrix vector product with this preconditioner object.

Definition at line 242 of file stokes_matrix_free.h.

References aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_is_symmetric, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_preconditioner, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_tolerance, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::BT_block, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::do_solve_A, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::do_solve_Schur_complement, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement_, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_block, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_preconditioner, aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_tolerance, aspect::Utilities::throw_linear_solver_failure_exception(), and aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::utmp.

Referenced by aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement().

§ n_iterations_A_block()

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_block ( ) const

§ n_iterations_Schur_complement()

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement ( ) const

Member Data Documentation

§ stokes_matrix

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const StokesMatrixType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::stokes_matrix
private

References to the various matrix object this preconditioner works on.

Definition at line 164 of file stokes_matrix_free.h.

§ A_block

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const ABlockMatrixType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block
private

§ BT_block

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const BTBlockOperatorType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::BT_block
private

§ Schur_complement_block

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const SchurComplementMatrixType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_block
private

§ A_block_preconditioner

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const ABlockPreconditionerType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_preconditioner
private

§ Schur_complement_preconditioner

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const SchurComplementPreconditionerType& aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_preconditioner
private

§ do_solve_A

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const bool aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::do_solve_A
private

Whether to actually invert the \(\tilde M\) or \(\tilde A\) of the preconditioner matrix or to just apply a single preconditioner step with it.

Definition at line 175 of file stokes_matrix_free.h.

Referenced by aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::vmult().

§ do_solve_Schur_complement

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const bool aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::do_solve_Schur_complement
private

§ A_block_is_symmetric

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const bool aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_is_symmetric
private

§ n_iterations_A_

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_
mutableprivate

§ n_iterations_Schur_complement_

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement_
mutableprivate

§ A_block_tolerance

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const double aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::A_block_tolerance
private

§ Schur_complement_tolerance

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
const double aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::Schur_complement_tolerance
private

§ utmp

template<class StokesMatrixType , class ABlockMatrixType , class BTBlockOperatorType , class SchurComplementMatrixType , class ABlockPreconditionerType , class SchurComplementPreconditionerType >
mutable ::LinearAlgebra::distributed::BlockVector<double> aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::utmp
private

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