ASPECT
Public Member Functions | Private Attributes | List of all members
aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType > Class Template Reference

Public Member Functions

 InverseVelocityBlock (const ABlockType &matrix, const PreconditionerA &preconditioner, const bool do_solve_A, const bool A_block_is_symmetric, const double solver_tolerance)
 
void vmult (VectorType &dst, const VectorType &src) const
 
unsigned int n_iterations () const
 

Private Attributes

unsigned int n_iterations_
 
const ABlockType & matrix
 
const PreconditionerA & preconditioner
 
const bool do_solve_A
 
const bool A_block_is_symmetric
 
const double solver_tolerance
 

Detailed Description

template<class PreconditionerA, class VectorType, class ABlockType>
class aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >

This class is used in the implementation of the right preconditioner as an approximation for the inverse of the velocity (A) block. This operator can either just apply the preconditioner (AMG) or perform an inner CG / BiCGStab solve with the same preconditioner.

Definition at line 37 of file block_stokes_preconditioner.h.

Constructor & Destructor Documentation

§ InverseVelocityBlock()

template<class PreconditionerA , class VectorType , class ABlockType >
aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::InverseVelocityBlock ( const ABlockType &  matrix,
const PreconditionerA &  preconditioner,
const bool  do_solve_A,
const bool  A_block_is_symmetric,
const double  solver_tolerance 
)

Constructor.

Parameters
matrixThe matrix that contains A (from the system matrix)
preconditionerThe preconditioner to be used
do_solve_AA flag indicating whether we should actually solve with the matrix \(A\), or only apply one preconditioner step with it.
A_block_is_symmetricA flag indicating whether the matrix \(A\) is symmetric.
solver_toleranceThe tolerance for the CG solver which computes the inverse of the A block.

Definition at line 73 of file block_stokes_preconditioner.h.

Member Function Documentation

§ vmult()

template<class PreconditionerA , class VectorType , class ABlockType >
void aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult ( VectorType &  dst,
const VectorType &  src 
) const

§ n_iterations()

template<class PreconditionerA , class VectorType , class ABlockType >
unsigned int aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations ( ) const

Member Data Documentation

§ n_iterations_

template<class PreconditionerA , class VectorType , class ABlockType >
unsigned int aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations_
mutableprivate

§ matrix

template<class PreconditionerA , class VectorType , class ABlockType >
const ABlockType& aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::matrix
private

§ preconditioner

template<class PreconditionerA , class VectorType , class ABlockType >
const PreconditionerA& aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::preconditioner
private

§ do_solve_A

template<class PreconditionerA , class VectorType , class ABlockType >
const bool aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::do_solve_A
private

§ A_block_is_symmetric

template<class PreconditionerA , class VectorType , class ABlockType >
const bool aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::A_block_is_symmetric
private

§ solver_tolerance

template<class PreconditionerA , class VectorType , class ABlockType >
const double aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::solver_tolerance
private

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