# [petsc-dev] What is the difference between shift and target in SLEPc ?

Jose E. Roman jroman at dsic.upv.es
Mon Sep 25 08:54:01 CDT 2017

```Yes.

> El 25 sept 2017, a las 15:37, Franck Houssen <franck.houssen at inria.fr> escribió:
>
> OK, thanks, this is helpful.
>
> If I got you correctly: beforehand, there is no way to know exactly what the eigen values are. If it turns out that an eigen value makes A-sigma*I or A-sigma*B singular, then the solve may break. If so, afterwards, it's possible to change slightly the shift to avoid solve break down (but there is no way to know that beforehand).
>
> Franck
>
> ----- Mail original -----
>> De: "Jose E. Roman" <jroman at dsic.upv.es>
>> À: "Franck Houssen" <franck.houssen at inria.fr>
>> Cc: "For users of the development version of PETSc" <petsc-dev at mcs.anl.gov>
>> Envoyé: Lundi 25 Septembre 2017 14:50:48
>> Objet: Re: [petsc-dev] What is the difference between shift and target in SLEPc ?
>>
>>
>>> El 25 sept 2017, a las 13:21, Franck Houssen <franck.houssen at inria.fr>
>>> escribió:
>>>
>>> What is the difference between shift and target in SLEPc ? Shift
>>> (STSetShift) is clear to me, but, target (EPSSetTarget) is not.
>>> Can somebody give an example where one want/need to have a target which
>>> would be different from the shift ?
>>>
>>> Franck
>>
>> In shift-and-invert the shift is equal to the target by default. The target
>> is what you use to indicate where you want the eigenvalues to be sought (it
>> can be used without shift-and-invert). Normal usage is having both values
>> equal. If the target is exactly equal to an eigenvalue, then you may want to
>> perturb the shift (change it to a slightly different value) in order to
>> avoid a singular matrix A-sigma*I in the linear solves. (Some solvers such
>> as MUMPS do not have problems with singular matrices, so this is not
>> necessary in that case).
>>
>> Jose
>>
>>

```