Computes the extreme eigenvalues for the preconditioned operator. Called after or during KSPSolve().


#include "petscksp.h" 
#include "petscmat.h" 
PetscErrorCode KSPComputeEigenvalues(KSP ksp, PetscInt n, PetscReal r[], PetscReal c[], PetscInt *neig)

Not Collective

Input Parameters#

  • ksp - iterative context obtained from KSPCreate()

  • n - size of arrays r and c. The number of eigenvalues computed neig will, in general, be less than this.

Output Parameters#

  • r - real part of computed eigenvalues, provided by user with a dimension of at least n

  • c - complex part of computed eigenvalues, provided by user with a dimension of at least n

  • neig - actual number of eigenvalues computed (will be less than or equal to n)

Options Database Key#

  • -ksp_view_eigenvalues - Prints eigenvalues to stdout


The number of eigenvalues estimated depends on the size of the Krylov space generated during the KSPSolve() ; for example, with KSPCG it corresponds to the number of CG iterations, for KSPGMRES it is the number of GMRES iterations SINCE the last restart. Any extra space in r and c will be ignored.

KSPComputeEigenvalues() does not usually provide accurate estimates; it is intended only for assistance in understanding the convergence of iterative methods, not for eigenanalysis. For accurate computation of eigenvalues we recommend using the excellent package SLEPc.

One must call KSPSetComputeEigenvalues() before calling KSPSetUp() in order for this routine to work correctly.

Many users may just want to use the monitoring routine KSPMonitorSingularValue() (which can be set with option -ksp_monitor_singular_value) to print the singular values at each iteration of the linear solve.

KSPComputeRitz() provides estimates for both the eigenvalues and their corresponding eigenvectors.

See Also#

KSP: Linear System Solvers, KSPSetComputeEigenvalues(), KSPSetComputeSingularValues(), KSPMonitorSingularValue(), KSPComputeExtremeSingularValues(), KSP, KSPComputeRitz()






KSPComputeEigenvalues_CG() in src/ksp/ksp/impls/cg/cgeig.c
KSPComputeEigenvalues_FETIDP() in src/ksp/ksp/impls/fetidp/fetidp.c
KSPComputeEigenvalues_GMRES() in src/ksp/ksp/impls/gmres/gmreig.c
KSPComputeEigenvalues_MINRES() in src/ksp/ksp/impls/minres/minres.c

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