Why nf is defined modulus -1 in sitetype "fermion" "electron"

This is not a problem that affect my using ITensor, but I am curious about this. In sitetypes/fermion.jl and sitetypes/electron.jl, I find that their quantum number are defined by

zer = QN(qnname_nf, 0, -1) => 1
one = QN(qnname_nf, 1, -1) => 1

instead of QN(qnname_nf, 0, 1), QN(qnname_nf, 1, 1) . Is there any special reason? I find this when I define my own site type with conserve QN and I also have to use QN(qnname_nf, 1, -1) so that they are compatible.

The idea behind having the last number (the “modulus”) being negative is that the group or symmetry for fermions is not a regular U(1) but a “fermionic” U(1), which some authors have written as fU(1). So the minus sign is to indicate that. In our code currently, it is just a convenient way to distinguish a fermionic Abelian symmetry from a regular one, and we do use this in our experimental “auto fermion” system. You can see it being checked on the following line of code:
https://github.com/ITensor/ITensors.jl/blob/795042b976729ed79768482e01f2c4d31b6325ff/src/fermions/fermions.jl#L23

I think what you are doing is the recommended approach for now, which is to define your own QN’s that are supposed to be compatible with the ones from our definitions in the same way.

1 Like

Got it. Thanks!

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.