Hi,
I am trying to find eigenvalues and eigenvectors for a rather large, sparse, hermitian matrix (size ~1E7 x 1E7). I am mainly interested in around 40 eigenvalues in the middle of the spectrum.
To solve this originally, I am using the ARPACK library, which works fine with the shift-invert, I get correct eigenvalues and eigenvectors, but this takes a very long time. I have been using previously a JDQR MATLAB solver on my local machine for smaller problems. A similar implementation of this I have seen in Julia in the JacobiDavidson package. I have installed this and begun testing, but I can’t seem to figure out how the output from the JDQR solver itself is structured. I have looked through the github and haven’t been able to decipher anything useful (all examples are given for the JDQZ routine which is throwing me a bit.)
Has anyone gotten this library to work for them? Or is there any other library I should be looking at for this problem.
Here is a snippet of what I am running:
// S is a sparse matrix read in from a file and assigned to A, column 1 is the row number, column 2 is the column number, column 3 and 4 are the real and imaginary parts of the value at a given row and column number. //
A=Hermitian(sparse(Int.(S[:,1]), Int.(S[:,2]), complex.(S[:,3], S[:,4])))
Aop = LinearMap(A)
target = Near(complex(dE, 0.0)) // Near requires a complex value, all eigenvalues should be real.
n = size(A, 1)
levels = 20
solver = BiCGStabl(n, max_mv_products = 10, l = 2)
pschur, residuals = jdqr(Aop;
solver = solver,
target = target,
pairs = levels,
tolerance = 1e-8,
subspace_dimensions = levels+5:2*levels+10,
max_iter = 25000,
verbosity = 1
)
Basically, I am confused with the format of pschur, and how I get my eigenvalues and eigenvectors from this.
Any help is appreciated!