Operators
There are several different operators defined, which all follow an interface similar to the following:
operator([elt::Type{<:Number}=ComplexF64], [symmetry::Type{<:Sector}=Trivial]; kwargs...)Here, the scalar type of the operator is defined by elt, while the symmetry can be chosen through the symmetry argument. Other parameters are supplied as keywords. The special keyword argument side can be used for operators that require an additional virtual space to satisfy the symmetry constraints, in which case it determines where this auxiliary space is located, either to the left :L (default) or to the right :R.
Spin operators
The spin operators S_x, S_y and S_z are defined such that they obey the spin commutation relations $[S^j, S^k] = i \varepsilon_{jkl} S^l$. Additionally, the ladder operators are defined as $S^{\pm} = S^x \pm i S^y$. Several combinations are defined that act on two spins.
Supported values of symmetry for spin operators are Trivial, Z2Irrep and U1Irrep. When imposing symmetries, by convention we choose S_z as the diagonal operator for $\mathrm{U}(1)$, and S_x as the diagonal operator for $\mathbb{Z}_2$.
MPSKitModels.S_x — Function
S_x([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sˣ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin operator along the x-axis.
See also σˣ.
MPSKitModels.S_y — Function
S_y([eltype::Type{<:Complex}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sʸ([eltype::Type{<:Complex}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin operator along the y-axis.
See also σʸ.
MPSKitModels.S_z — Function
S_z([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sᶻ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin operator along the z-axis. Possible values for symmetry are Trivial, Z2Irrep, and U1Irrep.
See also σᶻ.
MPSKitModels.S_plus — Function
S_plus([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
S⁺([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin plus operator.
See also σ⁺.
MPSKitModels.S_min — Function
S_min([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
S⁻([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin minus operator.
See also σ⁻.
MPSKitModels.S_xx — Function
S_xx([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sˣˣ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin xx exchange operator.
See also σˣˣ.
MPSKitModels.S_yy — Function
S_yy([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sʸʸ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin yy exchange operator.
See also σʸʸ.
MPSKitModels.S_zz — Function
S_zz([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
Sᶻᶻ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin zz exchange operator.
See also σᶻᶻ.
MPSKitModels.S_plusmin — Function
S_plusmin([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
S⁺⁻([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin plusmin exchange operator.
See also σ⁺⁻.
MPSKitModels.S_minplus — Function
S_minplus([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
S⁻⁺([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin minplus exchange operator.
See also σ⁻⁺.
MPSKitModels.S_exchange — Function
S_exchange([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)
SS([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; spin=1 // 2)The spin exchange operator.
See also σσ.
MPSKitModels.spinmatrices — Function
spinmatrices(spin [, eltype])the spinmatrices according to Wikipedia.
For convenience, the Pauli matrices can also be recovered as $σⁱ = 2 Sⁱ$.
MPSKitModels.σˣ — Function
Pauli $x$ operator, defined as $σˣ = 2 ⋅ Sˣ$.
See also Sˣ.
MPSKitModels.σʸ — Function
Pauli $y$ operator, defined as $σʸ = 2 ⋅ Sʸ$.
See also Sʸ.
MPSKitModels.σᶻ — Function
Pauli $z$ operator, defined as $σᶻ = 2 ⋅ Sᶻ$.
See also Sᶻ.
MPSKitModels.σ⁺ — Function
Pauli plus operator, defined as $σ⁺ = 2 ⋅ S⁺$.
See also S⁺.
MPSKitModels.σ⁻ — Function
Pauli minus operator, defined as $σ⁻ = 2 ⋅ S⁻$.
See also S⁻.
MPSKitModels.σˣˣ — Function
Pauli xx operator, defined as $σˣˣ = 4 ⋅ Sˣˣ$.
See also Sˣˣ.
MPSKitModels.σʸʸ — Function
Pauli yy operator, defined as $σʸʸ = 4 ⋅ Sʸʸ$.
See also Sʸʸ.
MPSKitModels.σᶻᶻ — Function
Pauli zz operator, defined as $σᶻᶻ = 4 ⋅ Sᶻᶻ$.
See also Sᶻᶻ.
MPSKitModels.σ⁺⁻ — Function
Pauli plusmin operator, defined as $σ⁺⁻ = 4 ⋅ S⁺⁻$.
See also S⁺⁻.
MPSKitModels.σ⁻⁺ — Function
Pauli minplus operator, defined as $σ⁻⁺ = 4 ⋅ S⁻⁺$.
See also S⁻⁺.
MPSKitModels.σσ — Function
Pauli exchange operator, defined as $σσ = 4 ⋅ SS$.
See also SS.
Q-state Potts operators
The Q-state Potts operators potts_X and potts_Z are defined to fulfill the braiding relation $ZX = \omega XZ$ with $\omega = e^{2\pi i/Q}$.
Supported values of symmetry for the X operator are Trivial and ZNIrrep{Q}, while for the Z operator only Trivial is supported.
MPSKitModels.potts_X — Function
potts_X([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)
potts_field([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)The Potts $X$ operator, also known as the shift operator, where $X^q = 1$.
MPSKitModels.potts_Z — Function
potts_Z([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)The Potts $Z$ operator, also known as the clock operator, where $Z^q = 1$.
MPSKitModels.potts_ZZ — Function
potts_ZZ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)The Potts operator $Z ⊗ Z'$, where $Z^q = 1$.
MPSKitModels.potts_field — Function
potts_X([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)
potts_field([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)The Potts $X$ operator, also known as the shift operator, where $X^q = 1$.
MPSKitModels.weyl_heisenberg_matrices — Function
weyl_heisenberg_matrices(dimension [, eltype])the Weyl-Heisenberg matrices according to Wikipedia.
Bosonic operators
The bosonic creation and annihilation operators a_plus ($a^+$) and a_min ($a^-$) are defined such that the following holds:
\[a^+ \left|n\right> = \sqrt{n + 1} \left|n+1\right>\]
\[a^- \left|n\right> = \sqrt{n} \left|n-1\right>\]
From these, a number operator a_number ($N$) can be defined:
\[N = a^+ a^-\]
\[N\left|n\right> = n \left|n\right>\]
With these, the following commutators can be obtained:
\[\left[a^-, a^+\right] = 1\]
\[\left[N, a^+\right] = a^+\]
\[\left[N, a^-\right] = -a^-\]
Supported values of symmetry for bosonic operators are Trivial and U1Irrep.
MPSKitModels.a_plus — Function
a_plus([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)
a⁺([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)The truncated bosonic creation operator, with a maximum of cutoff bosons per site.
MPSKitModels.a_min — Function
a_min([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)
a⁻([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)The truncated bosonic annihilation operator, with a maximum of cutoff bosons per site.
MPSKitModels.a_number — Function
a_number([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)The truncated bosonic number operator, with a maximum of cutoff bosons per site.
Fermionic operators
Spinless fermions.
MPSKitModels.c_plus — Function
c_plus([elt::Type{<:Number}=ComplexF64]; side=:L)
c⁺([elt::Type{<:Number}=ComplexF64]; side=:L)Fermionic creation operator.
MPSKitModels.c_min — Function
c_min([elt::Type{<:Number}=ComplexF64]; side=:L)
c⁻([elt::Type{<:Number}=ComplexF64]; side=:L)Fermionic annihilation operator.
MPSKitModels.c_number — Function
c_number([elt::Type{<:Number}=ComplexF64])Fermionic number operator.
Spinful fermions.
MPSKitModels.HubbardOperators.e_minplus — Method
e_minplus(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the two-body operator that annihilates a particle at the first site and creates a particle at the second. This is the sum of e_minplus_up and e_minplus_down.
MPSKitModels.HubbardOperators.e_minplus_down — Method
e_minplus_down(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the Hermitian conjugate of e_plusmin_down, i.e. $(e†_{1,↓}, e_{2,↓})† = -e_{1,↓}, e†_{2,↓}$ (note the extra minus sign). It annihilates a spin-down electron at the first site and creates a spin-down electron at the second.
MPSKitModels.HubbardOperators.e_minplus_up — Method
e_minplus_up(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the Hermitian conjugate of e_plusmin_up, i.e. $(e†_{1,↑}, e_{2,↑})† = -e_{1,↑}, e†_{2,↑}$ (note the extra minus sign). It annihilates a spin-up electron at the first site and creates a spin-up electron at the second.
MPSKitModels.HubbardOperators.e_number — Method
e_number(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the one-body operator that counts the number of particles.
MPSKitModels.HubbardOperators.e_number_down — Method
e_number_down(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the one-body operator that counts the number of spin-down electrons.
MPSKitModels.HubbardOperators.e_number_up — Method
e_number_up(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the one-body operator that counts the number of spin-up electrons.
MPSKitModels.HubbardOperators.e_number_updown — Method
e_number_updown(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the one-body operator that counts the number of doubly occupied sites.
MPSKitModels.HubbardOperators.e_plusmin — Method
e_plusmin(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the two-body operator that creates a particle at the first site and annihilates a particle at the second. This is the sum of e_plusmin_up and e_plusmin_down.
MPSKitModels.HubbardOperators.e_plusmin_down — Method
e_plusmin_down(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the two-body operator $e†_{1,↓}, e_{2,↓}$ that creates a spin-down electron at the first site and annihilates a spin-down electron at the second.
MPSKitModels.HubbardOperators.e_plusmin_up — Method
e_plusmin_up(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the two-body operator $e†_{1,↑}, e_{2,↑}$ that creates a spin-up electron at the first site and annihilates a spin-up electron at the second.
MPSKitModels.HubbardOperators.hubbard_space — Function
hubbard_space(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector})Return the local hilbert space for a Hubbard-type model with the given particle and spin symmetries. The possible symmetries are Trivial, U1Irrep, and SU2Irrep, for both particle number and spin.
TJ-model operators.
MPSKitModels.TJOperators.S_exchange — Method
S_exchange(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the spin exchange operator S⋅S.
MPSKitModels.TJOperators.S_min — Method
S_min(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the spin-minus operator.
MPSKitModels.TJOperators.S_minplus — Method
S_minplus(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator S⁻S⁺. The only nonzero matrix element corresponds to |↓↑⟩ <-- |↑↓⟩.
MPSKitModels.TJOperators.S_plus — Method
S_plus(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the spin-plus operator.
MPSKitModels.TJOperators.S_plusmin — Method
S_plusmin(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator S⁺S⁻. The only nonzero matrix element corresponds to |↑↓⟩ <-- |↓↑⟩.
MPSKitModels.TJOperators.S_x — Function
S_x(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body spin-1/2 x-operator on the electrons.
MPSKitModels.TJOperators.S_y — Function
S_y(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body spin-1/2 x-operator on the electrons (only defined for Trivial symmetry).
MPSKitModels.TJOperators.S_z — Function
S_z(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body spin-1/2 z-operator on the electrons.
MPSKitModels.TJOperators.e_minmin_downup — Method
e_minmin_downup(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator $e_{1,↓} e_{2,↑}$ that annihilates a spin-down particle at the first site and a spin-up particle at the second site. The only nonzero matrix element corresponds to |00⟩ <-- |↓↑⟩.
MPSKitModels.TJOperators.e_minmin_updown — Method
e_minmin_updown(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator $e_{1,↑} e_{2,↓}$ that annihilates a spin-up particle at the first site and a spin-down particle at the second site. The only nonzero matrix element corresponds to |00⟩ <-- |↑↓⟩.
MPSKitModels.TJOperators.e_minplus — Method
e_minplus(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator that annihilates a particle at the first site and creates a particle at the second. This is the sum of e_minplus_up and e_minplus_down.
MPSKitModels.TJOperators.e_minplus_down — Method
e_minplus_down(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the Hermitian conjugate of e_plusmin_down, i.e. $(e†_{1,↓}, e_{2,↓})† = -e_{1,↓}, e†_{2,↓}$ (note the extra minus sign). It annihilates a spin-down electron at the first site and creates a spin-down electron at the second. The only nonzero matrix element corresponds to |0↓⟩ <-- |↓0⟩.
MPSKitModels.TJOperators.e_minplus_up — Method
e_minplus_up(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the Hermitian conjugate of e_plusmin_up, i.e. $(e†_{1,↑}, e_{2,↑})† = -e_{1,↑}, e†_{2,↑}$ (note the extra minus sign). It annihilates a spin-up electron at the first site and creates a spin-up electron at the second. The only nonzero matrix element corresponds to |0↑⟩ <-- |↑0⟩.
MPSKitModels.TJOperators.e_number — Method
e_number(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body operator that counts the number of particles.
MPSKitModels.TJOperators.e_number_down — Method
e_number_down(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body operator that counts the number of spin-down electrons.
MPSKitModels.TJOperators.e_number_hole — Method
e_number_hole(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool=false)Return the one-body operator that counts the number of holes.
MPSKitModels.TJOperators.e_number_up — Method
e_number_up(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the one-body operator that counts the number of spin-up electrons.
MPSKitModels.TJOperators.e_plusmin — Method
e_plusmin(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator that creates a particle at the first site and annihilates a particle at the second. This is the sum of e_plusmin_up and e_plusmin_down.
MPSKitModels.TJOperators.e_plusmin_down — Method
e_plusmin_down(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator $e†_{1,↓}, e_{2,↓}$ that creates a spin-down electron at the first site and annihilates a spin-down electron at the second. The only nonzero matrix element corresponds to |↓0⟩ <-- |0↓⟩.
MPSKitModels.TJOperators.e_plusmin_up — Method
e_plusmin_up(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body operator $e†_{1,↑}, e_{2,↑}$ that creates a spin-up electron at the first site and annihilates a spin-up electron at the second. The only nonzero matrix element corresponds to |↑0⟩ <-- |0↑⟩.
MPSKitModels.TJOperators.e_singlet — Method
e_singlet(T, particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the two-body singlet operator $(e_{1,↓} e_{2,↑} - e_{1,↓} e_{2,↑}) / sqrt(2)$.
MPSKitModels.TJOperators.tj_space — Function
tj_space(particle_symmetry::Type{<:Sector}, spin_symmetry::Type{<:Sector}; slave_fermion::Bool = false)Return the local hilbert space for a t-J-type model with the given particle and spin symmetries. The possible symmetries are
- Particle number:
Trivial,U1Irrep; - Spin:
Trivial,U1Irrep,SU2Irrep.
Setting slave_fermion = true switches to the slave-fermion basis.