Skip to main content
`Ctrl`+`K`

# PCDiagonalScaleRight

Scales a vector by the right scaling as needed by certain time-stepping codes.

## Synopsis

    #include "petscksp.h"
    PetscErrorCode PCDiagonalScaleRight(PC pc, Vec in, Vec out)

Logically Collective

## Input Parameters

- pc - the `PC` preconditioner context

- in - input vector

- out - scaled vector (maybe the same as in)

## Notes

The system solved via the Krylov method is, for left and right preconditioning,

\[ \begin{align*} D M A D^{-1} y = D M b \\ D A M D^{-1} z = D b. \end{align*} \]

`PCDiagonalScaleLeft()` scales a vector by \(D\). `PCDiagonalScaleRight()` scales a vector by \(D^{-1}\).

If diagonal scaling is turned off and `in` is not `out` then `in` is copied to `out`

## See Also

KSP: Linear System Solvers, `PCCreate()`, `PCSetUp()`, `PCDiagonalScaleLeft()`, `PCSetDiagonalScale()`, `MatDiagonalScale()`

## Level

intermediate

## Location

src/ksp/pc/interface/precon.c

Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages