KSPGUESSFISCHER — PETSc 3.21.4 documentation

Skip to main content
`Ctrl`+`K`

# KSPGUESSFISCHER

Implements Paul Fischer’s initial guess algorithms [Fis98] and a non-orthogonalizing variant for situations where a linear system is solved repeatedly

## Notes

The algorithm is different from Fischer’s paper because we do not CHANGE the right-hand side of the new problem and solve the problem with an initial guess of zero, rather we solve the original problem with a nonzero initial guess (this is done so that the linear solver convergence tests are based on the original RHS). We use the \(xtilde = x - xguess\) as the new direction so that it is not mostly orthogonal to the previous solutions.

These are not intended to be used directly, they are called by `KSPSolve()` automatically with the command line options `-ksp_guess_type fischer` `-ksp_guess_fischer_model <int,int>` or programmatically with

        KSPGetGuess(ksp,&guess);
        KSPGuessSetType(guess,KSPGUESSFISCHER);
        KSPGuessFischerSetModel(guess,model,basis);
        KSPGuessSetTolerance(guess,PETSC_MACHINE_EPSILON);

The default tolerance (which is only used in Method 3) is 32*`PETSC_MACHINE_EPSILON`. This value was chosen empirically by trying a range of tolerances and picking the one that lowered the solver iteration count the most with five vectors.

Method 2 is only for positive definite matrices, since it uses the energy norm.

Method 3 is not in the original paper. It is the same as the first two methods except that it does not orthogonalize the input vectors or use A at all. This choice is faster but provides a less effective initial guess for large (about 10) numbers of stored vectors.

## Developer Note

The option `-ksp_fischer_guess <int,int>` is still available for backward compatibility

## References

[Fis98]

Paul F Fischer. Projection techniques for iterative solution of ax= b with successive right-hand sides. Computer methods in applied mechanics and engineering, 163(1-4):193–204, 1998.

## See Also

KSP: Linear System Solvers, `KSPGuess`, `KSPGuessType`, `KSP`

## Level

intermediate

## Location

src/ksp/ksp/guess/impls/fischer/fischer.c

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