MatBackwardSolve#

Solves Ux=bU x = b, given a factored matrix, A=LUA = LU. D(1/2)Ux=bD^(1/2) U x = b, given a factored symmetric matrix, A=UTDUA = U^T*D*U,

Synopsis#

#include "petscmat.h" 
PetscErrorCode MatBackwardSolve(Mat mat, Vec b, Vec x)

Neighbor-wise Collective

Input Parameters#

  • mat - the factored matrix

  • b - the right-hand-side vector

Output Parameter#

  • x - the result vector

Notes#

MatSolve() should be used for most applications, as it performs a forward solve followed by a backward solve.

The vectors b and x cannot be the same. I.e., one cannot call MatBackwardSolve(A,x,x).

For matrix in MATSEQBAIJ format with block size larger than 1, the diagonal blocks are not implemented as D=D(1/2)D(1/2)D = D^(1/2) * D^(1/2) yet. MatForwardSolve() solves UTDy=bU^T*D y = b, and MatBackwardSolve() solves Ux=yU x = y. Thus they do not provide a symmetric preconditioner.

See Also#

Matrices, Mat, MatForwardSolve(), MatGetFactor(), MatSolve()

Level#

developer

Location#

src/mat/interface/matrix.c

Implementations#

MatBackwardSolve_MKL_CPARDISO() in src/mat/impls/aij/mpi/mkl_cpardiso/mkl_cpardiso.c
MatBackwardSolve_MKL_PARDISO() in src/mat/impls/aij/seq/mkl_pardiso/mkl_pardiso.c


Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages