# CISS

The Contour Integral Spectrum Slicing method (CISS) is an eigensolver based on the Sakurai-Suigura method in the SLEPc library (ver 3.4 ~). Users can compute the eigenvalues inside a specified region on the complex plane and corresponding eigenvectors using CISS. CISS can be used for generalized eigenvalue problems (EPSCISS) and nonlinear eigenvalue problems (NEPCISS). In EPSCISS and NEPCISS, PETSc’s complex scalars are used. However, users can utilize EPSCISS in real arithmetic by building the real version of PETSc when matrices A and B are real symmetric and B is positive-definite (i.e., all eigenvalues are real).

## Installation

For using CISS, users should install PETSc and SLEPc. Especially, the complex number of PETSc is used in CISS. To install PETSc and SLEPc, please follow the steps below:

- Download the latest PETSc library.
- Build the Complex version of PETSc (add the option –with-scalar-type=complex).
- Download the latest SLEPc library.
- Build SLEPc.

## Usage

CISS for generalized eigenvalue problem is embedded in the EPS object of SLEPc (EPSCISS). EPSCISS solves generalized eigenvalue problems. Users can select the solver in the EPS object by means of the EPSSetType function (or -eps_type from the command-line). When selecting EPSCISS, users should also set a region object (RG) to the EPS object using the EPSSetRG function (or -rg_type from the command-line). The following is an example of running an executable with EPSCISS:

- mpirun -np (#process) ./(executable) -eps_type ciss -rg_type ellipse

CISS for nonlinear eigenvalue problems is also embedded in the NEP object of SLEPc (NEPCISS). NEPCISS solves nonlinear eigenvalue problems. Users can select the solver in the NEP object using the NEPSetType function (or -nep_type from the command line). When selecting NEPCISS, users should also set a region object (RG) to the NEP object using the NEPSetRG function (or -rg_type from the command line). The following is one example of running an executable with NEPCISS:

- mpirun -np (#process) ./(executable) -nep_type ciss -rg_type ellipse

## Specification (options for CISS)

The detail of CISS parameters is described in the SLEPc Documentation (STR-11).