petsc-master 2019-05-22
Report Typos and Errors

# 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 and Vec

### 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().

MatSolve(), MatForwardSolve()

developer

### Location

src/mat/interface/matrix.c

### Implementations

MatBackwardSolve_SeqBAIJ_1_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat1.c
MatBackwardSolve_SeqBAIJ_2_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat2.c
MatBackwardSolve_SeqBAIJ_3_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat3.c
MatBackwardSolve_SeqSBAIJ_N_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_N_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_N_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_7_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_7_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_6_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_6_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_5_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_5_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_4_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_4_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_3_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_3_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_2_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_2_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_1 in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_1_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_1_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatBackwardSolve_SeqSBAIJ_1_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c

Index of all Mat routines