BaseEnvironment
full name: tenpy.networks.mps.BaseEnvironment
parent module:
tenpy.networks.mps
type: class
Inheritance Diagram
Methods
|
|
Update short_term_keys for the cache and possibly preload tensors. |
|
Delete all partial contractions except the left-most LP and right-most RP. |
|
Delete stored part strictly to the left of site i. |
|
Delete stored part strictly to the right of site i. |
|
Calculate the overlap by a full contraction of the network. |
|
|
Calculate LP at given site from nearest available one. |
Return number of physical sites in the contractions of get_LP(i). |
|
|
Calculate RP at given site from nearest available one. |
Return number of physical sites in the contractions of get_RP(i). |
|
Return data for (re-)initialization of the environment. |
|
Return True if LP left of site i is stored. |
|
Return True if RP right of site i is stored. |
|
|
Build initial left part |
|
Build initial right part |
(Re)initialize first LP and last RP from the given data. |
|
|
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.mps.BaseEnvironment(bra, ket, cache=None, **init_env_data)[source]
Bases:
object
Base class for
MPSEnvironment
storing partial contractions between MPS.When bra and ket are the same, a suitable canonical form simplifies LP and RP tensors to identities, but for different bra and ket, or if we sandwich a whole MPO between the bra and ket (even if they are the same), the partial contractions are non-trivial.
This class stores the partial contractions up to each bond.
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. Thus, the special case
ket=bra
should yield identity matrices for LP and RP.- Parameters:
bra (
MPS
) – The MPS to project on. Should be given in usual ‘ket’ form; we call conj() on the matrices directly. Stored in place, without making copies. If necessary to match charges, we callgauge_total_charge()
.ket (
MPO
| None) – The MPS on which the local operator acts. Stored in place, without making copies. IfNone
, use bra.cache (
DictCache
| None) – Cache in which the tensors should be saved. IfNone
, a new DictCache is generated.**init_env_data – Further keyword arguments with initialization data, as returned by
get_initialization_data()
. Seeinitialize_first_LP_last_RP()
for details on these parameters.
- L
Number of physical sites involved into the Environment, i.e. the least common multiple of
bra.L
andket.L
.- Type:
- bra, ket
The two MPS for the contraction.
- Type:
- _LP
Left parts of the environment, len L.
LP[i]
contains the contraction strictly left of site i (orNone
, if we don’t have it calculated).- Type:
list of {
None
| }
- _RP
Right parts of the environment, len L.
RP[i]
contains the contraction strictly right of site i (orNone
, if we don’t have it calculated).- Type:
list of {
None
|Array
}
- _LP_age
Used for book-keeping, how large the DMRG system grew:
_LP_age[i]
stores the number of physical sites involved into the contraction network which yieldsself.get_LP(i)
.- Type:
list of int |
None
- _RP_age
Used for book-keeping, how large the DMRG system grew:
_RP_age[i]
stores the number of physical sites involved into the contraction network which yieldsself._RP[i]
.- Type:
list of int |
None
- init_first_LP_last_RP(init_LP=None, init_RP=None, age_LP=0, age_RP=0, start_env_sites=0)[source]
(Re)initialize first LP and last RP from the given data.
- Parameters:
init_LP (
None
|Array
) – Initial very left partLP
. IfNone
, build one with :meth`init_LP`.init_RP (
None
|Array
) – Initial very right partRP
. IfNone
, build one withinit_RP()
.age_LP (int) – The number of physical sites involved into the contraction of init_LP.
age_RP (int) – The number of physical sites involved into the contraction of init_RP.
start_env_sites (int) – If init_LP and init_RP are not specified, contract each start_env_sites for them.
- init_LP(i, start_env_sites=0)[source]
Build initial left part
LP
.If bra and ket are the same and in left canonical form, this is the environment you get contracting the overlaps from the left infinity up to bond left of site i.
For segment MPS, the
segment_boundaries
are read out (if set).
- init_RP(i, start_env_sites=0)[source]
Build initial right part
RP
for an MPS/MPOEnvironment.If bra and ket are the same and in right canonical form, this is the environment you get contracting from the right infinity up to bond right of site i.
For segment MPS, the
segment_boundaries
are read out (if set).
- get_LP(i, store=True)[source]
Calculate LP at given site from nearest available one.
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] | | | | | | | .-------N[0]*-- ... --N[i-1]*--<- 'vR*'
- get_RP(i, store=True)[source]
Calculate RP at given site from nearest available one.
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]----. | | | | | | | RP[L-1] | | | | | 'vL*' -<---N[i+1]*- ... --N[L-1]*---.
- 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
.
- cache_optimize(short_term_LP=[], short_term_RP=[], preload_LP=None, preload_RP=None)[source]
Update short_term_keys for the cache and possibly preload tensors.
- Parameters:
short_term_LP (list of int) – i indices for
get_LP()
andget_RP()
, respectively, for which a repeated look-up could happen, i.e., for which tensors should be kept in RAM until the next call to this function.short_term_RP (list of int) – i indices for
get_LP()
andget_RP()
, respectively, for which a repeated look-up could happen, i.e., for which tensors should be kept in RAM until the next call to this function.preload_LP (int | None) – If not None, preload the tensors for the corresponding
get_LP()
andget_RP()
call, respectively, from disk.preload_RP (int | None) – If not None, preload the tensors for the corresponding
get_LP()
andget_RP()
call, respectively, from disk.
- get_initialization_data(first=0, last=None, include_bra=False, include_ket=False)[source]
Return data for (re-)initialization of the environment.
- Parameters:
first (int) – The first and last site, to the left and right of which we should return the environments. Defaults to 0 and
L
- 1.last (int) – The first and last site, to the left and right of which we should return the environments. Defaults to 0 and
L
- 1.include_bra (bool) – Whether to also return the
bra
andket
, respectively.include_ket (bool) – Whether to also return the
bra
andket
, respectively.
- Returns:
init_env_data – A dictionary with the following entries.
- init_LP, init_RP
Array
LP on the left of site first and RP on the right of site last, which can be used as init_LP and init_RP for the initialization of a new environment.
- age_LP, age_RPint
The number of physical sites involved into the contraction yielding init_LP and init_RP, respectively.
- bra, ket
MPS
References of
bra
andket
. Only included if include_bra and include_ket are True, respectively.
- init_LP, init_RP
- Return type:
- abstract full_contraction(i0)[source]
Calculate the overlap by a full contraction of the network.
This function contracts
get_LP(i0+1, store=False)
andget_RP(i0, store=False)
with appropriate singular values in between.Conventions for
MPSEnvironment
andMPOEnvironment
are slightly different: the MPSEnvironment multiplies with taking into accountMPS.norm
of both bra and ket, the MPOEnvironment not.- Parameters:
i0 (int) – Site index.