Actual source code: richscale.c
  2: #include <../src/ksp/ksp/impls/rich/richardsonimpl.h>
  4: /*@
  5:     KSPRichardsonSetScale - Set the damping factor; if this routine is not called, the factor
  6:     defaults to 1.0.
  8:     Logically Collective on ksp
 10:     Input Parameters:
 11: +   ksp - the iterative context
 12: -   scale - the relaxation factor
 14:     Options Database Keys:
 15: . -ksp_richardson_self <scale> - Set the scale factor
 17:     Level: intermediate
 19:     .seealso: KSPRICHARDSON, KSPRichardsonSetSelfScale()
 20: @*/
 21: PetscErrorCode  KSPRichardsonSetScale(KSP ksp,PetscReal scale)
 22: {
 28:   PetscTryMethod(ksp,"KSPRichardsonSetScale_C",(KSP,PetscReal),(ksp,scale));
 29:   return(0);
 30: }
 32: /*@
 33:     KSPRichardsonSetSelfScale - Sets Richardson to automatically determine optimal scaling at each iteration to minimize the 2-norm of the
 34:        preconditioned residual
 36:     Logically Collective on ksp
 38:     Input Parameters:
 39: +   ksp - the iterative context
 40: -   scale - PETSC_TRUE or the default of PETSC_FALSE
 42:     Options Database Keys:
 43: . -ksp_richardson_self_scale - Use self-scaling
 45:     Level: intermediate
 47:     Notes:
 48:     Requires two extra work vectors. Uses an extra VecAXPY() and VecDotNorm2() per iteration.
 50:     Developer Notes:
 51:     Could also minimize the 2-norm of the true residual with one less work vector
 53:     .seealso: KSPRICHARDSON, KSPRichardsonSetScale()
 54: @*/
 55: PetscErrorCode  KSPRichardsonSetSelfScale(KSP ksp,PetscBool scale)
 56: {
 62:   PetscTryMethod(ksp,"KSPRichardsonSetSelfScale_C",(KSP,PetscBool),(ksp,scale));
 63:   return(0);
 64: }