A ProjMPOSum computes and stores the projection of an implied sum of MPOs into a basis defined by an MPS, leaving a certain number of site indices of each MPO unprojected. Which sites are unprojected can be shifted by calling the
position! method. The MPOs used as input to a ProjMPOSum are not added together beforehand; instead when the
product method of a ProjMPOSum is invoked, each projected MPO in the set of MPOs is multiplied by the input tensor one-by-one in an efficient way.
Drawing of the network represented by a ProjMPOSum
P([H1,H2,...]), showing the case of
position!(P,psi,4) for an MPS
psi (note the sum Σⱼ on the left):
o--o--o- -o--o--o--o--o--o <psi| | | | | | | | | | | | Σⱼ o--o--o--o--o--o--o--o--o--o--o Hⱼ | | | | | | | | | | | o--o--o- -o--o--o--o--o--o |psi>
Efficiently multiply the ProjMPOSum
P by an ITensor
v in the sense that the ProjMPOSum is a generalized square matrix or linear operator and
v is a generalized vector in the space where it acts. The returned ITensor will have the same indices as
v. The operator overload
P(v) is shorthand for
position!(P::ProjMPOSum, psi::MPS, pos::Int)
Given an MPS
psi, shift the projection of the MPO represented by the ProjMPOSum
P such that the set of unprojected sites begins with site
pos. This operation efficiently reuses previous projections of the MPOs on sites that have already been projected. The MPS
psi must have compatible bond indices with the previous projected MPO tensors for this operation to succeed.
noiseterm(P::ProjMPOSum, phi::ITensor, ortho::String)
Return a "noise term" or density matrix perturbation ITensor as proposed in Phys. Rev. B 72, 180403 for aiding convergence of DMRG calculations. The ITensor
phi is the contracted product of MPS tensors acted on by the ProjMPOSum
ortho is a String which can take the values
"right" depending on the sweeping direction of the DMRG calculation.
The number of indices in the IndexSet.
The number of indices in the IndexSet type.
Get the element type of the IndexSet.
The size of a ProjMPOSum are its dimensions
(d,d) when viewed as a matrix or linear operator acting on a space of dimension
For example, if a ProjMPOSum maps from a space with indices
(a,s1,s2,b) to the space
(a',s1',s2',b') then the size is
d = dim(a)*dim(s1)*dim(s1)*dim(b)