KSPLSQRConvergedDefault#
Determines convergence of the KSPLSQR
Krylov method.
Synopsis#
#include "petscksp.h"
PetscErrorCode KSPLSQRConvergedDefault(KSP ksp, PetscInt n, PetscReal rnorm, KSPConvergedReason *reason, void *ctx)
Collective
Input Parameters#
ksp - iterative context
n - iteration number
rnorm - 2-norm residual value (may be estimated)
ctx - convergence context which must have been created by
KSPConvergedDefaultCreate()
Output Parameter#
reason - the convergence reason
Notes#
This is not called directly but rather is passed to KSPSetConvergenceTest()
. It is used automatically by KSPLSQR
KSPConvergedDefault()
is called first to check for convergence in \(A*x=b\).
If that does not determine convergence then checks convergence for the least squares problem, i.e. in min{|b-A*x|}.
Possible convergence for the least squares problem (which is based on the residual of the normal equations) are KSP_CONVERGED_RTOL_NORMAL
norm
and KSP_CONVERGED_ATOL_NORMAL
.
KSP_CONVERGED_RTOL_NORMAL
is returned if \(||A^T*r|| < rtol * ||A|| * ||r||\).
Matrix norm \(||A||\) is iteratively refined estimate, see KSPLSQRGetNorms()
.
This criterion is largely compatible with that in MATLAB lsqr()
.
See Also#
KSP: Linear System Solvers, KSPLSQR
, KSPSetConvergenceTest()
, KSPSetTolerances()
, KSPConvergedSkip()
, KSPConvergedReason
, KSPGetConvergedReason()
,
KSPConvergedDefaultSetUIRNorm()
, KSPConvergedDefaultSetUMIRNorm()
, KSPConvergedDefaultCreate()
, KSPConvergedDefaultDestroy()
, KSPConvergedDefault()
, KSPLSQRGetNorms()
, KSPLSQRSetExactMatNorm()
Level#
advanced
Location#
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages