# TwoSiteMixer¶

Inheritance Diagram

Methods

 TwoSiteMixer.__init__(options) Initialize self. TwoSiteMixer.perturb_svd(engine, theta, i0, …) Mix extra terms to theta and perform an SVD. TwoSiteMixer.subspace_expand(engine, theta, …) Expand the MPS subspace, to allow the bond dimension to increase. Update the amplitude, possibly disable the mixer.
class tenpy.algorithms.dmrg.TwoSiteMixer(options)[source]

Mixer for two-site DMRG.

This is the two-site version of the mixer described in [Hubig2015]. Equivalent to the DensityMatrixMixer, but never construct the full density matrix.

perturb_svd(engine, theta, i0, move_right)[source]

Mix extra terms to theta and perform an SVD.

Parameters
• engine (Engine) – The DMRG engine calling the mixer.

• theta (Array) – The optimized wave function, prepared for svd.

• i0 (int) – Site index; theta lives on i0, i0+1.

• update_LP (bool) – Whether to calculate the next env.LP[i0+1].

• update_RP (bool) – Whether to calculate the next env.RP[i0].

Returns

subspace_expand(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.

• i0 (int) – Site index at which the local update has taken place.

• move_right (bool) – 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 to engine.psi.get_B(i0-1, form='A').

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.

update_amplitude(sweeps)[source]

Update the amplitude, possibly disable the mixer.

Parameters

sweeps (int) – The number of performed sweeps, to check if we need to disable the mixer.

Returns

mixer – Returns self if we should continue mixing, or None, if the mixer should be disabled.

Return type

Mixer | None