KSPSetDiagonalScale#
Tells KSP
to symmetrically diagonally scale the system before solving. This actually CHANGES the matrix (and right hand side).
Synopsis#
#include "petscksp.h"
#include "petscmat.h"
PetscErrorCode KSPSetDiagonalScale(KSP ksp, PetscBool scale)
Logically Collective
Input Parameters#
ksp - the
KSP
contextscale -
PETSC_TRUE
orPETSC_FALSE
Options Database Keys#
-ksp_diagonal_scale - perform a diagonal scaling before the solve
-ksp_diagonal_scale_fix - scale the matrix back AFTER the solve
Notes#
Scales the matrix by D^(-1/2) A D^(-1/2) [D^(1/2) x ] = D^(-1/2) b where D_{ii} is 1/abs(A_{ii}) unless A_{ii} is zero and then it is 1.
BE CAREFUL with this routine: it actually scales the matrix and right
hand side that define the system. After the system is solved the matrix
and right hand side remain scaled unless you use KSPSetDiagonalScaleFix()
This should NOT be used within the SNES
solves if you are using a line
search.
If you use this with the PCType
PCEISENSTAT
preconditioner than you can
use the PCEisenstatSetNoDiagonalScaling()
option, or -pc_eisenstat_no_diagonal_scaling
to save some unneeded, redundant flops.
See Also#
KSP: Linear System Solvers, KSPGetDiagonalScale()
, KSPSetDiagonalScaleFix()
, KSP
Level#
advanced
Location#
src/ksp/ksp/interface/itfunc.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages