You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I’ve understood that a dense/exact diagonalization method (e.g., LinearAlgebra.jl's eigen()) is currently used for diagonalizing projected Hamiltonians during the sweeps (please correct me if I’m wrong). If this is the case, I'm curious if sparse diagonalization methods are already available (or easy to be implemented) as an alternative method for this step. Is this something that has been discussed?
At glance, it seems that DMRG implementation has an argument like solver_krylovdim, suggesting it might work with sparse diagonalization methods. I wonder if the same is true for DMRG-X as well, and if not whether we can implement this as an option.
The text was updated successfully, but these errors were encountered:
That's correct, it just uses a dense diagonalization right now. I would say that my goal for dmrg_x was to present the simplest demonstration of a standard method, and not provide an extensive suite of DMRG-X-like algorithms (of which there are a surprising number of variants).
As for using a Krylov solver in particular, for this variant of DMRG-X where you try to find a state with the highest overlap with the previous state, I don't think there is a Krylov method for doing that directly. However, some kind of Krylov method could be used to target a certain energy, however I believe the energy targeting method is not as good (I think I read it causes the eigenstate to drift over the course of DMRG sweeps). EDIT: Something you could maybe do is use a shift-and-invert method to target eigenstates with energies close to the previous one and then choose the one with a maximal overlap with the previous state, if that was implemented in a simple and reliable way I could imagine that replacing the current full diagonalization implementation.
I’ve understood that a dense/exact diagonalization method (e.g., LinearAlgebra.jl's
eigen()
) is currently used for diagonalizing projected Hamiltonians during the sweeps (please correct me if I’m wrong). If this is the case, I'm curious if sparse diagonalization methods are already available (or easy to be implemented) as an alternative method for this step. Is this something that has been discussed?At glance, it seems that DMRG implementation has an argument like
solver_krylovdim
, suggesting it might work with sparse diagonalization methods. I wonder if the same is true for DMRG-X as well, and if not whether we can implement this as an option.The text was updated successfully, but these errors were encountered: