-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(dot-eigenvectors ...) changes eigenvectors when mu_inv != null #36
Comments
dot-eigenvectors
changes eigenvectors when mu_inv != null
I've had a chance to look at this some more. It appears that Working with the |
If you have ≤ 11 bands (the eigensolver block size), then
|
I don't know why I used |
Thanks for explaining that. I checked for >11 bands, and the problem indeed goes away. I'd be happy to submit a pull request. Before doing so, I was hoping to quickly clarify one thing: |
(or, I guess, more generally, if |
No, just use |
Ah, I see. Okay, thanks. |
Calling
(dot-eigenvectors ev band-start)
for some set of eigenvectorsev
appears to effect a change to the computed eigenvectors whenmu_inv
is not null (i.e. when μ ≠ 1, equivalently when B ≠ H).Accordingly, after calling
(dot-eigenvectors ...)
in a μ ≠ 1 case, subsequent calls to e.g.(get-eigenvector ...)
yield unpredictable results. This does not happen when μ = 1.The issue is illustrated by the (unfortunately, somewhat lengthy) example below:
which yields the results (which are wrong only in the second call to
(dot-eigenvectors ...)
in the μ ≠ 1 case)Another consequence is that calling e.g.
(get-bfield ...)
or(get-hfield ...)
after calling(dot-eigenvectors ...)
will differ from calling them before(dot-eigenvectors ...)
.I imagine the fix must lie somewhere in lines 293-319 of
matrix-smob.c
but, after much staring, I haven't been able to see what would cause this.(In principle, I could make do with
(integrate-fields ...)
,(get-hfield ...)
, &(get-bfield ...)
combinations, but they are quite a bit slower)Thanks!
The text was updated successfully, but these errors were encountered: