How to obtain full spectrum of given Model?
Posted: 22 Dec 2020, 20:07
I want to obtain the full spectrum of some model and what is crucial - all MPSs representing all possible states. I believe, that for sufficiently large bond_dimension this shouldn't be a problem (at least for a small physical system).
I wanted to use for this purpose DMRG, which is executed with an argument "orthogonal_to". I first did an exact diagonalization to obtain some benchmark results. Then I run DMRG without any conservation of quantum numbers. Finally, I used DMRG with conservation of 'Sz'. I obtained the following results for a SpinChain with 3 SpinSites (with spin 1/2):
The whole code, that I've used for this purpose, is in the attachment.
It seems, like DMRG is performing well on the subspace on which it is launched. E.g. with conservation of Sz it runs on a smaller subspace and is able to obtain at lest the groundstate of this subspace.
What am I doing wrong? Or maybe there is some other way to get what I want? I thought about using ExactDiag and then casting obtained vectors to MPSs, but I would like to stick with the DMRG.
I wanted to use for this purpose DMRG, which is executed with an argument "orthogonal_to". I first did an exact diagonalization to obtain some benchmark results. Then I run DMRG without any conservation of quantum numbers. Finally, I used DMRG with conservation of 'Sz'. I obtained the following results for a SpinChain with 3 SpinSites (with spin 1/2):
Code: Select all
===== EXACT DIAGONALIZATION =====
[-1.0000000e+00+0.j 1.2171636e-16+0.j 5.0000000e-01+0.j -1.0000000e+00+0.j 5.0000000e-01+0.j 0.0000000e+00+0.j 5.0000000e-01+0.j 5.0000000e-01+0.j]
===== DMRG - NO CONSERVATION =====
[-1.0, -1.0, -1.6833599511052614e-16, -7.783179800973695e-17, -7.783179800973695e-17, -7.783179800973695e-17, -7.783179800973695e-17, 3.4663131977831515e-17]
===== DMRG - CONSERVATION OF Sz =====
[-1.0, -1.0, -1.1148336360798884e-16, -1.3877787807814466e-17, -7.320883228133898e-18, -2.4903616914531226e-18, 0.5, 0.5]
It seems, like DMRG is performing well on the subspace on which it is launched. E.g. with conservation of Sz it runs on a smaller subspace and is able to obtain at lest the groundstate of this subspace.
What am I doing wrong? Or maybe there is some other way to get what I want? I thought about using ExactDiag and then casting obtained vectors to MPSs, but I would like to stick with the DMRG.