Skip to main content
`Ctrl`+`K`

# PCApplyBAorAB

Applies the preconditioner and operator to a vector. \(y = B*A*x \) or \( y = A*B*x\).

## Synopsis

    #include "petscksp.h"
    PetscErrorCode PCApplyBAorAB(PC pc, PCSide side, Vec x, Vec y, Vec work)

Collective

## Input Parameters

- pc - the `PC` preconditioner context

- side - indicates the preconditioner side, one of `PC_LEFT`, `PC_RIGHT`, or `PC_SYMMETRIC`

- x - input vector

- work - work vector

## Output Parameter

- y - output vector

## Note

If the `PC` has had `PCSetDiagonalScale()` set then \( D M A D^{-1} \) for left preconditioning or \( D A M D^{-1} \) is actually applied. The specific `KSPSolve()` method must also be written to handle the post-solve “correction” for the diagonal scaling.

## See Also

KSP: Linear System Solvers, `PC`, `PCApply()`, `PCApplyTranspose()`, `PCApplyBAorABTranspose()`

## Level

developer

## Location

src/ksp/pc/interface/precon.c

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