Currently I am facing a problem which relates to the conserved quantities in DMRG. I use old-fashioned DMRG (Steven White approach) to compute the ground state of certain models. However, the ground state does not have the correct conserved charges. Therefore, I am curious on in which steps of traditional DMRG, I can impose some constraints such that the ground state always has the correct charges and the symmetry is always preserve at each run. For instance, let's consider the XXZ model(Part B of this hyper link): \begin{equation} H = \sum_{i} J_{x} ( S^{x}_{i}S^{x}_{i+1} + S^{y}_{i}S^{y}_{i+1}) + J_{z} S^{z}_{i}S^{z}_{i+1} \end{equation} The Hamiltonian of XXZ model has global U(1) symmetry regarding the rotation about z-axis. This symmetry leads to the conservation of total $S^{z}$ of XXZ model. This implies the Hamiltonian commutes with total $S^{z}$ ($ [H,\sum_{i} S^{z}_{i}] =0 $). If we set the parameters $J_{x}, J_{z}$ appropriately, the ground state of XXZ model is the anti-ferromagnetic, where the total $S^{z}$ should be zero. Suppose I use my DMRG code to find out the ground state of the system, how can I ensure that the ground state I found does have total $S^{z}$ to be zero?

Attempt: I have tried to use my DMRG code to find out the correct ground state of XXZ model. My flow is the following: Similar to traditional DMRG, I define all the operators for the system and environment blocks. Then I calculate the Hamiltonian of each blocks and then combine the system and environment blocks together to form the superblock. The Hamiltonian of superblock Hamiltonian has the following form: \begin{equation} H_{super} = H_{sys} + H_{\cdot \cdot} + H_{env} \end{equation} Where the $ \cdot \cdot$ denotes the 2 newly inserted sites between system and environment. Having the superblock Hamiltonian $H_{super}$, we can diagonalize it to find out the ground state of XXZ model. Then I use the ground state to construct the reduced density matrices for system and environment. Since the reduce density matrix of system/environment commutes with the total $S^{z}$ of the system/environment(e.g $[\rho_{sys}, S^{z}_{tot,sys}] = 0$), implying that they both share the simultaneous eigenstates, denoted it as $ |w, s^{z}_{tot,sys} \rangle$. $w$ and $s^{z}_{tot,sys}$ are the Schdmit values and the eigenvalues of total $S^{z}_{sys}$. Suppose the ground states is anti-ferromagnetic, then I need to aims at the states having high Schdmit values $w$ while $s^{z}_{tot,sys} = 0$. Finally, suppose I choose $\chi$ states having highest Schdmit values( but some of the states the $s^{z}_{total} \neq 0$), I define a basis transformation such that to project all the operators to the subspace spanned bay these $\chi$ states. This is the usual truncation of traditional DMRG. For instance: \begin{equation} H_{sys, truncated} = U^{\dagger}_{\chi} H_{sys} U_{\chi}. \end{equation} However, I found that the ground state doesn't have the correct $S^{z}_{tot}$ and the U(1) symmetry loses during the run of DMRG $[H,S^{z}_{tot}] \neq 0$. I truly appreciate any comment.

  • $\begingroup$ I use a Python library developed by Johannes Hauschild and Frank Pollmann which has charge conservation incorporated. In case you are interested: tenpy.readthedocs.io This includes DMRG but also other MPS-related numerical methods (such as TEBD, purification, MPO-time evolution, etc). $\endgroup$ Commented Aug 20, 2021 at 14:44
  • $\begingroup$ Thanks for your comment, @RubenVerresen. Actually my question stems from finding the ground state energy of fermi-Hubbard model. I compare my DMRG code result with TeNPy. For a few sites(N~10), the ground state energy of them match. However, once I keep increasing the size of the system, the ground state energy do not match. The reason of this disagreement may come from the conserved charges of ground state of my code is not the same as TenPy. That's why I am interested in how can ensure the ground state always have the correct charges. Maybe I should look at how Tenpy deal with this issue. $\endgroup$
    – Ricky Pang
    Commented Aug 20, 2021 at 15:30
  • $\begingroup$ Minor comment to the post (v2): Please consider to mention explicitly author, title, etc. of link, so it is possible to reconstruct link in case of link rot. $\endgroup$
    – Qmechanic
    Commented Oct 12, 2023 at 6:46

1 Answer 1


The ITensor library does provide option to ensure that your ground state has $S_z = 0$.

The is DMRG example code in the embedded link where you can study how ITensor works. In the code line which creates the physical sites, put option "conserve_sz=true" so that the obtained ground state has $S_z=0$ if the initial state has $S_z=0$ as well.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.