petsc-3.13.6 2020-09-29
MatForwardSolve
Solves L x = b, given a factored matrix, A = LU, or U^T*D^(1/2) x = b, given a factored symmetric matrix, A = U^T*D*U,
Synopsis
#include "petscmat.h"
PetscErrorCode MatForwardSolve(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 MatForwardSolve(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().
See Also
MatSolve(), MatBackwardSolve()
Level
developer
Location
src/mat/interface/matrix.c
Implementations
MatForwardSolve_SeqBAIJ_1_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat1.c
MatForwardSolve_SeqBAIJ_2_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat2.c
MatForwardSolve_SeqBAIJ_3_NaturalOrdering in src/mat/impls/baij/seq/baijsolvnat3.c
MatForwardSolve_SeqSBAIJ_N_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_N_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_N_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_7_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_7_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_6_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_6_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_5_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_5_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_4_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_4_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_3_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_3_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_2_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_2_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_1 in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_1_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_1_NaturalOrdering in src/mat/impls/sbaij/seq/sbaijfact2.c
MatForwardSolve_SeqSBAIJ_1_NaturalOrdering_inplace in src/mat/impls/sbaij/seq/sbaijfact2.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages