+1 vote
asked by (340 points)
edited by

In the page on Jordan-Wigner strings, it says

Even though AutoMPO will produce a correct MPO, if you use this MPO in DMRG, for example, to find a ground state of a fermionic system, when measuring correlation functions such as @@⟨c_i^\dagger c_j⟩@@ it is still required that you insert the necessary Jordan-Wigner string operators yourself.

I don't understand this. If I do something like

auto ampo = AutoMPO(sites);
auto mpo = MPO(ampo);
auto answer = overlap(psi,mpo,psi);

will this not give the correct answer automatically? I thought the whole point of AutoMPO was that it generated the exact right thing for fermions.

Or am I misinterpreting something?


1 Answer

+1 vote
answered by (70.1k points)
selected by
Best answer

Hi, good question but it was basically just some writing that was unclear. I just made a small edit to that page.

What it now says is "when measuring a correlation function... not using an MPO made by AutoMPO". The thinking here is that generally you don't want to use MPOs to measure correlation functions because it is much more efficient to follow the procedure on this page:
Generalizing this procedure to fermionic operators requires putting F operators on the sites between the c and c^dagger.

If you do use MPOs generated by AutoMPO everything is fine. It's a good way to test the more efficient procedure linked above.

Also if you make your own MPO "by hand" then you also need to put in string operators in the sense of the finite-state automata picture of MPOs as generating sums of operators of the form XYYYYYZ (usually Y is the identity but for fermionic operators X and Z it should be the Jordan-Wigner string operator F).

commented by (340 points)
Hi Miles, thanks for the answer! If I define two fermionic MPOs using AutoMPO and then apply them each to my wavefunction, or do Overlap(psi,MPO1,MPO2,psi), do the commutation relations still all work? Let's say MPO1 and MPO2 act on different parts of my chain. Thanks!
commented by (70.1k points)
Yes all the commutation relations should be correct automatically in that case. (As an implementation note the MPOs created by AutoMPO have Jordan-Wigner string inside them.)

So it's a good way to check your own hand-written correlation function code, or a convenient option when you don't need to use the absolute quickest approach.
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.