|
Smith
0.1
Smith is an implicit thermal structural mechanics simulation code.
|
Simple 2x2 block Schur complement preconditioner for block systems. More...
#include <block_preconditioner.hpp>

Public Member Functions | |
| BlockSchurPreconditioner (mfem::Array< int > &offsets, std::vector< std::unique_ptr< mfem::Solver >> solvers, BlockSchurType type=BlockSchurType::Diagonal, SchurApproxType approxType=SchurApproxType::DiagInv, std::vector< BlockOverride > overrides={}) | |
| Construct a new 2x2 block Schur complement preconditioner. More... | |
| virtual void | Mult (const mfem::Vector &in, mfem::Vector &out) const |
| The action of the precondition on the block vector (b_1, b_2) More... | |
| virtual void | SetOperator (const mfem::Operator &jacobian) |
| Set the preconditioner to use the supplied linearized block Jacobian. More... | |
Simple 2x2 block Schur complement preconditioner for block systems.
Uses two solvers, one for $ A_{11} $ and one for an approximate Schur complement $ S $. Call SetOperator() with an mfem::BlockOperator, then use Mult() to apply the selected Schur preconditioner type.
Definition at line 200 of file block_preconditioner.hpp.
| smith::BlockSchurPreconditioner::BlockSchurPreconditioner | ( | mfem::Array< int > & | offsets, |
| std::vector< std::unique_ptr< mfem::Solver >> | solvers, | ||
| BlockSchurType | type = BlockSchurType::Diagonal, |
||
| SchurApproxType | approxType = SchurApproxType::DiagInv, |
||
| std::vector< BlockOverride > | overrides = {} |
||
| ) |
Construct a new 2x2 block Schur complement preconditioner.
| offsets | Offsets describing the 2-block layout. |
| solvers | Two solvers, for $ A_{11} $ and the Schur complement approximation. |
| type | Preconditioner variant (diagonal, lower, upper, or full). |
| approxType | Schur complement approximation strategy for the (1,1) block. |
| overrides | Optional list of (block index, operator) pairs used in place of the corresponding Jacobian diagonal block. For Schur systems, index 0 overrides $A_{11}$ and index 1 provides a custom Schur operator when approxType is SchurApproxType::Custom. |
Definition at line 233 of file block_preconditioner.cpp.
|
virtual |
The action of the precondition on the block vector (b_1, b_2)
| in | The block input vector (b_1, b_2) |
| out | The block output vector P^-1(b_1, b_2) |
Definition at line 304 of file block_preconditioner.cpp.
|
virtual |
Set the preconditioner to use the supplied linearized block Jacobian.
The Schur complement approximation is given by S_approx = A22 - A21 * diag(A11)^{-1} * A12
| jacobian | The supplied linearized Jacobian. Note that it is always a block operator |
Definition at line 393 of file block_preconditioner.cpp.