|
ASPECT
|
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 |
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 44 of file block_stokes_preconditioner.h.
| 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.
| matrix | The matrix that contains A (from the system matrix) |
| preconditioner | The preconditioner to be used |
| do_solve_A | A flag indicating whether we should actually solve with the matrix \(A\), or only apply one preconditioner step with it. |
| A_block_is_symmetric | A flag indicating whether the matrix \(A\) is symmetric. |
| solver_tolerance | The tolerance for the CG solver which computes the inverse of the A block. |
Definition at line 80 of file block_stokes_preconditioner.h.
| void aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult | ( | VectorType & | dst, |
| const VectorType & | src | ||
| ) | const |
Implements the vmult for InverseVelocityBlock. This applies the action of A^{-1} by either performing a solve with A or using a preconditioner sweep.
Definition at line 101 of file block_stokes_preconditioner.h.
References aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::A_block_is_symmetric, aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::do_solve_A, aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::matrix, aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations_, aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::preconditioner, aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::solver_tolerance, and aspect::Utilities::throw_linear_solver_failure_exception().
| unsigned int aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations | ( | ) | const |
Definition at line 158 of file block_stokes_preconditioner.h.
References aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations_.
|
mutableprivate |
|
private |
Definition at line 70 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 71 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 72 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 73 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 74 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().