Hi Jin,
Thanks for pointing out this issue. Indeed, it seems like AutoMPO in ITensor v3 is creating the wrong MPO when QNs are not conserved in this case. For example, here are the Hamiltonians made by AutoMPO for N = 2 (the MPO tensors are contracted together to get the full Hamiltonian):
ITensor v3, no QNs conserved:
H(1)*H(2) =
ITensor ord=4: (2|id=794|n=1,Site,Fermion)' (2|id=794|n=1,Site,Fermion) (2|id=230|n=2,Site,Fermion) (2|id=230|n=2,Site,Fermion)'
{norm=1.41 (Dense Real)}
(2,1,2,1) -1.000000
(1,2,1,2) 1.0000000
ITensor v2, no QNs conserved:
H.A(1)*H.A(2) =
ITensor r=4: ("Spinless 1",2,Site|573)' ("Spinless 1",2,Site|573) ("Spinless 2",2,Site|989) ("Spinless 2",2,Site|989)'
{norm=1.41 (Dense Real)}
(2,1,2,1) -1.000000
(1,2,1,2) -1.000000
When QNs are conserved, they both give the same correct Hamiltonian. It looks like in v3 when QNs are not conserved, the Fermion sign is not being put in correctly when the "Cdag" and "C" operators are being used, we will look into this.
Cheers,
Matt