<div dir="ltr"><div>Hello Jose,</div><div><br></div><div>I guess I expected B to not be inverted but instead used as a mass for a problem-specific inner product since I specified GHEP as a problem type. p50 of the <a href="https://slepc.upv.es/documentation/slepc.pdf">same user manual</a> seems to imply that that would indeed be the case. I don't see what problem there would be with using a shell B matrix as a weighting matrix, as long as a mat utility is provided of course.<br></div><div><br></div><div></div>I tried the first approach - I set up my KSP as CG since B is hermitian positive-definite (I made a mistake in my first email), but I'm getting a KSPSolve has not converged, reason DIVERGED_ITS error. I'm letting it run for 1000 iterations already so it seems suspiciously slow for a CG solver.<br><div><br></div><div>I'm grappling with a shell preconditioner now to try and speed it up, but I'm unsure which one allows for shell matrices.<br></div><div><br></div><div>Thank you for your time,<br></div><div><br>Quentin<br><br><br>On Wed, 12 Jul 2023 at 19:24, Jose E. Roman <<a href="mailto:jroman@dsic.upv.es">jroman@dsic.upv.es</a>> wrote:<br>><br>> By default, it is solving the problem as B^{-1}*A*x=lambda*x (see chapter on Spectral Transformation). That is why A can be a shell matrix without problem. But B needs to be an explicit matrix in order to compute an LU factorization. If B is also a shell matrix then you should set an iterative solver for the associated KSP (see examples in the chapter).<br>><br>> An alternative is to create a shell matrix M that computes the action of B^{-1}*A, then pass M to the EPS solver as a standard eigenproblem.<br>><br>> Jose<br>><br>><br>> > El 12 jul 2023, a las 19:04, Quentin Chevalier <<a href="mailto:quentin.chevalier@polytechnique.edu">quentin.chevalier@polytechnique.edu</a>> escribió:<br>> ><br>> > Hello PETSc Users,<br>> ><br>> > I have a generalised eigenvalue problem : Ax= lambda Bx<br>> > I used to have only A as a matrix-free method, I used mumps and an LU preconditioner, everything worked fine.<br>> ><br>> > Now B is matrix-free as well, and my solver is returning an error : "MatSolverType mumps does not support matrix type python", which is ironic given it seem to handle A quite fine.<br>> ><br>> > I have read in the user manual here that there some methods may require additional methods to be supplied for B like MATOP_GET_DIAGONAL but it's unclear to me exactly what I should be implementing and what is the best solver for my case.<br>> ><br>> > A is hermitian, B is hermitian positive but not positive-definite or real. Therefore I have specified a GHEP problem type to the EPS object.<br>> ><br>> > I use PETSc in complex mode through the petsc4py bridge.<br>> ><br>> > Any help on how to get EPS to work for a generalised matrix-free case would be welcome. Performance is not a key issue here - I have a tractable high value case on hand.<br>> ><br>> > Thank you for your time,<br>> ><br>> > Quentin<br>><br></div></div>