MatBackwardSolve

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

Synopsis

#include "petscmat.h" 
PetscErrorCode MatBackwardSolve(Mat mat,Vec b,Vec x)
Neighbor-wise Collective on Mat

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 seqsbaij format with block size larger than 1, the diagonal blocks are not implemented as D = D^(1/2) * D^(1/2) yet. MatForwardSolve() solves U^T*D y = b, and MatBackwardSolve() solves U x = y. Thus they do not provide a symmetric preconditioner.

Most users should employ the simplified KSP interface for linear solvers instead of working directly with matrix algebra routines such as this. See, e.g., KSPCreate().

Level: developer

See Also

MatSolve(), MatForwardSolve()

Location:matrix.c