Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fermionic creation and annihilation operators (c+, c, n) #7

Closed
HumpyBlumpy opened this issue Apr 17, 2023 · 1 comment
Closed

fermionic creation and annihilation operators (c+, c, n) #7

HumpyBlumpy opened this issue Apr 17, 2023 · 1 comment

Comments

@HumpyBlumpy
Copy link

Hi,

I noticed the overview says "fermionic creation and annihilation operators (c+, c, n)" are defined and exported but I could not find them.
I found electron_plusmin and the like but it is not obvious what those are (spinful fermions?).
I am interested in spinless fermion operators without any symmetries.
Or should I simply be doing Jordan-Wigner and using spins?

lkdvos added a commit that referenced this issue Apr 25, 2023
fix fermionic creation and annihilation operators (c+, c, n) #7
@lkdvos
Copy link
Member

lkdvos commented Apr 25, 2023

Hi!

Indeed, this was still on the todo list. eletron_plusmin should be spin half fermions, in order to mimic the behaviour of electrons. I have added spinless fermion operators, do I must warn you, it seems hard to find a natural definition. In particular, I warn for the following:

using MPSKitModels, TensorKit, Test
@tensor begin
    term1[a; b] := ccdag()[a, i; i, b]
    term2[a; b] := cdagc()[a, i; i, b]
end
@test term1 + term2  id(domain(term))
using MPSKitModels, TensorKit, Test
@tensor begin
    term1[a; b] := ccdag()[i, a; b, i]
    term2[a; b] := cdagc()[i, a; b, i]
end
@test term1 + term2  -id(domain(term)) # note the minus!

I.e. while TensorKit provides a consistent framework to work with fermions, thinking of these as single creation and annihilation operators becomes confusing rather quickly. I think the main issue lies in how to define daggers, in the sense that I cannot seem to find a consistent way to make sure that for example $(c_i c_j^\dagger)^\dagger =c_i^\dagger c_j$ without breaking the anticommutation relations. If you have any thoughts or ideas on this, feel free to comment, but otherwise, I think the current implementation is the best I can do

@lkdvos lkdvos closed this as completed in 367923f Jul 4, 2023
lkdvos added a commit that referenced this issue Jul 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants