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