Python Module model¶
The models constructed in this module provide a the most simplistic entry to openMPS. For designing more sophisticated Hamiltonians, it is necessary to go through the steps of creating the operators and building an MPO on your own.
Details
Pre-built models return the operators, the MPO, and an observable class. The following pre-built models exist.
Quantum Ising model
model.QuantumIsingModel
Bose-Hubbard model
model.BoseHubbardModel
Bilinear-Biquadratic spin-one model:
BilinearBiquadraticModel
- class model._Model[source]¶
Abstract class for any model providing basic functions.
- class model.QuantumIsingModel[source]¶
Build the Hamiltonian including the operators and observables class for the quantum Ising model. After creating an instance of the model, you can call the object like a function and it will return a tuple with the operators, the MPO, and the observables class. The Hamiltonian is defined as:
Arguments
No arguments
Details
We choose the Pauli operators to be diagonal in which allows to use the symmetry in the Ising model. The following string identifiers are defined for each term in the Hamiltonian:
String identifier
Hamiltonian term
J
g
The following operators are built based on the spin operators:
String
Definition
I
Identity
splus
Spin raising (in x-direction)
sminus
Spin lowering (in x-direction)
sz
Pauli-z matrix (not diagonal)
sx
(diagonal)
gen
Generator for (0 and 1 on the diagonal)
- class model.XXXModel[source]¶
Build the Hamiltonian including the operators and observable class for the spin-1/2 XXX model. After creating an instance of the model, you can call the object like a function and it will return a tuple with the operators, the MPO, and the observables class. The Hamiltonian is defined as:
Arguments
No arguments.
Details
The following string identifiers are defined for each term in the Hamiltonian:
String identifier
Hamiltonian term
J
Interaction, i.e., xx-term, yy-term, and zz-term at equal strength.
g
The following operators are built based on the spin operators:
String
Definition
I
Identity
splus
Spin raising (in x-direction)
sminus
Spin lowering (in x-direction)
sz
Spin-z matrix
- class model.XXZModel[source]¶
Build the Hamiltonian including the operators and observable class for the spin-1/2 XXZ model. After creating an instance of the model, you can call the object like a function and it will return a tuple with the operators, the MPO, and the observables class. The Hamiltonian is defined as:
Arguments
No arguments.
Details
The following string identifiers are defined for each term in the Hamiltonian:
String identifier
Hamiltonian term
J
Interaction of xx-term and yy-term at equal strength.
Jz
Interaction of zz-term.
g
The following operators are built based on the spin operators:
String
Definition
I
Identity
splus
Spin raising (in x-direction)
sminus
Spin lowering (in x-direction)
sz
Spin-z matrix
- class model.BoseHubbardModel(nmax=4, chem_pot=False)[source]¶
Build the Hamiltonian including the operators and observables class for the Bose-Hubbard model. After creating an instance of the model, you can call the object like a function and it will return a tuple with the operators, the MPO, and the observables class. The Hamiltonian is defined as:
Arguments
- nmaxint, optional
Maximal number of bosons on one site. (If you need spinful or flavorful bosons, minimal number of bosons, etc., you have to go beyond the default models. Default to 4.
- chem_potboolean, optional
Specifies if the chemical potential term should be included in the Hamiltonian. Default to
False
.
Details
The string identifiers for each Hamiltonian parameters are:
String identifier
Hamiltonian term
J
math:b_{i}^{dagger} b_{i+1} + h.c. (Tunneling)
U
math:n_{i}^2 - n_{i} (On-site interaction)
mu
math:n_{i} (chemical potential)
The following operators are built:
String
Definition
I
Identity
bdagger
Creation operator
b
Annihilation operator
nbtotal
Number operator
interaction
- class model.BilinearBiquadraticModel(symmetry_breaking=False, fix_theta=None, use_symm=False)[source]¶
Build the Hamiltonian including the operators and observables class for the bilinear biquadratic model. After creating an instance of the model, you can call the object like a function and it will return a tuple with the operators, the MPO, and the observables class. The Hamiltonian is defined as:
Arguments
- symmetry_breakingbool, optional
Specifies if a symmetry breaking field should be included in the Hamiltonian. Default to
False
.- fix_thetafloat or None, optional
If
None
(default), the more general Hamiltonian with thirteen bond rules is built. If you know that theta is fix for all simulations (statics and dynamics), you may pass the actual value reducing the problem to nine bond rules.- use_symmbool, optional
We can use the symmetry of the Bilinear biquadratic model. This requires that theta is given. A warning is printed that symmetry is not used if theta is not given.
Details
The string identifiers for each Hamiltonian parameter are:
String identifier
Hamiltonian term
cost
math:vec{S}_{i} vec{S}_{i+1}
sint
math:left( vec{S}_{i} vec{S}_{i+1} right)^2
D
math:left( S_{i}^{z} right)^2
Delta
math:S_{1}^{z}
The following operators are built.
String
Definition
Comments
I
Identity
splus
Spin raising
sminus
Spin lowering
sz
Spin z
sx
Only without symmetry
sy1
Only without symmetry
sy2
Only without symmetry
sx2
Only without symmetry
sy2
Only without symmetry
sz2
sxz
Only without symmetry
sxy1
Only without symmetry
sxy2
Only without symmetry
szy1
Only without symmetry
szy2
Only without symmetry