I am a new comer in DMRG. I want to learn doing some simple DMRG. I come from the community of Hartree-Fock and exact diagonalization. I have a few questions on DMRG:
(1) The classical starting review are the two reviews by Ulrich Schollwöck. But are there better tutorials that actually tells me what DMRG is doing?
I have heard that DMRG has a variational interpretation, but it is hard for my to understand why these sweeps are variational. I want a level of understanding similar to what I have when doing Hartree Fock. So I clearly know that each step I am solving self-consistenly the minimization of energy in the manifold of Slater determinant state. Is there a proof that when I do these sweeps in DMRG, I am doing some minimization of energy?
For sure, If I write down a MPS state, the matrix elements of these matrix are variational elements, and reducing the bond dimension is basically reducing the number of variational parameters. But if that's the case, what is the purpose of these initial growth of the chain? Why are they variational? And why are the later sweeping variational?
(2) The second question is probably more technical. I am going through one of the review by Schollwöck. A lot of it is really just about doing the matrix multiplication in the right order. I know that there are available packages on the market, for example, since I program in Julia, there is Itensor package that is available.
It seems that some of these technical matrix multiplication stuff are automatically taken care of there in the package. So since I am not very keen in doing these, I am prone to just learn how to use those packages.
But at the same time, it also makes me wonder whther it is a good idea to use these packages or should I write my own DMRG code? (I had some very primordial code on infinite DMRG on a spin-1/2 chain) In practice, the Hamiltonian I want to study can be rather different from some spin chain. I want to know from the practitioner of DMRG, what is the tunability of these DMRG packages (can I study any 1D Hamiltonian with it?), and to what degree I should be familiar with these technical matrix multiplication coding? And to what degree should I reply on programming my own DMRG code?