Models
(1+1)-dimensional Quantum Hamiltonians
MPSKitModels.transverse_field_ising
— Functiontransverse_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
— Functionkitaev_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.heisenberg_XXX
— Functionheisenberg_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
— Functionheisenberg_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
— Functionheisenberg_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
— Functionbilinear_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.hubbard_model
— Functionhubbard_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
— Functionbose_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.
MPSKitModels.quantum_chemistry_hamiltonian
— Functionquantum_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
— Functionclassical_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
— Functionsixvertex([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
— Functionhard_hexagon([elt::Type{<:Number}=ComplexF64])
MPO for the partition function of the two-dimensional hard hexagon model.
MPSKitModels.qstate_clock
— Functionqstate_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.