Dear TeNPy community,
This bothers me for quite a while. Is the basis for the MPS of a fermion chain the occupation-number-representation basis? Or it's just the direct product basis as in a spin chain?
Here's my naive understanding. Although at the start we expand the state of a fermion chain under the occupation-number basis, the Jordan-Wigner transformation of the fermionic Hamiltonian already takes care of the fermionic property so the occupation-number basis is equivalent to the direct product basis.
Am I correct?
Thank you!
Basis for a fermion chain
Re: Basis for a fermion chain
I'm not sure what exactly you mean with "occupation-number-representation basis".
You have a local basis of occupations, e.g. for spin-less fermions just \(|0\rangle, |1\rangle> = c^\dagger |0\rangle\), or for spin-full fermions \(|0\rangle , |\uparrow\rangle \equiv c^\dagger_\uparrow|0\rangle, |\downarrow\rangle \equiv c^\dagger_\downarrow|0\rangle , |2\rangle \equiv c^\dagger\uparrow c^\dagger_\downarrow|0\rangle\).
Note that the local density is diagonal in this basis - a strict requirement if you actually want to conserve N in your TeNPy simulations.
The total (computational) basis is just the product of these local basis states.
Again, note that each of those has a well defined overall particle number, e.g. the basis state \(|0, 1, 1, 0, 1, 0 \rangle \) would have N=3 fermions.
Whenever \(c, c^\dagger\) operators appear in our actual tensors, we make sure that we Jordan-Wigner transform them,
e.g. \(c_i c^\dagger_j \) with \(i < j\) really is written as \(|0_i\rangle \langle 1_i| \prod_{i <=k < l} JW_k |1_j\rangle \langle 0_j| \) with \(JW_k \equiv (-1)^{n_k} \)
This Jordan-Wigner transformation is e.g. done when generating the Hamiltonian, or when calculating correlation functions/expectation values.
Does this answer your question? I hope it clarifies it a bit.
You have a local basis of occupations, e.g. for spin-less fermions just \(|0\rangle, |1\rangle> = c^\dagger |0\rangle\), or for spin-full fermions \(|0\rangle , |\uparrow\rangle \equiv c^\dagger_\uparrow|0\rangle, |\downarrow\rangle \equiv c^\dagger_\downarrow|0\rangle , |2\rangle \equiv c^\dagger\uparrow c^\dagger_\downarrow|0\rangle\).
Note that the local density is diagonal in this basis - a strict requirement if you actually want to conserve N in your TeNPy simulations.
The total (computational) basis is just the product of these local basis states.
Again, note that each of those has a well defined overall particle number, e.g. the basis state \(|0, 1, 1, 0, 1, 0 \rangle \) would have N=3 fermions.
Whenever \(c, c^\dagger\) operators appear in our actual tensors, we make sure that we Jordan-Wigner transform them,
e.g. \(c_i c^\dagger_j \) with \(i < j\) really is written as \(|0_i\rangle \langle 1_i| \prod_{i <=k < l} JW_k |1_j\rangle \langle 0_j| \) with \(JW_k \equiv (-1)^{n_k} \)
This Jordan-Wigner transformation is e.g. done when generating the Hamiltonian, or when calculating correlation functions/expectation values.
Does this answer your question? I hope it clarifies it a bit.