OneSiteH¶
full name: tenpy.algorithms.mps_sweeps.OneSiteH
parent module:
tenpy.algorithms.mps_sweeps
type: class
-
class
tenpy.algorithms.mps_sweeps.
OneSiteH
(env, i0, combine=False, move_right=True, ortho_to_envs=[])[source]¶ Bases:
tenpy.algorithms.mps_sweeps.EffectiveH
Class defining the one-site effective Hamiltonian for Lanczos.
The effective one-site Hamiltonian looks like this:
| .--- ---. | | | | | LP----W0----RP | | | | | .--- ---.
If combine is True, we define either LHeff as contraction of LP with W (in the case move_right is True) or RHeff as contraction of RP and W.
- Parameters
- env
MPOEnvironment
Environment for contraction
<psi|H|psi>
.- i0int
Index of the active site if length=1, or of the left-most active site if length>1.
- combinebool
Whether to combine legs into pipes. This combines the virtual and physical leg for the left site (when moving right) or right side (when moving left) into pipes. This reduces the overhead of calculating charge combinations in the contractions, but one
matvec()
is formally more expensive, \(O(2 d^3 \chi^3 D)\). Is originally from the wo-site method; unclear if it works well for 1 site.- move_rightbool
Whether the the sweep is moving right or left for the next update.
- env
- Attributes
- lengthint
Number of (MPS) sites the effective hamiltonian covers.
- combine, move_rightbool
See above.
- LHeff, RHeff
Array
Only set
combine
, and only one of them depending onmove_right
. If move_right was True, LHeff is set with labels'(vR*.p0)', 'wR', '(vR.p0*)'
for bra, MPO, ket; otherwise RHeff is set with labels'(p0*.vL)', 'wL', '(p0, vL*)'
- LP, W0, RP
Array
Tensors making up the network of self.
Methods
combine_Heff
(self)Combine LP and RP with W to form LHeff and RHeff, depending on the direction.
combine_theta
(self, theta)Combine the legs of theta, such that fit to how we combined the legs of self.
matvec
(self, theta)Apply the effective Hamiltonian to theta.
matvec_theta_ortho
(self, theta)Apply self to theta, and orthogonalize against self.theta_ortho.
to_matrix
(self)Contract self to a matrix.
-
combine_Heff
(self)[source]¶ Combine LP and RP with W to form LHeff and RHeff, depending on the direction.
In a move to the right, we need LHeff. In a move to the left, we need RHeff. Both contain the same W.
-
combine_theta
(self, theta)[source]¶ Combine the legs of theta, such that fit to how we combined the legs of self.
-
matvec_theta_ortho
(self, theta)¶ Apply self to theta, and orthogonalize against self.theta_ortho. __ We implement this by effectively replacing
H -> P H P
with the projectorP = 1 - sum_o |o> <o|
projecting out the states fromtheta_ortho
.Parameter and return value as for
matvec()
(which this function replaces, if the class was initialized with non-empty ortho_to_envs.)