Models
(1+1)-dimensional Quantum Hamiltonians
MPSKitModels.transverse_field_ising — Function
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.
MPSKitModels.kitaev_model — Function
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.
MPSKitModels.quantum_potts — Function
quantum_potts([elt::Type{<:Number}], [symmetry::Type{<:Sector}],
[lattice::AbstractLattice]; q=3, J=1.0, g=1.0)MPO for the hamiltonian of the quantum Potts model, as defined by
\[H = - J \sum_{\langle i,j \rangle} Z_i^\dagger Z_j + Z_i Z_j^\dagger - g \sum_i (X_i + X_i^\dagger)\]
where the operators $Z$ and $X$ are the $q$-rotation operators satisfying $Z^q = X^q = 1$ and $ZX = \omega XZ$ where $\omega = e^{2πi/q}$.
MPSKitModels.heisenberg_XXX — Function
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.
MPSKitModels.heisenberg_XXZ — Function
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.
MPSKitModels.heisenberg_XYZ — Function
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.
MPSKitModels.bilinear_biquadratic_model — Function
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.
MPSKitModels.tj_model — Function
tj_model([elt::Type{<:Number}], [particle_symmetry::Type{<:Sector}],
[spin_symmetry::Type{<:Sector}], [lattice::AbstractLattice];
t, J, mu, slave_fermion::Bool=false)MPO for the hamiltonian of the t-J model, as defined by
\[H = -t \sum_{\langle i,j \rangle, \sigma} (\tilde{e}^\dagger_{i,\sigma} \tilde{e}_{j,\sigma} + h.c.) + J \sum_{\langle i,j \rangle}(\mathbf{S}_i \cdot \mathbf{S}_j - \frac{1}{4} n_i n_j) - \mu \sum_i n_i\]
where $\tilde{e}_{i,\sigma}$ is the electron operator with spin $\sigma$ restrict to the no-double-occupancy subspace.
MPSKitModels.hubbard_model — Function
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.
MPSKitModels.bose_hubbard_model — Function
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) - \mu \sum_i 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 (halfinteger) particle number density n can be imposed.
MPSKitModels.quantum_chemistry_hamiltonian — Function
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.
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
(2+0)-dimensional Statistical Mechanics
MPSKitModels.classical_ising — Function
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$.
MPSKitModels.sixvertex — Function
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.
MPSKitModels.hard_hexagon — Function
hard_hexagon([elt::Type{<:Number}=ComplexF64])MPO for the partition function of the two-dimensional hard hexagon model.
MPSKitModels.qstate_clock — Function
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.