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
Psplitmatrices
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#
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