iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

How do I use this algorithm? What does that parameter do?
Post Reply
XiaohanYang
Posts: 3
Joined: 30 Sep 2024, 13:50

iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

Post by XiaohanYang »

Hi everyone,
I am trying to reproduce the result, especially the charge pumping result of arXiv:1407.6985. I directly use the module tenpy.models.haldane.FermionicHaldaneModel since it's just the Hamiltonian eq(1) in arXiv:1407.6985. To be concrete, let me show you the Hamiltonian:
\(H = -t_1\sum_{<ij>}c_i^\dagger c_j-t_2\sum_{<<ij>>}e^{i\phi_{ij}}c_i^\dagger c_j+m\sum_u (n_{u,A}-n_{u, B})+V\sum_{u}n_{u, A}n_{u, B}\)
The geometry is an infinite cylinder with circumference \(L_y\) which is the number of unit cells in the y direction(the finite periodic direction). The unit cell of the uMPS includes \(L_y\) lattice unit cells in a leg(\(2L_y\) sites). I have chosen two parameter dictionaries to reproduce Fig.2. of arXiv:1407.6985. They are:

Code: Select all

# Parameter for \nu=1 Chern Insulator
param_CI = {   "bc_MPS": "infinite",
              	"bc_x": "periodic",
            	"bc_y": "cylinder", 
            	"conserve": "N",
            	"Lx": 1,
           	"Ly": 3,
            	"order": "default",
            	"mu": 0.,
            	"V": 0.0,
            	"t1": -1., # leave t2 to be the default value
           	"phi_ext": phi_ext
        	}
# Parameter for \nu=1/3 Fractional Chern Insulator
param_FCI = {   "bc_MPS": "infinite",
              	"bc_x": "periodic",
            	"bc_y": "cylinder", 
            	"conserve": "N",
            	"Lx": 1,
           	"Ly": 6,
            	"order": "default",
            	"mu": 0.,
            	"V": 1.0,
            	"t1": -1., # leave t2 to be the default value
           	"phi_ext": phi_ext
        	}
        
The filling numbers are 1 fermion per lattice unit cell and 1 fermion per 3 lattice cells. These parameters are the same as the two cases in arXiv:1407.6985. The iDMRG for the Chern insulator case converges well with bond dimension 200 and the expected result has been obtained. For the FCI case, however, the iDMRG shows poor convergence in the suggested bond dimension 500. The errors of both energy and entropy fluctuate and cannot converge.

Since in both cases(CI and FCI) the systems are gapped, I think there is no gaplessness problem. I have tried to increase the interaction \(V\) in the FCI case to avoid competing with the metal phase but it doesn't work.

So, I want some suggestions from people who are familiar with iDMRG implementation or FCI systems.

Sincerely,
Xiaohan Yang
XiaohanYang
Posts: 3
Joined: 30 Sep 2024, 13:50

Re: iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

Post by XiaohanYang »

I give the Two site iDMRG such parameter dictionary:

Code: Select all

dmrg_params = {'mixer': True,
               'mixer_params': {
                    'amplitude': 5.e-5,
                    'decay': 1.1,
                    'disable_after': 100
                }, 
                'trunc_params': {
                    'svd_min': 1.e-10,
                },
                'max_E_err': 1.e-10,
                'max_S_err': 1.e-8,
                'min_sweeps': 10,
                'max_sweeps': 2000,
                'lanczos_params':{
                    'reortho': False, 
                    'N_min':5, 
                    'N_max':500
                },
                'chi_max': 500
            }
XiaohanYang
Posts: 3
Joined: 30 Sep 2024, 13:50

Re: iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

Post by XiaohanYang »

BTW, I found some insight from DHIMAN002's post:viewtopic.php?p=281&hilit=haldane#p281. In his post, Johannes replied that it may be the case that we need a large uMPS unit cell including several legs of the lattice. I have run the finite DMRG with \(L_y=3\) and \(L_x=30\) for both CI and FCI cases. The Fermion density profiles are:
CI:
CI.png
CI.png (170.05 KiB) Viewed 110798 times
FCI:
FCI.png
FCI.png (214.97 KiB) Viewed 110798 times
You can see that CDW-like order exists in the case of FCI, so I wonder whether I need to use a large MPS unit cell in the infinite case. If the bond dimension is increased, will this CDW order be suppressed? When the system is in the FCI phase, does this CDW order always exist?
bart
Posts: 32
Joined: 23 Jan 2019, 09:35

