Prev Subsection 9.2.5: BoomerAMG Up Section 9.2: Configuring Linear Solvers Subsection 9.2.7: Examples Next
9.2.6 Schur
The Schur solver is a linear solver that takes a 2x2 block structured matrix and solves the linear system by decomposing it in its Schur-complement form. Thus, instead of solving the following system directly,
it first solves for v,
where is the Schur complement of A. Then the Schur solver solves for u,
In order to use this solver, users need to select how they wish to solve the A-block, and how to solve the Schur complement. For the A-block users can choose any of the linear solvers listed above, either direct or iterative. For the Schur complement users can only choose a Krylov-based iterative solver (FGMRES or CG) because FEBio does not form the Schur complement explicitly.
This solver is often more effective as a preconditioner for FGMRES. In this case, the A-block and Schur complement only need to be solved approximately. See the examples section below for some example configurations. This solver requires a block-structured matrix. In order to generate the block structure you need to set the equation_scheme control parameter to 1 in the model input file.
parameter | description | default |
print_level | The amount of information printed (0,1, or 2) | 0 |
schur_block | Take the Schur complement of A (=0) or D (=1) | 0 |
do_jacobi | Do Jacobi preconditioning | 0 |
zero_D_block | Is the D-block zero? | 0 (false) |
A_solver | The solver for the A-block (outside the Schur complement) | user specified |
schur_solver | The iterative solver for solving Schur complement | user specified |
schur_A_solver | The solver for the A block in the Schur complement | (same as A_solver) |