Skip to main content
`Ctrl`+`K`

# BVOrthogRefineType

Determines what type of iterative refinement to use during orthogonalization of vectors.

## Synopsis

    typedef enum { BV_ORTHOG_REFINE_IFNEEDED,
                   BV_ORTHOG_REFINE_NEVER,
                   BV_ORTHOG_REFINE_ALWAYS } BVOrthogRefineType;

## Values

- `BV_ORTHOG_REFINE_IFNEEDED` - Refine only if a certain criterion is satisfied

- `BV_ORTHOG_REFINE_NEVER` - Never refine, do plain CGS or MGS

- `BV_ORTHOG_REFINE_ALWAYS` - Always refine, i.e., run CGS2 or MGS2

## Notes

The default is to perform one step of iterative refinement if a certain numerical criterion holds. In ill-conditioned cases, a third orthogonalization can also be done.

Never refining is not recommended because it will generally make the eigensolver numerically unstable.

Always refining is numerically stable, but it often performs unnecessary computation.

## See Also

BV: Basis Vectors, `BVSetOrthogonalization()`, `BVGetOrthogonalization()`, `BVOrthogonalizeColumn()`

## Level

advanced

## Location

include/slepcbv.h

Index of all BV routines Table of Contents for all manual pages Index of all manual pages