0 votes
asked by (250 points)

Dear all,

I am using the exthubbard.cc code in the sample folder to calculate ground state of Hubbard model. My question is, if I take a very high value of U1 in exthubbard.cc, i.e. in the limit t/U1 >> 1, does this model gives results corresponding to tJ model (tJ model is the Hubbard model in large on-site interaction limit)?

Sincerely
Sreetama

commented by (70.1k points)
Hi Sreetama, just to clarify your question, is your question:

1. whether the Hamiltonian used in the exthubbard.cc code maps onto the tJ model in the limit of large U1/t ? (So more of a mathematics/physics question, independent of ITensor or DMRG?) or,

2. whether the ITensor DMRG code gives the correct ground state of that Hamiltonian in the large U1/t limit?

Or perhaps you are asking about both questions.

Thanks,
Miles
commented by (250 points)
Hi Miles,

My answers are,

1. The Hamiltonian used in exthubbard.cc (if I ignore t2 and V1), mathematically can be analyzed in second order perturbation in the limit of large U1/t, and thus t-J Hamiltonian is obtained- this is known.

My query is, if I take U1/t to be very large in exthubbard.cc, and calculate the ground state energy, will it match with the ground state energy obtained by directly solving the tJ model Hamiltonian in ITensor? Because I was calculating the behaviour of entanglement in large U1/t limit of exthubbard.cc, and the behaviour was not matching with the one obtained earlier for tJ model.

2. Yes, I meant to ask this question also. Does the exthubbard.cc code can be used to get correct ground state energy in very large U1/t limit?

Thanks a lot,
Sreetama
commented by (70.1k points)
Hi Sreetama, thanks for clarifying. Agreed, I knew about #1 too in general, but wanted to know if you were asking that. As you know, care must be taken when doing this analysis because the resulting tJ Hamiltonian might have some additive constant terms which shift the energy compared with the way the regular tJ Hamiltonian is written down on paper (or not, I'm just saying one has to be careful about this).

Regarding your query and #2, I would have to run some code on my own to check. But a preliminary answer is that as far as we know, as long as it converges ITensor's DMRG does give the correct ground state of any Hamiltonian that is inputted into it. So if it didn't give the energy you expected, there are really only 3 possibilities:
1. you did not really input the Hamiltonian the right way, or it's different from the Hamiltonian you are comparing to
2. the DMRG calculation did not converge
3. there is a bug in ITensor that we don't know about

Scenarios #1 and #2 above are the most likely ones to be true. It's quite possible that your DMRG calculation for the tJ Hamiltonian aren't converging because they are getting stuck due to the choice of initial state and/or not using the noise term (or other reasons). So that's one possibility. It's hard to be sure which of #1 or #2 is happening without seeing your code and doing a more detailed analysis of the situation.

Best,
Miles
commented by (250 points)
Hi Miles,

Thanks for your helpful insights. Below, I have written down the part of the code where I write the hamiltonian, the initial state and the DMRG part.

auto sites = Electron(N);

auto ampo = AutoMPO(sites);
    for(int i = 1; i <= N; ++i)
        {
        ampo += U1,"Nupdn",i;
        }
    for(int b = 1; b < N; ++b)
        {
        ampo += -t1,"Cdagup",b,"Cup",b+1;
        ampo += -t1,"Cdagup",b+1,"Cup",b;
        ampo += -t1,"Cdagdn",b,"Cdn",b+1;
        ampo += -t1,"Cdagdn",b+1,"Cdn",b;
        ampo += V1,"Ntot",b,"Ntot",b+1;
        }

// have set t2=0

    for(int b = 1; b < N-1; ++b)
        {
        ampo += -t2,"Cdagup",b,"Cup",b+2;
        ampo += -t2,"Cdagup",b+2,"Cup",b;
        ampo += -t2,"Cdagdn",b,"Cdn",b+2;
        ampo += -t2,"Cdagdn",b+2,"Cdn",b;
        }
    auto H = toMPO(ampo);

auto state = InitState(sites);
    int p = Npart;
    for(int i = N; i >= 1; --i)
        {
        if(p > i)
            {
            println("Doubly occupying site ",i);
            state.set(i,"UpDn");
            p -= 2;
            }
        else
        if(p > 0)
            {
            println("Singly occupying site ",i);
            state.set(i,(i%2==1 ? "Up" : "Dn"));
            p -= 1;
            }
        else
            {
            state.set(i,"Emp");
            }
        }

    auto psi0 = MPS(state);

auto [energy,psi] = dmrg(H,psi0,sweeps,{"Quiet",quiet});


Let me add that, the ground state energy is not changing when I vary U1/t, above the point U1/t = 1000. So, even for very high value of the ration U1/t, the ground state energy is same as U1/t=1000. i look at the outputs of each swipe and it shows the convergence of energy.

I understand that the problem may not be solvable/answerable from this overview. I appreciate all your efforts and any further comment/insight will be helpful.

Sincerely
sreetama
commented by (70.1k points)
Hi Streetama, thanks for posting the code; that's helpful. I can run the code myself, if need be, but before doing so I can certainly answer some more of your questions.

One of them is about why the energy stops depending on U eventually. The reason for this is almost certainly that the double-occupancy <NupNdn> goes essentially to zero (i.e. the probability that site has two particles on it goes to zero). Since the only term in the Hamiltonian proportional to U is Nup*Ndn, then this term goes to zero in the limit of large U and so the energy becomes independent of U.

Of course there are other ways of writing the Hubbard model where the term proportional to U has a different form; if one maps these other forms of the Hubbard model to this one, they will differ by some additive constant terms depending on U. So there are other Hamiltonians people study which give the same ground-state wavefunction but a different energy, and those Hamiltonians could still have the energy depending on U for large U.

Please let me know if you have some additional questions. Also I want to note that it could be challenging to converge DMRG when U1/t is very large, depending on the initial state you use. This is because such a large term could numerically overshadow the other terms and make the optimization and convergence very slow. So care might be needed. One good approach would be to start with smaller U1/t, like of order 10 first. Then one could take the resulting ground states from these calculations and use them as initial states for calculations with larger U1.

Best,
Miles
commented by (70.1k points)
Hi Sreetama,
Let me ask as a follow-up: could you please write the precise Hubbard and tJ Hamiltonians (just in traditional or Latex notation) which you are expecting to give the same energy? If you could do that it would help me to answer your question. One thing I'm curious about is the convention used in your writing of the Hubbard model to write the interaction term, as there are different conventions in the literature.

Best,
Miles

Please log in or register to answer this question.

Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.

Categories

...