:orphan: # PCApplyBAorABTranspose Applies the transpose of the preconditioner and operator to a vector. That is, applies tr(B) * tr(A) with left preconditioning, NOT tr(B*A) = tr(A)*tr(B). ## Synopsis ``` #include "petscksp.h" PetscErrorCode PCApplyBAorABTranspose(PC pc, PCSide side, Vec x, Vec y, Vec work) ``` Collective ## Input Parameters - ***pc -*** the 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 This routine is used internally so that the same Krylov code can be used to solve A x = b and A' x = b, with a preconditioner defined by B'. This is why this has the funny form that it computes tr(B) * tr(A) ## See Also `PC`, `PCApply()`, `PCApplyTranspose()`, `PCApplyBAorAB()` ## Level developer ## Location src/ksp/pc/interface/precon.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/interface/precon.c) [Index of all PC routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)