Recent Changes - Search:

HomePage

PmWiki

pmwiki.org

SimpleDMRG

(redirected from APCTPWorkshop.SimpleDMRG)

This is a simple DMRG code in Python. It follows quite closely the original implementation of the infinite system variant of DMRG from Steven R. White, Phys. Rev. Lett. 69, 2863 (1992). This is a Python port of a code first written in Matlab. It should run with python2 or python3. It requires the NumPy and SciPy libraries. You can get the Python source here

This is a simple program that reproduces the original implementation of DMRG. It is missing many features that an efficient DMRG code would contain.

  • The Superblock Hamiltonian doesn't need to be explicitly constructed. The Hamiltonian diagonalization in this code is {$O(m^4)$}, however, it can be done in {$O(m^3)$} with a bit more care.
  • There is no initial guess vector for the Hamiltonian diagonalization. This means that at each iteration it is necessary to start from a random vector, even when the calculation has converged. (Finding such an initial guess vector is the main development behind the PWFRG and iDMRG algorithms)
  • The algorithm should converge to an infinite-size translationally-invariant MPS, but it is not obvious how to obtain it
  • There is no facility to calculate observables

This code makes use of reflection symmetry so that we only need to construct one set of block operators. If we didn't make use of this reflection symmetry, it would be tempting to add a site to left block as kron(block,site), and add a site the right block as kron(site,block), to give the usual DMRG form (block,site,site,block). In fact, it makes no difference whether we add sites to the block using kron(block,site) or kron(site,block), they differ simply by a unitary basis transformation which has no effect on the density matrix. Note that we could make more use of reflection symmetry, by requiring that the wavefunction is actually an eigenstate of reflection. This corresponds to requiring that the wavefunction in the Schmit basis (named PsiMatrix in the code) is a symmetric matrix. The code doesn't make use of this, but as an exercise, you can verify that PsiMatrix is indeed numerically symmetric.

Edit - History - Print - Recent Changes - Search
Page last modified on June 24, 2020, at 01:24 AM