:orphan:
# KSPNormType
Norm calculated by the `KSP` and passed in the Krylov convergence test routines. 
## Synopsis
```
typedef enum {
  KSP_NORM_DEFAULT          = -1,
  KSP_NORM_NONE             = 0,
  KSP_NORM_PRECONDITIONED   = 1,
  KSP_NORM_UNPRECONDITIONED = 2,
  KSP_NORM_NATURAL          = 3
} KSPNormType;
```

## Values

- ***`KSP_NORM_DEFAULT` -*** use the default for the current `KSPType`
- ***`KSP_NORM_NONE` -*** use no norm calculation
- ***`KSP_NORM_PRECONDITIONED` -*** use the preconditioned residual norm
- ***`KSP_NORM_UNPRECONDITIONED` -*** use the unpreconditioned residual norm
- ***`KSP_NORM_NATURAL` -*** use the natural norm (the norm induced by the linear operator)





## Note
Each solver only supports a subset of these and some may support different ones
depending on whether left or right preconditioning is used, see `KSPSetPCSide()`


## Developer Note
This must match the values in petsc/finclude/petscksp.h


## See Also
 [](ch_ksp), `KSP`, `PCSide`, `KSPSolve()`, `KSPGetConvergedReason()`, `KSPSetNormType()`,
`KSPSetConvergenceTest()`, `KSPSetPCSide()`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/include/petscksp.h.html#KSPNormType">include/petscksp.h</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscksp.h)


[Index of all KSP routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
