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_xFunction
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 σˣ

source
MPSKitModels.S_yFunction
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 σʸ

source
MPSKitModels.S_zFunction
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 σᶻ

source
MPSKitModels.S_plusFunction
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 σ⁺

source
MPSKitModels.S_minFunction
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 σ⁻

source
MPSKitModels.S_xxFunction
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 σˣˣ

source
MPSKitModels.S_yyFunction
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 σʸʸ

source
MPSKitModels.S_zzFunction
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 σᶻᶻ

source
MPSKitModels.S_plusminFunction
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 σ⁺⁻

source
MPSKitModels.S_minplusFunction
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 σ⁻⁺

source
MPSKitModels.S_exchangeFunction
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 σσ

source

For convenience, the Pauli matrices can also be recovered as $σⁱ = 2 Sⁱ$.

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_XFunction
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.

source
MPSKitModels.potts_ZFunction
potts_Z([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; Q=3)

The Potts Z operator, also known as the clock operator, where Z^q=1.

source
MPSKitModels.potts_ZZFunction
potts_ZZ([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; q=3)

The Potts operator $Z ⊗ Z'$, where $Z^q = 1$.

source
MPSKitModels.potts_fieldFunction
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.

source

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_plusFunction
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.

source
MPSKitModels.a_minFunction
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.

source
MPSKitModels.a_numberFunction
a_number([eltype::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff=5)

The truncated bosonic number operator, with a maximum of cutoff bosons per site.

source

Fermionic operators

Spinless fermions.

MPSKitModels.c_plusFunction
c_plus([elt::Type{<:Number}=ComplexF64]; side=:L)
c⁺([elt::Type{<:Number}=ComplexF64]; side=:L)

Fermionic creation operator.

source
MPSKitModels.c_minFunction
c_min([elt::Type{<:Number}=ComplexF64]; side=:L)
c⁻([elt::Type{<:Number}=ComplexF64]; side=:L)

Fermionic annihilation operator.

source

Spinful fermions.

MPSKitModels.HubbardOperators.e_minplusMethod
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.

source
MPSKitModels.HubbardOperators.e_minplus_downMethod
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.

source
MPSKitModels.HubbardOperators.e_minplus_upMethod
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.

source
MPSKitModels.HubbardOperators.e_plusminMethod
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.

source
MPSKitModels.HubbardOperators.e_plusmin_downMethod
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.

source
MPSKitModels.HubbardOperators.e_plusmin_upMethod
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.

source
MPSKitModels.HubbardOperators.hubbard_spaceFunction
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.

source

TJ-model operators.

MPSKitModels.TJOperators.S_minplusMethod
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 |↓↑⟩ <-- |↑↓⟩.

source
MPSKitModels.TJOperators.S_plusminMethod
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 |↑↓⟩ <-- |↓↑⟩.

source
MPSKitModels.TJOperators.S_xFunction
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.

source
MPSKitModels.TJOperators.S_yFunction
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).

source
MPSKitModels.TJOperators.S_zFunction
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.

source
MPSKitModels.TJOperators.e_minmin_downupMethod
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⟩ <-- |↓↑⟩.

source
MPSKitModels.TJOperators.e_minmin_updownMethod
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⟩ <-- |↑↓⟩.

source
MPSKitModels.TJOperators.e_minplusMethod
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.

source
MPSKitModels.TJOperators.e_minplus_downMethod
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⟩.

source
MPSKitModels.TJOperators.e_minplus_upMethod
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⟩.

source
MPSKitModels.TJOperators.e_numberMethod
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.

source
MPSKitModels.TJOperators.e_number_downMethod
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.

source
MPSKitModels.TJOperators.e_number_holeMethod
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.

source
MPSKitModels.TJOperators.e_number_upMethod
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.

source
MPSKitModels.TJOperators.e_plusminMethod
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.

source
MPSKitModels.TJOperators.e_plusmin_downMethod
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↓⟩.

source
MPSKitModels.TJOperators.e_plusmin_upMethod
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↑⟩.

source
MPSKitModels.TJOperators.e_singletMethod
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)$.

source
MPSKitModels.TJOperators.tj_spaceFunction
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.

source