MPOEnvironment

  • full name: tenpy.networks.mpo.MPOEnvironment

  • parent module: tenpy.networks.mpo

  • type: class

Inheritance Diagram

Inheritance diagram of tenpy.networks.mpo.MPOEnvironment

Methods

MPOEnvironment.__init__(bra, H, ket[, …])

Initialize self.

MPOEnvironment.del_LP(i)

Delete stored part strictly to the left of site i.

MPOEnvironment.del_RP(i)

Delete storde part scrictly to the right of site i.

MPOEnvironment.expectation_value(ops[, …])

(doesn’t make sense)

MPOEnvironment.full_contraction(i0)

Calculate the energy by a full contraction of the network.

MPOEnvironment.get_LP(i[, store])

Calculate LP at given site from nearest available one (including i).

MPOEnvironment.get_LP_age(i)

Return number of physical sites in the contractions of get_LP(i).

MPOEnvironment.get_RP(i[, store])

Calculate RP at given site from nearest available one (including i).

MPOEnvironment.get_RP_age(i)

Return number of physical sites in the contractions of get_RP(i).

MPOEnvironment.get_initialization_data()

Return data for (re-)initialization.

MPOEnvironment.init_LP(i)

Build initial left part LP.

MPOEnvironment.init_RP(i)

Build initial right part RP for an MPS/MPOEnvironment.

MPOEnvironment.set_LP(i, LP, age)

Store part to the left of site i.

MPOEnvironment.set_RP(i, RP, age)

Store part to the right of site i.

MPOEnvironment.test_sanity()

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 part LP[0] and RP[-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 part LP. If None, build trivial one with :meth`init_LP`.

  • init_RP (None | Array) – Initial very right part RP. If None, build trivial one with init_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.

H

The MPO sandwiched between bra and ket.

Type

MPO

test_sanity()[source]

Sanity check, raises ValueErrors, if something is wrong.

init_LP(i)[source]

Build initial left part LP.

Parameters

i (int) – Build LP left of site i.

Returns

init_LP – Identity contractible with the vL leg of .ket.get_B(i), multiplied with a unit vector nonzero in H.IdL[i], with labels 'vR*', 'wR', 'vR'.

Return type

Array

init_RP(i)[source]

Build initial right part RP for an MPS/MPOEnvironment.

Parameters

i (int) – Build RP right of site i.

Returns

init_RP – Identity contractible with the vR leg of self.get_B(i), multiplied with a unit vector nonzero in H.IdR[i], with labels 'vL*', 'wL', 'vL'.

Return type

Array

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
  • i (int) – The returned LP will contain the contraction strictly left of site i.

  • store (bool) – Wheter to store the calculated LP in self (True) or discard them (False).

Returns

LP_i – Contraction of everything left of site i, with labels 'vR*', 'wR', 'vR' for bra, H, ket.

Return type

Array

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
  • i (int) – The returned RP will contain the contraction strictly rigth of site i.

  • store (bool) – Wheter to store the calculated RP in self (True) or discard them (False).

Returns

RP_i – Contraction of everything right of site i, with labels 'vL*', 'wL', 'vL' for bra, H, ket.

Return type

Array

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 contracts get_LP(i0+1, store=False) and get_RP(i0, store=False).

Parameters

i0 (int) – Site index.

expectation_value(ops, sites=None, axes=None)[source]

(doesn’t make sense)

del_LP(i)[source]

Delete stored part strictly to the left of site i.

del_RP(i)[source]

Delete storde part scrictly to the right of site i.

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 site L-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.

set_LP(i, LP, age)[source]

Store part to the left of site i.

set_RP(i, RP, age)[source]

Store part to the right of site i.