In symmetric problems (GHEP) you might have large residuals due to B being 
singular. The explanation is the following. By default, in SLEPc GHEPs are 
solved via a B-Lanczos recurrence, that is, using the inner product induced by 
B. If B is singular this is not a true inner product and numerical problems may 
arise, in particular, the computed eigenvectors may be corrupted with 
components in the null space of B. This is easily solved by a small computation 
called 'eigenvector purification' which is on by default in SLEPc, see 
EPSSetPurify(). This is described with a bit more detail in section 3.4.4 of 
the manual.

In non-symmetric problems (GNHEP) you should not see this problem. The only 
precaution is not to solve systems with matrix B, e.g., using shift-and-invert.

Jose


> El 5 dic 2019, a las 5:04, Manav Bhatia <[email protected]> escribió:
> 
> Hi, 
> 
>   I am working on mixed form finite element discretization which leads to 
> eigenvalues of the form
> 
>   A x = lambda B x 
> 
>   With the matrices defined in a block structure as
> 
> A =    [ K  D^T ] 
>           [ D  0     ] 
> 
> B =   [ M  0 ] 
>          [ 0   0 ]
> 
>   The second row of equations come from Lagrange multipliers in our 
> discretization scheme. A system with m Lagrange multiplier is expected to 
> have m Inf eigenvalues. We are testing the standard eigensolvers in Matlab 
> and as the system size increases the eigensolves are stopping with larger 
> residuals, || r_i ||, of the eigensystem: 
> 
> r_i = A x_i - lambda_i B x_i 
> 
>   I am working towards setting this up in SLEPc. In the meantime I am curious 
> about the following: 
> 
> 1.  Is the eigensolution of such systems known to be problematic? 
> 2.  Are there standard tricks in SLEPc or elsewhere that are geared towards 
> more robust solutions of such systems? 
> 
>    I would appreciate guidance on this. 
> 
> Regards,
> Manav 
> 
> 

Reply via email to