Thanks for linking to https://itensor.discourse.group/t/proper-way-to-construct-fermion-gates/172: afaict it doesn’t solve my problem, but it is a help!
I’m a little confused—where does OpSum
come into it? AFAICT the only ITensor functions I’ve used are MPS
, op
and apply
, and it’s not obvious to me that any of those is going to call OpSum
.
Also, you write
once [I] write
c1 = op("c", ss[1])
, thenc1
is an ITensor and has no knowledge of being fermionic as it has no QNs. The strings are handled at an operator level, soOpSum
and some ofcorrelation_matrix
can insert JW strings.
I’m a little confused by this. It doesn’t seem consistent with Miles’ comment in that other thread that apply
automatically handles the JW string. It also doesn’t seem consistent with the observed behavior: in the code I posted, applying c
or cdag
- changes the link indices at the site at which I apply it, and
- changes tensors at other sites by multiplying in a sign.
(You can see both of these in the output in my original question.) Is this really the expected behavior for multiplying in an ITensor that doesn’t know anything about JW strings?
Again I’m probably missing something basic?