SingleSiteMixer¶
full name: tenpy.algorithms.dmrg.SingleSiteMixer
parent module:
tenpy.algorithms.dmrg
type: class
-
class
tenpy.algorithms.dmrg.
SingleSiteMixer
(mixer_params)[source]¶ Bases:
tenpy.algorithms.dmrg.Mixer
Mixer for single-site DMRG.
Performs a subspace expansion following [Hubig2015].
Methods
perturb_svd
(self, engine, theta, i0, …)Mix extra terms to theta and perform an SVD.
subspace_expand
(self, engine, theta, i0, …)Expand the MPS subspace, to allow the bond dimension to increase.
update_amplitude
(self, sweeps)Update the amplitude, possibly disable the mixer.
-
perturb_svd
(self, engine, theta, i0, move_right, next_B)[source]¶ Mix extra terms to theta and perform an SVD.
We calculate the left and right reduced density matrix using the mixer (which might include applications of H). These density matrices are diagonalized and truncated such that we effectively perform a svd for the case
mixer.amplitude=0
.- Parameters
- engine
Engine
The DMRG engine calling the mixer.
- theta
Array
The optimized wave function, prepared for svd.
- i0int
The site index where theta lives.
- move_rightbool
Whether we move to the right (
True
) or left (False
).- next_B
Array
The subspace expansion requires to change the tensor on the next site as well. If move_right, it should correspond to
engine.psi.get_B(i0+1, form='B')
. If not move_right, it should correspond toengine.psi.get_B(i0-1, form='A')
.
- engine
- Returns
- U
Array
Left-canonical part of tensordot(theta, next_B). Labels
'(vL.p0)', 'vR'
.- S1D ndarray
(Perturbed) singular values on the new bond (between theta and next_B).
- VH
Array
Right-canonical part of tensordot(theta, next_B). Labels
'vL', '(p1.vR)'
.- err
TruncationError
The truncation error introduced.
- U
-
subspace_expand
(self, engine, theta, i0, move_right, next_B)[source]¶ Expand the MPS subspace, to allow the bond dimension to increase.
This is the subspace expansion following [Hubig2015].
- Parameters
- engine
SingleSiteDMRGEngine
|TwoSiteDMRGEngine
‘Engine’ for the DMRG algorithm
- theta
Array
Optimized guess for the ground state of the effective local Hamiltonian.
- i0int
Site index at which the local update has taken place.
- move_rightbool
Whether the next i0 of the sweep will be right or left of the current one.
- next_B
Array
The subspace expansion requires to change the tensor on the next site as well. If move_right, it should correspond to
engine.psi.get_B(i0+1, form='B')
. If not move_right, it should correspond toengine.psi.get_B(i0-1, form='A')
.
- engine
- Returns
- theta :
Local MPS tensor at site i0 after subspace expansion.
- next_B :
MPS tensor at site i0+1 or i0-1 (depending on sweep direction) after subspace expansion.
-