Models

(1+1)-dimensional Quantum Hamiltonians

MPSKitModels.transverse_field_isingFunction
transverse_field_ising([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
                       [lattice::AbstractLattice]; J=1.0, g=1.0)

MPO for the hamiltonian of the one-dimensional Transverse-field Ising model, as defined by

\[H = -J\left(\sum_{\langle i,j \rangle} \sigma^z_i \sigma^z_j + g \sum_{i} \sigma^x_i \right)\]

where the $\sigma^i$ are the spin-1/2 Pauli operators. Possible values for the symmetry are Trivial, Z2Irrep or FermionParity.

By default, the model is defined on an infinite chain with unit lattice spacing, with Trivial symmetry and with ComplexF64 entries of the tensors.

source
MPSKitModels.kitaev_modelFunction
kitaev_model([elt::Type{<:Number}], [lattice::AbstractLattice];
             t=1.0, mu=1.0, Delta=1.0)

MPO for the hamiltonian of the Kitaev model, as defined by

\[H = \sum_{\langle i,j \rangle} \left(-\frac{t}{2}(c_i^+ c_j^- + c_j^+c_i^-) + \frac{Δ}{2}(c_i^+c_j^+ + c_j^-c_i^-) \right) - \mu \sum_{i} c_i^+ c_i^-\]

By default, the model is defined on an infinite chain with unit lattice spacing and with ComplexF64 entries of the tensors.

source
MPSKitModels.heisenberg_XXXFunction
heisenberg_XXX([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
                       [lattice::AbstractLattice]; J=1.0, spin=1)

MPO for the hamiltonian of the isotropic Heisenberg model, as defined by

\[H = J \sum_{\langle i,j \rangle} \vec{S}_i \cdot \vec{S}_j\]

where $\vec{S} = (S^x, S^y, S^z)$.

By default, the model is defined on an infinite chain with unit lattice spacing, without any symmetries and with ComplexF64 entries of the tensors.

See also heisenberg_XXZ and heisenberg_XYZ.

source
MPSKitModels.heisenberg_XXZFunction
heisenberg_XXZ([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
               [lattice::AbstractLattice]; J=1.0, Delta=1.0, spin=1)

MPO for the hamiltonian of the XXZ Heisenberg model, as defined by

\[H = J \left( \sum_{\langle i,j \rangle} S_i^x S_j^x + S_i^y S_j^y + \Delta S_i^z S_j^z \right)\]

By default, the model is defined on an infinite chain with unit lattice spacing, without any symmetries and with ComplexF64 entries of the tensors.

source
MPSKitModels.heisenberg_XYZFunction
heisenberg_XYZ([elt::Type{<:Number}], [lattice::AbstractLattice];
    Jx=1.0, Jy=1.0, Jz=1.0, spin=1)

MPO for the hamiltonian of the XYZ Heisenberg model, defined by

\[H = \sum_{\langle i,j \rangle} \left( J^x S_i^x S_j^x + J^y S_i^y S_j^y + J^z S_i^z S_j^z \right)\]

By default, the model is defined on an infinite chain with unit lattice spacing and with ComplexF64 entries of the tensors.

source
MPSKitModels.bilinear_biquadratic_modelFunction
bilinear_biquadratic_model([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
                           [lattice::AbstractLattice]; spin=1, J=1.0, θ=0.0)

MPO for the hamiltonian of the bilinear biquadratic Heisenberg model, as defined by

\[H = J \sum_{\langle i,j \rangle} \left(\cos(\theta) \vec{S}_i \cdot \vec{S}_j + \sin(\theta) \left( \vec{S}_i \cdot \vec{S}_j \right)^2 \right)\]

where $\vec{S} = (S^x, S^y, S^z)$.

By default, the model is defined on an infinite chain with unit lattice spacing, without any symmetries and with ComplexF64 entries of the tensors.

source
MPSKitModels.hubbard_modelFunction
hubbard_model([elt::Type{<:Number}], [particle_symmetry::Type{<:Sector}],
              [spin_symmetry::Type{<:Sector}], [lattice::AbstractLattice];
              t, U, mu, n)

MPO for the hamiltonian of the Hubbard model, as defined by

\[H = -t \sum_{\langle i,j \rangle} \sum_{\sigma} \left( e_{i,\sigma}^+ e_{j,\sigma}^- + c_{i,\sigma}^- c_{j,\sigma}^+ \right) + U \sum_i n_{i,\uparrow}n_{i,\downarrow} - \sum_i \mu n_i\]

where $\sigma$ is a spin index that can take the values $\uparrow$ or $\downarrow$ and $n$ is the fermionic number operator e_number.

By default, the model is defined on an infinite chain with unit lattice spacing, without any symmetries and with ComplexF64 entries of the tensors. If the particle_symmetry is not Trivial, a fixed particle number density n can be imposed.

source
MPSKitModels.bose_hubbard_modelFunction
bose_hubbard_model([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
                   [lattice::AbstractLattice];
                   cutoff, t, U, mu, n)

MPO for the hamiltonian of the Bose-Hubbard model, as defined by

\[H = -t \sum_{\langle i,j \rangle} \left( a_{i}^+ a_{j}^- + a_{i}^- a_{j}^+ \right) - \sum_i \mu N_i + \frac{U}{2} \sum_i N_i(N_i - 1).\]

where $N$ is the bosonic number operator a_number.

By default, the model is defined on an infinite chain with unit lattice spacing, without any symmetries and with ComplexF64 entries of the tensors. The Hilbert space is truncated such that at maximum of cutoff bosons can be at a single site. If the symmetry is not Trivial, a fixed particle number density n can be imposed.

source
MPSKitModels.quantum_chemistry_hamiltonianFunction
quantum_chemistry_hamiltonian(E0::Number, K::AbstractMatrix{<:Number}, V::AbstractArray{<:Number,4}, [elt::Type{<:Number}=ComplexF64])

MPO for the quantum chemistry Hamiltonian, with kinetic energy $K$ and potential energy $V$. The Hamiltonian is given by

\[H = E0 + \sum_{i,j} \sum_s K[i,j] e_{i,s}^{+} e_{j,s}^{-} + \sum_{i,j,k,l} \sum_{s,t} V[i,j,k,l] e_{i,s}^{+} e_{j,t}^{+} e_{k,t}^{-} e_{l,s}^{-}\]

where $s$ and $t$ are spin indices, which can be $\uparrow$ or $\downarrow$. The full hamiltonian has U₁ ⊠ SU₂ ⊠ FermionParity symmetry.

Note

This should not be regarded as state-of-the-art quantum chemistry DMRG code. It is only meant to demonstrate the use of MPSKit for quantum chemistry. In particular:

  • No attempt was made to incorporate spacegroup symmetries
  • MPSKit does not contain many required algorithms in quantum chemistry (orbital ordering/optimization)
  • MPOHamiltonian is not well suited for quantum chemistry
source

(2+0)-dimensional Statistical Mechanics

MPSKitModels.classical_isingFunction
classical_ising([elt::Type{<:Number}=ComplexF64], [symmetry::Type{<:Sector}=Trivial];
                beta=log(1+sqrt(2))/2)

MPO for the partition function of the two-dimensional classical Ising model, defined as

\[\mathcal{Z}(\beta) = \sum_{\{s\}} \exp(-\beta H(s)) \text{ with } H(s) = \sum_{\langle i, j \rangle} s_i s_j \]

where each classical spin can take the values $s = \pm 1$.

source
MPSKitModels.sixvertexFunction
sixvertex([elt::Type{<:Number}=ComplexF64], [symmetry::Type{<:Sector}=Trivial];
          a=1.0, b=1.0, c=1.0)

MPO for the partition function of the two-dimensional six vertex model.

source
MPSKitModels.hard_hexagonFunction
hard_hexagon([elt::Type{<:Number}=ComplexF64])

MPO for the partition function of the two-dimensional hard hexagon model.

source
MPSKitModels.qstate_clockFunction
qstate_clock([elt::Type{<:Number}=ComplexF64], [symmetry::Type{<:Sector}=Trivial]; beta::Number=1.0, q::Integer=3)

MPO for the partition function of the two-dimensional discrete clock model with $q$ states.

source