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/pep/tutorials/ex50.c
src/eps/tutorials/ex49.c


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