# How to define a new Class for particle like "Parafermions"?

+1 vote

Dear Itensor

Bellow is the list of collection of site objects (" corresponding Hilbert space and local operators"), which is included by default in the Itensor code.

SpinHalf and SpinHalfSite
SpinOne and SpinOneSite
Spinless and SpinlessSite.
Hubbard and HubbardSite
tJ and tJSite. t-J model sites.


how can I extend it, for example the Spinless fermion one, bellow

"Emp" — the vacuum (empty) state
"Occ" — the occupied state (one particle)


into something like this :

"Emp" — the vacuum (empty) state
"Occ1" — the occupied state (one particle)
"Occ2" — the occupied state (two particles)

it means the local dimension is $3\times 3$,
and the particle operator cast as follows:

$N=F^\dagger F+F^\dagger^2+F^2$,
with commutation relations

$[N,F^\dagger]= F^\dagger$
$[N,F]= -F$

many thanks for comments and remarks

Regards

Thanks for the question. Indeed we had designed the site set system for custom cases like parafermions.

Though we have not advertised it very much in the documentation or website, the ITensor library code actually includes a file "mps/sites/Z3.h" which defines a site set called Z3 (made out of a site type Z3Site) which implements Z3 parafermions. You could modify that code fairly straightforwardly to do ZN parafermions.

Here is a link to that code:
https://github.com/ITensor/ITensor/blob/v3/itensor/mps/sites/Z3.h

One thing to note is that the definition of the Tau and Sig (tau and sigma) operators may be flipped from the one you are using, since these conventions differ from paper to paper involving parafermions.

Another very crucial thing to note is that these sites and operators are parafermionic only in a local sense. To properly implement Hamiltonian terms which involve operators acting beyond nearest-neighbor, it's crucial to include non-local strings of "Tau" or "TauDag" operators connecting the interaction operators. This is analogous to how fermions must be implemented using Jordan-Wigner string in ITensor currently.

Finally, note that this same issue about "Tau" string means that the AutoMPO system cannot currently make non-local parafermion Hamiltonians for you. You will need to make a custom Hamiltonian MPO for that. Ideally we are working on a system that will automate all this in the Julia version of ITensor, but I wouldn't expect it to handle parafermions automatically until sometime in late 2021 most likely.

Best regards,
Miles