# [petsc-users] Solving eigenproblems in the form of Stokes equations

Matthew Knepley knepley at gmail.com
Sun Jul 12 06:07:29 CDT 2015

On Fri, Jul 10, 2015 at 4:28 PM, Julian Andrej <juan at tf.uni-kiel.de> wrote:

> Hi,
>
> i'm trying to solve a generalized eigenvalue problem which is the
> stokes equations discretized by finite elements (with fenics) and
> producing a banded matrix (reordered structure) of the well known
> block form
>
> [N    Q]
> [QT  0]
>
> The domain is the unit square with dirichlet boundary condition
> evaluating to zero at all boundary nodes.
>
> A is the block matrix in banded reordered structure and M is the mass
> matrix.
>

You have not written an equation here. Are you solving

Q^T N^{-1} Q x = \lambda M x

If so, the Schur complement can be rank deficient by 1 if you have Neumann
conditions on the pressure. I don't know how SLEPc handles this.

Matt

> I'm using slepc4py for the eigenvalue calculation.
>
> E = SLEPc.EPS().create()
> E.setOperators(A, M)
> E.setDimensions(NEV, PETSc.DECIDE)
> E.setFromOptions()
>
> I always get the error
>  Zero pivot row 1 value 0 tolerance 2.22045e-14
>
> I cannot find a combination which solves the eigenvalues for this problem.
>
> The system itself solves fine with a KSP solver object from PETSc
> using tfmqr with the icc PC.
>
> I can assemble the matrix with a penalty term for the pressure and
> calculate the eigenvalues with a direct solver, but i try to avoid
> that.
>

--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their