Hello,
I have a rather weird problem when trying to implement either TDVP or DMRG with a model where I have hardcore bosons (\( \psi \)) on sites and spin half on links of a 1d chain.
For ex : \( \sum_{i}\psi^{\dagger}_{i}S^{+}_{i,i+1}\psi_{i+1} +h.c \)
Even when I start with a random initial state, strangely TDVP does not increase bond dimension at all.. This is true even with the mixer on..
With two-site DMRG, I have a similar issue where DMRG does not increase the bond dimension on its own without the mixer, but seems to work well with the mixer on..
I appreciate any help for a way around this issue !
Thanks a lot
TDVP and DMRG problem
Re: TDVP and DMRG problem
It is expected that SingleSiteTDVP does not increase the bond dimension by defintion - that's how it's constructed and the reason why we have two-site TDVP in the first place (which is not strictly a TDVP anymore), and documented at the top of tdvp.py.
As also stated there, the mixer is currently completely ignored by TDVP, since TDVP's update_local directly calls
There's an open Issue #299 to change this by merging the mixer refactoring with the (more quick-and-dirty) working version of CBE in Issue #217.
As a quick fix for your project you have several options to try:
As also stated there, the mixer is currently completely ignored by TDVP, since TDVP's update_local directly calls
svd_theta,npc.svd
rather than using the Mixers svd. There's an open Issue #299 to change this by merging the mixer refactoring with the (more quick-and-dirty) working version of CBE in Issue #217.
As a quick fix for your project you have several options to try:
- Use TwoSiteTDVP, but group_sites (in your case each the spin and Hard-core boson together) for both the model/MPO and MPS before the time evolution, as implemented by the Simulation class in group_sites_for_algorithm - look into the code of this methods and the measurements, which use group_split() to revert the grouping for measurmenets.
- use an alternative algorithm like ExpMPOEvolution
- Alternate between TDVP for most of the evolution and ExpMPOEvolution just every X time steps to increase bond dimension
- directly use the code version of Issue #217 for your project
- try to generalize TDVP to actually use the mixer interface for SVD with the existing mixers
- actually address Issue #299 and merge the CBE code with the refactoring of mixers (or wait until we finally get to it).