slepc-3.21.1 2024-04-26
Report Typos and Errors

# 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 Pmat(sigma) = A0-sigma*B0, where A0 and B0 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 Pmat(sigma) = sum_i Psplit_i*phi_i(sigma), for i=1,...,n, where the phi_i's are the polynomial basis functions.

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

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

### See Also

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