[petsc-users] SLEPC/PETSC for large scale FEM generalised eigenvalue problem

LUCA SCALIA lscalia at pa.uc3m.es
Mon Dec 9 15:50:01 CST 2024


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20241209/eac91406/attachment-0001.html>
-------------- next part --------------
Stiffness matrix:
Mat Object: 1 MPI process
  type: seqaij
row 0: (0, 9.6009e+11)  (1, 62500.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, -2736.91)  (7, 4807.69)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, -92933.8)  (13, -62500.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, -42361.5)  (19, -4807.69)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 1: (0, 62500.)  (1, 9.6009e+11)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, -4807.69)  (7, -158553.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, -62500.)  (13, -114792.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 4807.69)  (19, 67438.2)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 2: (0, 0.)  (1, 0.)  (2, 9.6009e+11)  (3, 140929.)  (4, -99148.5)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -20132.2)  (9, 140929.)  (10, -99148.5)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -59593.3)  (15, 140929.)  (16, -99148.5)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 20132.2)  (21, 140929.)  (22, -99148.5)  (23, 0.) 

row 3: (0, 0.)  (1, 0.)  (2, 140929.)  (3, 9.6009e+11)  (4, -130208.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -140929.)  (9, 135030.)  (10, 10016.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -140929.)  (15, 291969.)  (16, 130208.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 140929.)  (21, 605846.)  (22, -10016.)  (23, 0.) 

row 4: (0, 0.)  (1, 0.)  (2, -99148.5)  (3, -130208.)  (4, 9.6009e+11)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -99148.5)  (9, -10016.)  (10, 426094.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 99148.5)  (15, 130208.)  (16, 371060.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 99148.5)  (21, 10016.)  (22, 343543.)  (23, 0.) 

row 5: (0, 0.)  (1, 0.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 9.6009e+11)  (6, 0.)  (7, 0.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 6: (0, -2736.91)  (1, -4807.69)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 138032.)  (7, -62500.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, -42361.5)  (13, 4807.69)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, -92933.8)  (19, 62500.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 7: (0, 4807.69)  (1, -158553.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, -62500.)  (7, 205907.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, -4807.69)  (13, 67438.2)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 62500.)  (19, -114792.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 8: (0, 0.)  (1, 0.)  (2, -20132.2)  (3, -140929.)  (4, -99148.5)  (5, 0.)  (6, 0.)  (7, 0.)  (8, 59593.3)  (9, -140929.)  (10, -99148.5)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 20132.2)  (15, -140929.)  (16, -99148.5)  (17, 0.)  (18, 0.)  (19, 0.)  (20, -59593.3)  (21, -140929.)  (22, -99148.5)  (23, 0.) 

row 9: (0, 0.)  (1, 0.)  (2, 140929.)  (3, 135030.)  (4, -10016.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -140929.)  (9, 960090.)  (10, 130208.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -140929.)  (15, 605846.)  (16, 10016.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 140929.)  (21, 291969.)  (22, -130208.)  (23, 0.) 

row 10: (0, 0.)  (1, 0.)  (2, -99148.5)  (3, 10016.)  (4, 426094.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -99148.5)  (9, 130208.)  (10, 852239.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 99148.5)  (15, -10016.)  (16, 343543.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 99148.5)  (21, -130208.)  (22, 371060.)  (23, 0.) 

row 11: (0, 0.)  (1, 0.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 5.95933)  (12, 0.)  (13, 0.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 12: (0, -92933.8)  (1, -62500.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, -42361.5)  (7, -4807.69)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 138032.)  (13, 62500.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, -2736.91)  (19, 4807.69)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 13: (0, -62500.)  (1, -114792.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 4807.69)  (7, 67438.2)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 62500.)  (13, 205907.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, -4807.69)  (19, -158553.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 14: (0, 0.)  (1, 0.)  (2, -59593.3)  (3, -140929.)  (4, 99148.5)  (5, 0.)  (6, 0.)  (7, 0.)  (8, 20132.2)  (9, -140929.)  (10, 99148.5)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 59593.3)  (15, -140929.)  (16, 99148.5)  (17, 0.)  (18, 0.)  (19, 0.)  (20, -20132.2)  (21, -140929.)  (22, 99148.5)  (23, 0.) 

