Most probably you want EPS_TARGET_MAGNITUDE with shift-and-invert, i.e., -st_type sinvert -eps_target 0 -eps_target_magnitude -st_ksp_type preonly -st_pc_type lu -st_pc_factor_mat_solver_type mumps
This will solve a linear system with your A matrix instead of your B matrix. If A is singular, try a nonzero target located on the left of your eigenvalues. Jose > El 9 dic 2024, a las 22:57, Barry Smith <bsm...@petsc.dev> escribió: > > > I'll leave it to Jose to provide a complete, comprehensive answer, but > given your problem sizes, I think using a direct solver instead of an > iterative solver may be the best bet. So configure PETSc without debugging > and with MUMPS > > ./configure --with-debugging=0 --download-mumps --download-scalapack > --download-ptscotch > > and use -ksp_type preconly -pc_type lu -pc_factor_mat_solver_type mumps > > Good luck > > >> On Dec 9, 2024, at 4:50 PM, LUCA SCALIA <lsca...@pa.uc3m.es> wrote: >> >> Dear group, >> >> I am using libraries PETSC and SLEPC for a Finite Element code written in >> c++ that I am developing, oriented to the solution of generalised >> eigenvalue problems for large structural systems featuring up to 10^5 -10^6 >> degrees of freedom. >> >> I manage to successfully run the code for a generalised eigenvalue problem >> of structures with around 10^4 degrees of freedom in a reasonable amount of >> time but the problem arises in the case of systems with a number of degrees >> of freedom from 10^5 or above. >> >> The current test case I'm trying has 120.000 degrees of freedom. The EPS >> solver gets slower and slower as the iterations pass. After a rough >> estimate, I would say it may take no less than 5-6 hours with 20 MPI >> processes ( allowing an unlimited number of iterations) >> >> I need to compute the first 10 to 30 (nev) modes of the structure >> (EPS_SMALLEST_MAGNITUDE). I'm using the default KRYLOVSCHUR iterative >> solver. The problem is generalised Hermitian >> >> >> I tried to play a little bit with different settings and options of the >> library, e.g.: >> >> 1) ncv parameter. different values of ncv, between 10*nev and 40*nev >> >> 2) different solvers for the ksp object ( GMRES and CG ), and tolerance as >> well preconditioner (PCJACOBI and PCBJACOBI) >> >> 3) Normalisation of matrices A and B with the respective Frobenius or >> Infinite norms. >> >> ... but I wasn't able to solve the problem. >> >> I kindly ask for advice on which strategies I should resort to in order to >> improve the speed of SLEPC for such large numbers of degrees of freedom, >> since I'm quite new to the solution of the generalised eigenvalue problem. >> >> I also attach two files with the stiffness and mass matrix of one element to >> show the magnitude of the entries of the two matrices >> >> Best regards, >> >> Luca >> <stiffness_matrix_A.txt><mass_matrix_B.txt> >