![]() |
ASPECT
|
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 |
Implement the block Schur preconditioner for the Stokes system.
Definition at line 116 of file stokes_matrix_free.h.
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.
Stokes_matrix | The entire Stokes matrix |
A_block | The A block of the Stokes matrix |
BT_block | The B^T block of the Stokes matrix |
Schur_complement_block | The matrix which describes the Schur complement approximation |
A_block_preconditioner | Preconditioner object for the matrix A. |
Schur_complement_preconditioner | Preconditioner object for the Schur complement. |
do_solve_A | A flag indicating whether we should actually solve with the matrix \(A_block\), or only apply one preconditioner step with it. |
do_solve_Schur_complement | A flag indicating whether we should actually solve with the matrix \(Schur_complement_block\), or only apply one preconditioner step with it. |
A_block_is_symmetric | A flag indicating whether the A block is symmetric. |
A_block_tolerance | The tolerance for the CG solver which computes the inverse of the A block. |
Schur_complement_tolerance | The 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.
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.
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_block | ( | ) | const |
Definition at line 222 of file stokes_matrix_free.h.
References aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_, and aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement().
unsigned int aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement | ( | ) | const |
Definition at line 232 of file stokes_matrix_free.h.
References aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement_, and aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::vmult().
|
private |
References to the various matrix object this preconditioner works on.
Definition at line 164 of file stokes_matrix_free.h.
|
private |
|
private |
|
private |
|
private |
|
private |
|
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.
|
private |
|
private |
|
mutableprivate |
Definition at line 178 of file stokes_matrix_free.h.
Referenced by aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_A_block(), and aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::vmult().
|
mutableprivate |
Definition at line 179 of file stokes_matrix_free.h.
Referenced by aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::n_iterations_Schur_complement(), and aspect::internal::BlockSchurGMGPreconditioner< StokesMatrixType, ABlockMatrixType, BTBlockOperatorType, SchurComplementMatrixType, ABlockPreconditionerType, SchurComplementPreconditionerType >::vmult().
|
private |
|
private |
|
private |