#include "slepcst.h" PetscErrorCode STSetSplitPreconditioner(ST st,PetscInt n,Mat Psplit[],MatStructure strp)Collective
st | - the spectral transformation context | |
n | - number of matrices | |
Psplit | - array of matrices | |
strp | - structure flag for Psplit matrices |
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.