Skip to main content
`Ctrl`+`K`

# KSPComputeEigenvalues

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

## Synopsis

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

Not Collective

## Input Parameters

- ksp - iterative solver 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

## Notes

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()`

## Level

advanced

## Location

src/ksp/ksp/interface/itfunc.c

## Implementations

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