Non-interacting fermions
Overview
In many-body physics, we often look for good approximations of complicated interacting models so that we can obtain analytical tools for calculating relevant physical properties. In the context of fermionic many-body systems, non-interacting fermionic models are often used as a basis to construct such approximations.
A prelude on fermions
Fermionic particles
Fermions are a class of quantum particles defined by their obedience to the Pauli exclusion principle.
The Pauli exclusion principle states that identical fermionic particles can never occupy the same physical quantum state. This contrasts with bosons, which can accumulate in the same state without restriction.
An example of a fermion is the electron which has total spin .
Any fermionic particle must have a half-integer total spin. The quantum spin of a particle is an intrinsic property, just as electric charge is an intrinsic property.
In first quantization, to describe a system of fermions one first defines a relevant basis of functions where labels the different states the fermion can occupy. The wave function corresponding to having a fermion in each state can be written as
where is the number of fermions, is the position coordinate of the particle and is a function whose structure is discussed below.
Identical fundamental particles are indistinguishable from one another. As a consequence the coordinates cannot be tied to any specific fermionic particle. The function must be chosen such that exchanging a pair of position labels keeps the wave function invariant up to an unobservable global phase.
Taking to be the operator which exchanges the position labels and , it then holds that for fermions
where we see that the acquired phase is .
The reason for the negative phase is tied to the Pauli exclusion principle. Indeed, if fermion and were in the same state, then exchanging the fermions keeps the wave function invariant which then implies and thus , so no fermions can occupy the same state as expected.
The only possible form of which satisfies the above constraints is given by
where labels the possible permutations of the state indices and is the sign of the permutation ( if it can be constructed from an even number of pairwise permutations, otherwise). More complicated fermionic states are obtained by taking linear superpositions of the function evaluated with different states and potentially different number of particles if the state describes a situation in which the number of fermions is not fixed.
The Fock space
Albeit possible to work exclusively with wave functions, a more convenient way to describe systems with multiple fermions is instead to use a framework that captures the possible states of the fermions together with the occupation of each available state. This can be achieved by defining the so-called Fock space. In this representation, the available states are labeled where is the total number of states. A many-body fermionic configuration can then be represented as where (correspondingly occupied or unoccupied) is the occupation number of the corresponding state . The states are in one to one correspondence with the states discussed above. As an example, suppose and , then we have that
Fermionic operators
Now that we have a way of describing the available states the fermions can be in, the natural next step is to introduce operators that can change the occupancy of the available states. Since the only relevant information to describe a system of fermions is the occupancy of the available states, we introduce corresponding creation and annihilation operators and which respectively add or remove a fermion from the state . Sums of products of these operators alone is sufficient to describe the dynamics of any system of fermions since any physical process can be viewed as an update rule for the population of the available fermionic states. Any Fock state can be represented in terms of these operators as
where is the vacuum state (the state for which ). The action of the creation and annihilation operators on any Fock states is given by
The creation and annihilation operators correspond to the physical process of adding a fermion in the specified state to the many-body wave function in such a way that the resulting state continues to respect the Pauli exclusion principle and does not break the indistinguishably property. This in turn enforces the following anti-commutation relations
Quadratic fermionic models
A system of fermions is said to be quadratic whenever the Hamiltonian can be written down as a sum of pairs of creation and annihilation operators.
where A is a hermitian matrix and B is an antisymmetric matrix. Quadratic models are characterized by the absence of interaction terms.
An interacting Hamiltonian would include terms such as which here represents an interaction between two fermionic particles.
Quadratic Hamiltonians can always be diagonalized with a Bogoliubov–de Gennes transformation.
In an upcoming feature, we introduce support for interacting with quadratic fermionic models together with an expansion of this concept.
The single-particle sector
Often, a relevant first step in studying a many-body fermionic quantum system is to solve the single-particle problem by using some heuristics to replace interacting terms by an effective potential in the original Hamiltonian. A generic single-particle fermionic Hamiltonian can be expressed as
In aleph and everywhere in the documentation, we refer to operators that only involve hopping terms as free, in analogy to a particle which is free to roam around in a potential landscape.
The matrix is a Hermitian matrix when the above representation represents a Hamiltonian. By relaxing the hermitian constraint, the above equation can be used to represent any operator whose action on states is non-trivial only in the single-particle sector.
The single-particle sector is characterized by the property . Terms such as violate particle conservation and so do not appear in the single-particle Hamiltonian. Furthermore, any fermionic operator involving a product of terms acting on more than one fermion vanishes in the single-particle sector.
From the form of , it is clear that single-particle Hamiltonians are a subset of the more general quadratic fermionic models. The additional structure provided by the single-particle constraint can be leveraged to represent both the states and the Hamiltonian efficiently. First, we note that any fermionic state containing only one fermion can be written down as
where . As such, one may represent a single-particle state with a vector of coefficients . In aleph, such a representation can be created as follows
// 12 possible modes for the fermionic particle
var L = 12;
// specify the state vector options to produce a single-particle state vector
var options = as_fermion | as_singleparticle | as_real
//Set a randomized normalized state
var sp_state = state_vector(L, options)
sp_state.set_random()
sp_state.normalize()
//Extract the probability to find the state in a given mode
var mode = 3
var prob_occupied = abs(sp_state[mode])**2 // Yields the probability to find the state in the third fermionic mode
The resulting state vector stores coefficients whose amplitudes squared correspond to the probability to find the fermionic particle in the specified mode.
Single-particle state vectors are most useful when used with operators that represent a set of single-particle operations. As discussed above, any single-particle operator can be described with a matrix of size by . In aleph, a single-particle operator can be created either by directly specifying the matrix or by constructing the single-particle operator from a sum of operators which individually act non-trivially on the single-particle sector.
// Similar set-up as above
var L = 4;
var options = as_fermion | as_singleparticle | as_real
var sp_state = state_vector(L, options)
sp_state.set_random()
sp_state.normalize()
// Create a single-particle operator from a matrix
{
var sp_representation = operator_free(matrix([[1,1,0,0],[1,1,0,0],[0,0,1,0],[0,0,0,1]]), options) // Represents Number(0) + Number(1) + Number(3) + Hop(0,1)
// Basic operations on state vectors
sp_representation >> sp_state
sp_representation * sp_state
}
// Create a single-particle operator from an operator sum
{
var op_sum = Number(0) + Number(1) + Hop(1,2) + Number(3) + Hop(0,1)
var sp_representation = operator_free(op_sum, options)
// Basic operations on state vectors
sp_representation >> sp_state
sp_representation * sp_state
}
Further Reading
- For a more in depth example of what can be done with single-particle operators, stay tuned for the upcoming tutorial on how to use the functionalities of operator_free.