Closed ajos6183 closed 5 years ago
Regarding the MKL Extended Eigensolver:
The internal error returned by mkl_sparse_d_gv
is not very helpful indeed. I haven't worked with the MKL eigensolver, so I'm afraid I can't give you any advice, but I suspect the problem is on the native side.
Regarding ARPACK:
1) ARPACK++ doesn't allow nev >= n
(see arrseig.h). I'm not sure if ARPACK has this restriction, but if you really want to get all eigenvalues of a small matrix, you'll have to do two calls to get lower and upper spectrum.
2) In release mode, the libarpack project is compiled with ARPACK_SILENT_MODE
, which prevents the solver from printing any error messages to console. If you use the debug mode DLL, you would see a message like Arpack error in AREigenProblem. -> 'nev' is out of bounds.
3) Since your matrices are symmetric, you should use the constructor overload to explicitly tell ARPACK about it: new Arpack(Kg, Ke, true)
. But be aware that, when using symmetric mode, ARPACK++ expects the input matrices to be upper triangular. You could either take care of that while assembling the matrices, or by calling matrix.Keep((i, j, aij) => i <= j)
.
Thanks so much!
Hi @wo80,
I hope i won't bother you anymore after this one!
I am testing the following 2 problems but there are some issues. In
Problem 1
which involves 93 x 93 Matrices, the ARPACK solver works and the MKL solver fails. The opposite is true inProblem 2
which involves 3 x 3 matrices.It seems to me that the failures are coming from the ARPACK and MKL dlls and not your library but i just wanted to check. Your thoughts would be very valuable on this. Of course i am more interested in why the larger matrix is failing in MKL (as are most things i am testing).
Problem 1
Problem 2
Thanks, Anthony