RadCluster
Graph-based cluster dynamics for irradiated materials
Loading...
Searching...
No Matches
Woodbury preconditioner

For the GMRES linear solver the Jacobian has the structure

\[ J = T + U V^T , \]

where \(T\) is banded, with half-bandwidth \(\max(2\,i_{mobile}, 2\,v_{mobile}) + 1\), and \(U V^T\) is a correction of rank \(r = i_{mobile} + v_{mobile}\) that comes from the coupling of the mobile species.

The Woodbury preconditioner exploits this structure exactly. It uses the LAPACK banded factorization (dgbtrf and dgbtrs) for \(T\), and a dense factorization (dgetrf and dgetrs) of the \(r \times r\) Schur complement.

Options

prec_type Name Description
0 Jacobi diagonal scaling
1 Woodbury bordered-banded Sherman-Morrison-Woodbury preconditioner

The Woodbury preconditioner is the default for the full_system mode with GMRES. For the active_window mode the active system is small, and Jacobi with GMRES converges faster than the set-up cost of the Woodbury preconditioner can be recovered.

The parameters prec_bw and prec_rank set the bandwidth and the rank. They are selected automatically by default.

The preconditioner is implemented in radcluster_code/cpp_utils/core/rhs_dispatch.cpp. It probes the right-hand side through the function pointer UserData::rhs_fn, and it is therefore independent of the material model. Its derivation is in the folder docs/Formulation/reaction_admissibility_graph/supplement_S1 of the repository.

Note that the preconditioner needs LAPACK. Without LAPACK it is compiled out, and the solver uses the Jacobi preconditioner.

See also
Solver modes and physics options, Building the solver