MPOEnvironment¶
full name: tenpy.networks.mpo.MPOEnvironment
parent module:
tenpy.networks.mpo
type: class
Inheritance Diagram
Methods
|
Initialize self. |
Delete stored part strictly to the left of site i. |
|
Delete storde part scrictly to the right of site i. |
|
|
(doesn’t make sense) |
Calculate the energy by a full contraction of the network. |
|
|
Calculate LP at given site from nearest available one (including i). |
Return number of physical sites in the contractions of get_LP(i). |
|
|
Calculate RP at given site from nearest available one (including i). |
Return number of physical sites in the contractions of get_RP(i). |
|
Return data for (re-)initialization. |
|
Build initial left part |
|
Build initial right part |
|
|
Store part to the left of site i. |
|
Store part to the right of site i. |
Sanity check, raises ValueErrors, if something is wrong. |
-
class
tenpy.networks.mpo.
MPOEnvironment
(bra, H, ket, init_LP=None, init_RP=None, age_LP=0, age_RP=0)[source]¶ Bases:
tenpy.networks.mps.MPSEnvironment
Stores partial contractions of \(<bra|H|ket>\) for an MPO H.
The network for a contraction \(<bra|H|ket>\) of an MPO H bewteen two MPS looks like:
| .------>-M[0]-->-M[1]-->-M[2]-->- ... ->--. | | | | | | | | ^ ^ ^ | | | | | | | | LP[0] ->-W[0]-->-W[1]-->-W[2]-->- ... ->- RP[-1] | | | | | | | | ^ ^ ^ | | | | | | | | .------<-N[0]*-<-N[1]*-<-N[2]*-<- ... -<--.
We use the following label convention (where arrows indicate qconj):
| .-->- vR vL ->-. | | | | LP->- wR wL ->-RP | | | | .--<- vR* vL* -<-.
To avoid recalculations of the whole network e.g. in the DMRG sweeps, we store the contractions up to some site index in this class. For
bc='finite','segment'
, the very left and right partLP[0]
andRP[-1]
are trivial and don’t change in the DMRG algorithm, but for iDMRG (bc='infinite'
) they are also updated (by inserting another unit cell to the left/right).The MPS bra and ket have to be in canonical form. All the environments are constructed without the singular values on the open bond. In other words, we contract left-canonical A to the left parts LP and right-canonical B to the right parts RP.
- Parameters
bra (
MPS
) – The MPS to project on. Should be given in usual ‘ket’ form; we call conj() on the matrices directly.H (
MPO
) – The MPO sandwiched between bra and ket. Should have ‘IdL’ and ‘IdR’ set on the first and last bond.ket (
MPS
) – The MPS on which H acts. May be identical with bra.init_LP (
None
|Array
) – Initial very left partLP
. IfNone
, build trivial one with :meth`init_LP`.init_RP (
None
|Array
) – Initial very right partRP
. IfNone
, build trivial one withinit_RP()
.age_LP (int) – The number of physical sites involved into the contraction yielding firstLP.
age_RP (int) – The number of physical sites involved into the contraction yielding lastRP.
-
get_LP
(i, store=True)[source]¶ Calculate LP at given site from nearest available one (including i).
The returned
LP_i
corresponds to the following contraction, where the M’s and the N’s are in the ‘A’ form:| .-------M[0]--- ... --M[i-1]--->- 'vR' | | | | | LP[0]---W[0]--- ... --W[i-1]--->- 'wR' | | | | | .-------N[0]*-- ... --N[i-1]*--<- 'vR*'
- Parameters
- Returns
LP_i – Contraction of everything left of site i, with labels
'vR*', 'wR', 'vR'
for bra, H, ket.- Return type
-
get_RP
(i, store=True)[source]¶ Calculate RP at given site from nearest available one (including i).
The returned
RP_i
corresponds to the following contraction, where the M’s and the N’s are in the ‘B’ form:| 'vL' ->---M[i+1]-- ... --M[L-1]----. | | | | | 'wL' ->---W[i+1]-- ... --W[L-1]----RP[-1] | | | | | 'vL*' -<---N[i+1]*- ... --N[L-1]*---.
- Parameters
- Returns
RP_i – Contraction of everything right of site i, with labels
'vL*', 'wL', 'vL'
for bra, H, ket.- Return type
-
full_contraction
(i0)[source]¶ Calculate the energy by a full contraction of the network.
The full contraction of the environments gives the value
<bra|H|ket> / (norm(|bra>)*norm(|ket>))
, i.e. if bra is ket and normalized, the total energy. For this purpose, this function contractsget_LP(i0+1, store=False)
andget_RP(i0, store=False)
.- Parameters
i0 (int) – Site index.
-
get_LP_age
(i)[source]¶ Return number of physical sites in the contractions of get_LP(i).
Might be
None
.
-
get_RP_age
(i)[source]¶ Return number of physical sites in the contractions of get_RP(i).
Might be
None
.
-
get_initialization_data
()[source]¶ Return data for (re-)initialization.
The returned parameters are collected in a dictionary with the following names.
- Returns
init_LP, init_RP (
Array
) – LP on the left of site 0 and RP on the right of siteL-1
, which can be used as init_LP and init_RP for the initialization of a new environment.age_LP, age_RP (int) – The number of physical sites involved into the contraction yielding init_LP and init_RP, respectively.