|
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 37 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 73 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 94 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 151 of file block_stokes_preconditioner.h.
References aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::n_iterations_.
|
mutableprivate |
|
private |
Definition at line 63 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 64 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 65 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 66 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().
|
private |
Definition at line 67 of file block_stokes_preconditioner.h.
Referenced by aspect::internal::InverseVelocityBlock< PreconditionerA, VectorType, ABlockType >::vmult().