Preconditioners
GaussianMarkovRandomFields.AbstractPreconditioner
— TypeAbstractPreconditioner
Abstract type for preconditioners. Should implement the following methods:
- ldiv!(y, P::AbstractPreconditioner, x::AbstractVector)
- ldiv!(P::AbstractPreconditioner, x::AbstractVector)
- \(P::AbstractPreconditioner, x::AbstractVector)
- size(P::AbstractPreconditioner)
GaussianMarkovRandomFields.BlockJacobiPreconditioner
— TypeBlockJacobiPreconditioner
A preconditioner that uses a block Jacobi preconditioner, i.e. P = diag(A₁, A₂, ...), where each Aᵢ is a preconditioner for a block of the matrix.
GaussianMarkovRandomFields.FullCholeskyPreconditioner
— TypeFullCholeskyPreconditioner
A preconditioner that uses a full Cholesky factorization of the matrix, i.e. P = A, so P⁻¹ = A⁻¹. Does not make sense to use on its own, but can be used as a building block for more complex preconditioners.
GaussianMarkovRandomFields.temporal_block_gauss_seidel
— Functiontemporal_block_gauss_seidel(A, block_size)
Construct a temporal block Gauss-Seidel preconditioner for a spatiotemporal matrix with constant spatial mesh size (and thus constant spatial block size).
GaussianMarkovRandomFields.TridiagonalBlockGaussSeidelPreconditioner
— TypeTridiagonalBlockGaussSeidelPreconditioner{T}(D_blocks, L_blocks)
TridiagonalBlockGaussSeidelPreconditioner{T}(D⁻¹_blocks, L_blocks)
Block Gauss-Seidel preconditioner for block tridiagonal matrices. For a matrix given by
\[A = \begin{bmatrix} D₁ & L₁ᵀ & 0 & \cdots & 0 \\ L₁ & D₂ & L₂ᵀ & 0 & \cdots \\ 0 & L₂ & D₃ & L₃ᵀ & \cdots \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & Lₙ₋₁ & Lₙ \end{bmatrix}\]
this preconditioner is given by
\[P = \begin{bmatrix} D₁ & 0 & \cdots & 0 \\ L₁ & D₂ & 0 & \cdots \\ 0 & L₂ & D₃ & \cdots \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & Lₙ₋₁ & Dₙ \end{bmatrix}\]
Solving linear systems with the preconditioner is made efficient through block forward / backward substitution. The diagonal blocks must be inverted. As such, they may be specified
- directly as matrices: in this case they will be transformed into
FullCholeskyPreconditioner
s. - in terms of their invertible preconditioners
GaussianMarkovRandomFields.TridiagSymmetricBlockGaussSeidelPreconditioner
— TypeTridiagSymmetricBlockGaussSeidelPreconditioner{T}(D_blocks, L_blocks)
TridiagSymmetricBlockGaussSeidelPreconditioner{T}(D⁻¹_blocks, L_blocks)
Symmetric Block Gauss-Seidel preconditioner for symmetric block tridiagonal matrices. For a symmetric matrix given by the block decomposition A = L + D + Lᵀ, where L is strictly lower triangular and D is diagonal, this preconditioner is given by P = (L + D) D⁻¹ (L + D)ᵀ ≈ A.
Solving linear systems with the preconditioner is made efficient through block forward / backward substitution. The diagonal blocks must be inverted. As such, they may be specified
- directly as matrices: in this case they will be transformed into
FullCholeskyPreconditioner
s. - in terms of their invertible preconditioners