EPSSetArbitrarySelection#
Specifies a function intended to look for eigenvalues according to an arbitrary selection criterion. This criterion can be based on a computation involving the current eigenvector approximation.
Synopsis#
#include "slepceps.h"
PetscErrorCode EPSSetArbitrarySelection(EPS eps,SlepcArbitrarySelectionFn *func,void *ctx)
Logically Collective
Input Parameters#
eps - the linear eigensolver context
func - the arbitrary selection function, see
SlepcArbitrarySelectionFnfor a calling sequencectx - a context pointer (the last parameter to the arbitrary selection function)
Notes#
This provides a mechanism to select eigenpairs by evaluating a user-defined
function. When a function has been provided, the default selection based on
sorting the eigenvalues is replaced by the sorting of the results of this
function (with the same sorting criterion given in EPSSetWhichEigenpairs()).
For instance, suppose you want to compute those eigenvectors that maximize
a certain computable expression. Then implement the computation using
the arguments xr and xi, and return the result in rr. Then set the standard
sorting by magnitude so that the eigenpair with largest value of rr is
selected.
This evaluation function is collective, that is, all processes call it and it can use collective operations; furthermore, the computed result must be the same in all processes.
The result of func is expressed as a complex number so that it is possible to
use the standard eigenvalue sorting functions, but normally only rr is used.
Set ri to zero unless it is meaningful in your application.
See Also#
Level#
advanced
Location#
Index of all EPS routines Table of Contents for all manual pages Index of all manual pages