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

# SlepcSC

Data structure (C struct) for storing information about the sorting criterion used by different eigensolver objects.

### Synopsis

    struct _n_SlepcSC {
      /* map values before sorting, typically a call to STBackTransform (mapctx=ST) */
      PetscErrorCode (*map)(PetscObject,PetscInt,PetscScalar*,PetscScalar*);
      PetscObject    mapobj;
      /* comparison function such as SlepcCompareLargestMagnitude */
      PetscErrorCode (*comparison)(PetscScalar,PetscScalar,PetscScalar,PetscScalar,PetscInt*,void*);
      void           *comparisonctx;
      /* optional region for filtering */
      RG             rg;
    };

### Notes

The SlepcSC structure contains a mapping function and a comparison function (with associated contexts). The mapping function usually calls ST's backtransform. An optional region can also be used to give higher priority to values inside it.

The comparison function must have the following calling sequence

     comparison(PetscScalar ar,PetscScalar ai,PetscScalar br,PetscScalar bi,PetscInt *res,void *ctx)

| ar | - real part of the 1st eigenvalue
| ai | - imaginary part of the 1st eigenvalue
| br | - real part of the 2nd eigenvalue
| bi | - imaginary part of the 2nd eigenvalue
| res | - result of comparison
| ctx | - optional context, stored in comparisonctx

The returning parameter 'res' can be

| negative | - if the 1st value is preferred to the 2st one
| zero | - if both values are equally preferred
| positive | - if the 2st value is preferred to the 1st one

Fortran usage is not supported.

### See Also

SlepcSCCompare()

### Level

developer

### Location

include/slepcsc.h
Index of all sys routines
Table of Contents for all manual pages
Index of all manual pages