Skip to main content
`Ctrl`+`K`

# STSetSplitPreconditioner

Sets the matrices from which to build the preconditioner in split form.

## Synopsis

    #include "slepcst.h"
    PetscErrorCode STSetSplitPreconditioner(ST st,PetscInt n,Mat Psplit[],MatStructure strp)

Collective

## Input Parameters

- st - the spectral transformation context

- n - number of matrices

- Psplit - array of matrices

- strp - structure flag for `Psplit` matrices

## Notes

The number of matrices passed here must be the same as in `STSetMatrices()`.

For linear eigenproblems, the preconditioner matrix is computed as \(P(\sigma) = A_0-\sigma B_0\), where \(A_0\) and \(B_0\) are approximations of \(A\) and \(B\) (the eigenproblem matrices) provided via the `Psplit` array in this function. Compared to `STSetPreconditionerMat()`, this function allows setting a preconditioner in a way that is independent of the shift \(\sigma\). Whenever the value of \(\sigma\) changes the preconditioner is recomputed.

Similarly, for polynomial eigenproblems the matrix for the preconditioner is expressed as \(P(\sigma) = \sum_i P_i \phi_i(\sigma)\), for \(i=1,\dots,n\), where \(P_i\) are given in `Psplit` and the \(\phi_i\)’s are the polynomial basis functions.

The structure flag provides information about the relative nonzero pattern of the `Psplit` matrices, in the same way as in `STSetMatStructure()`.

Use `n=0` to reset a previously set split preconditioner.

## See Also

ST: Spectral Transformation, `STGetSplitPreconditionerTerm()`, `STGetSplitPreconditionerInfo()`, `STSetPreconditionerMat()`, `STSetMatrices()`, `STSetMatStructure()`

## Level

advanced

## Location

src/sys/classes/st/interface/stfunc.c

## Examples

src/eps/tutorials/ex49.c
src/pep/tutorials/ex50.c

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