Re: iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

Post by bart »

Hi Xiaohan Yang,

Sorry that this reply is a few months late, but just in case it helps you, I wanted to share my thoughts anyway.

I reproduced the results from arXiv:1407.6985 a few years ago, and so I can understand your difficulty with reproducing Fig.2(c). The good news is that it is possible to reproduce Fig.2(c) using TeNPy, however it is significantly more tricky than the other results that they present.

In the notebook FCIs.ipynb from https://github.com/tenpy/tenpy/pull/146 I explain how to reproduce all of the results in this paper. In particular, for Fig.2(c), I also explain all of the traps that I fell into, when I was struggling to reproduce it.

Broadly speaking, here are the things to watch out for:
  • Is the flow adiabatic?
  • Is the \(L_y\) value appropriate?
  • Does the initial product state make a difference?
  • Is the bond dimension large enough?
In the notebook, I explain the choices for each of these parameters step-by-step. The notebook was tried and tested using TeNPy v0.5.0-261-g81b65eb. I have noticed that the charge pumping is sometimes discontinuous using the same parameters with newer versions of TeNPy, which may be related to https://github.com/tenpy/tenpy/issues/317 . I am not sure if this issue is fixed yet.

If you would like to test the notebook using the TeNPy version that I used (which is guaranteed to work), you can do the following:

Code: Select all

$ git checkout v0.5.0-261-g81b65eb
$ bash ./compile.sh
You can then check that your notebook has the correct version of TeNPy, using the commands:

Python: Select all

import tenpy
tenpy.show_config()
Hope this helps you!
Bart
villodre
Posts: 3
Joined: 02 Jun 2025, 12:35

Re: iDMRG shows poor convergence in the 1/3 FCI phase of Fermionic Haldane Model

Post by villodre »

Hi bart and all,

I have been working for several months on reproducing the arXiv results mentioned in this post, and I am writing to seek help regarding some difficulties I have encountered.

I have spent several weeks working with the provided Jupyter Notebook, but I have been unable to reproduce the reported results. While I can perfectly reproduce the figures corresponding to the Chern insulator case, significant issues arise when I move to the fractional case.
In the fractional regime, the convergence of both energy and entropy remains on the order of 10⁻³, and the computed charge-pumping values appear to be unphysical or meaningless.

I have tested both the latest version of TeNPy and version 0.5, as mentioned in your previous post (NumPy 1.19.5, SciPy 1.5.4). Unfortunately, in neither case do I obtain meaningful or well-converged results.

Regarding the implementation details, I performed part of the calculations by directly running the provided Jupyter Notebook. The part corresponding to TeNPy 0.5 was executed on a computing cluster, since it was not possible to install a NumPy version compatible with TeNPy 0.5 on my local machine.
One relevant observation is that if I change the sign of the hopping parameter t_2, the system converges without issues. In particular, for the case Lx = 1, Ly = 6 with ν=1/3, the results clearly show signatures of an FCI phase, with a very similar charge-pumping graph. However, the overall trend is reversed: instead of a pumped charge of -1 over three periods, I obtain +1, considering the jumps that psi.average_charge sometimes makes in the most recent versions of tenpy.

I have carefully reviewed the Jupyter Notebook multiple times, but I am still unable to reproduce the preloaded figures as provided. Any guidance regarding possible missing steps, sign conventions, or subtle implementation details would be greatly appreciated, as it would greatly help improve my understanding and use of TeNPy.

For completeness, at the end of this message I include an example of the results I obtain when loading the case corresponding to data2 from the Jupyter Notebook (Ly =3), both with and without applying the mod1 operation.

Finally, for context, I am a PhD student at the Donostia International Physics Center (DIPC), working on closely related numerical and theoretical topics. I would greatly appreciate any feedback or suggestions.

Thank you in advance,
Santiago Villodre
Attachments
data2_mod1.png
data2_mod1.png (39.59 KiB) Viewed 878 times
image_pumped_bad.png
image_pumped_bad.png (23.37 KiB) Viewed 878 times
Post Reply