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 context obtained from
KSPCreate()
n - size of arrays
r
andc
. The number of eigenvalues computedneig
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#
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