You should not use SMALLEST_MAGNITUDE with SINVERT. If using SINVERT you should set the target value E.setTarget(sigma) and leave the default Which (or set it explicitly to Which.TARGET_MAGNITUDE).
Jose > El 6/7/2015, a las 13:26, Julian Andrej <[email protected]> escribió: > > Hello, > > i'm using PETSc and SLEPc in Python. > > I'm trying to calculate eigenvalues for the stokes equations with the > following code > > SHIFT = SLEPc.ST().create() > SHIFT.setType(SHIFT.Type.SINVERT) > E = SLEPc.EPS().create() > E.setST(SHIFT) > E.setOperators(K, M) > E.setDimensions(25, PETSc.DECIDE) > E.setWhichEigenpairs(E.Which.SMALLEST_MAGNITUDE) > E.setFromOptions() > E.solve() > > This gives me correct eigenvalues and right eigenvectors. > > If I want to compute the LEFT eigenvectors i setup a new solver > context with the corresponding transposed matrices (these are > precalculated) > > SHIFT = SLEPc.ST().create() > SHIFT.setType(SHIFT.Type.SINVERT) > E = SLEPc.EPS().create() > E.setST(SHIFT) > E.setOperators(KT, MT) > E.setDimensions(25, PETSc.DECIDE) > E.setWhichEigenpairs(E.Which.SMALLEST_MAGNITUDE) > E.setFromOptions() > E.solve() > > I don't get any converged eigenvalues. > > Interfacing ARPACK through scipy > > v, V = sp.linalg.eigs(A=K, k=64, M=M, sigma=1.0) > w, W = sp.linalg.eigs(A=K.T, k=64, M=M.T, sigma=1.0) > > i get correct left and right eigenvectors (passing (K*V-M*V*diag(v)) < 1e-10) > > I tried alot of configurations to get it working, so i dont have to > convert matrices in my calculations. > Is it possible to get the expected results with the iterative solver?