row 15: (0, 0.)  (1, 0.)  (2, 140929.)  (3, 291969.)  (4, 130208.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -140929.)  (9, 605846.)  (10, -10016.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -140929.)  (15, 960090.)  (16, -130208.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 140929.)  (21, 135030.)  (22, 10016.)  (23, 0.) 

row 16: (0, 0.)  (1, 0.)  (2, -99148.5)  (3, 130208.)  (4, 371060.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -99148.5)  (9, 10016.)  (10, 343543.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 99148.5)  (15, -130208.)  (16, 852239.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 99148.5)  (21, -10016.)  (22, 426094.)  (23, 0.) 

row 17: (0, 0.)  (1, 0.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 5.95933)  (18, 0.)  (19, 0.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 18: (0, -42361.5)  (1, 4807.69)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, -92933.8)  (7, 62500.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, -2736.91)  (13, -4807.69)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 9.6009e+11)  (19, -62500.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 19: (0, -4807.69)  (1, 67438.2)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 62500.)  (7, -114792.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 4807.69)  (13, -158553.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, -62500.)  (19, 9.6009e+11)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 0.) 

row 20: (0, 0.)  (1, 0.)  (2, 20132.2)  (3, 140929.)  (4, 99148.5)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -59593.3)  (9, 140929.)  (10, 99148.5)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -20132.2)  (15, 140929.)  (16, 99148.5)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 9.6009e+11)  (21, 140929.)  (22, 99148.5)  (23, 0.) 

row 21: (0, 0.)  (1, 0.)  (2, 140929.)  (3, 605846.)  (4, 10016.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -140929.)  (9, 291969.)  (10, -130208.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, -140929.)  (15, 135030.)  (16, -10016.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 140929.)  (21, 9.6009e+11)  (22, 130208.)  (23, 0.) 

row 22: (0, 0.)  (1, 0.)  (2, -99148.5)  (3, -10016.)  (4, 343543.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, -99148.5)  (9, -130208.)  (10, 371060.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 99148.5)  (15, 10016.)  (16, 426094.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 99148.5)  (21, 130208.)  (22, 9.6009e+11)  (23, 0.) 

row 23: (0, 0.)  (1, 0.)  (2, 0.)  (3, 0.)  (4, 0.)  (5, 0.)  (6, 0.)  (7, 0.)  (8, 0.)  (9, 0.)  (10, 0.)  (11, 0.)  (12, 0.)  (13, 0.)  (14, 0.)  (15, 0.)  (16, 0.)  (17, 0.)  (18, 0.)  (19, 0.)  (20, 0.)  (21, 0.)  (22, 0.)  (23, 9.6009e+11) 
-------------- next part --------------
Mass matrix:
Mat Object: 1 MPI process
  type: seqaij
row 0: (0, 239.836) 
row 1: (1, 239.836) 
row 2: (2, 239.836) 
row 3: (3, 239.836) 
row 4: (4, 239.836) 
row 5: (5, 239.836) 
row 6: (6, 0.000239836) 
row 7: (7, 0.000239836) 
row 8: (8, 0.000239836) 
row 9: (9, 2.39836e-08) 
row 10: (10, 2.39836e-08) 
row 11: (11, 2.39836e-08) 
row 12: (12, 0.000239836) 
row 13: (13, 0.000239836) 
row 14: (14, 0.000239836) 
row 15: (15, 2.39836e-08) 
row 16: (16, 2.39836e-08) 
row 17: (17, 2.39836e-08) 
row 18: (18, 239.836) 
row 19: (19, 239.836) 
row 20: (20, 239.836) 
row 21: (21, 239.836) 
row 22: (22, 239.836) 
row 23: (23, 239.836)


More information about the petsc-users mailing list