:orphan:
# MatSORType
What type of (S)SOR to perform
## Synopsis
```
typedef enum {
SOR_FORWARD_SWEEP = 1,
SOR_BACKWARD_SWEEP = 2,
SOR_SYMMETRIC_SWEEP = 3,
SOR_LOCAL_FORWARD_SWEEP = 4,
SOR_LOCAL_BACKWARD_SWEEP = 8,
SOR_LOCAL_SYMMETRIC_SWEEP = 12,
SOR_ZERO_INITIAL_GUESS = 16,
SOR_EISENSTAT = 32,
SOR_APPLY_UPPER = 64,
SOR_APPLY_LOWER = 128
} MatSORType;
```
## Values
- ***`SOR_FORWARD_SWEEP` -*** do a sweep from the first row of the matrix to the last
- ***`SOR_BACKWARD_SWEEP` -*** do a sweep from the last row to the first
- ***`SOR_SYMMETRIC_SWEEP` -*** do a sweep from the first row to the last and then back to the first
- ***`SOR_LOCAL_FORWARD_SWEEP` -*** each MPI rank does its own forward sweep with no communication
- ***`SOR_LOCAL_BACKWARD_SWEEP` -*** each MPI rank does its own backward sweep with no communication
- ***`SOR_LOCAL_SYMMETRIC_SWEEP` -*** each MPI rank does its own symmetric sweep with no communication
- ***`SOR_ZERO_INITIAL_GUESS` -*** indicates the initial solution is zero so the sweep can avoid unneeded computation
- ***`SOR_EISENSTAT` -*** apply the Eisentat application of SOR, see `PCEISENSTAT`
- ***`SOR_APPLY_UPPER` -*** multiply by the upper triangular portion of the matrix
- ***`SOR_APPLY_LOWER` -*** multiply by the lower triangular portion of the matrix
## Note
These may be bitwise ORd together
## Developer Note
Since `MatSORType` may be bitwise ORd together, so do not change the numerical values below
## See Also
[](ch_matrices), `MatSOR()`
## Level
beginner
## Location
include/petscmat.h
## Examples
src/tao/pde_constrained/tutorials/hyperbolic.c
src/tao/pde_constrained/tutorials/parabolic.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscmat.h)
[Index of all Mat routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)