Skip to content

Preconditioners

GaussianMarkovRandomFields.AbstractPreconditioner Type
julia
AbstractPreconditioner

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)

source
GaussianMarkovRandomFields.BlockJacobiPreconditioner Type
julia
BlockJacobiPreconditioner

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.

source
GaussianMarkovRandomFields.FullCholeskyPreconditioner Type
julia
FullCholeskyPreconditioner

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.

source
GaussianMarkovRandomFields.temporal_block_gauss_seidel Function
julia
temporal_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).

source
GaussianMarkovRandomFields.TridiagonalBlockGaussSeidelPreconditioner Type
julia
TridiagonalBlockGaussSeidelPreconditioner{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=[DL00LDL00LDL00LL]

this preconditioner is given by

P=[D00LD00LD00LD]

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

  1. directly as matrices: in this case they will be transformed into FullCholeskyPreconditioners.

  2. in terms of their invertible preconditioners

source
GaussianMarkovRandomFields.TridiagSymmetricBlockGaussSeidelPreconditioner Type
julia
TridiagSymmetricBlockGaussSeidelPreconditioner{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

  1. directly as matrices: in this case they will be transformed into FullCholeskyPreconditioners.

  2. in terms of their invertible preconditioners

source