DensityMatrixMixer¶
full name: tenpy.algorithms.dmrg.DensityMatrixMixer
parent module:
tenpy.algorithms.dmrg
type: class
Inheritance Diagram
Methods
|
Initialize self. |
|
Generate the coupling of the MPO legs for the reduced density matrix. |
|
Generate the coupling of the MPO legs for the reduced density matrix. |
|
Calculated mixed reduced density matrix for left site. |
|
Calculated mixed reduced density matrix for left site. |
|
Mix extra terms to theta and perform an SVD. |
Update the amplitude, possibly disable the mixer. |
-
class
tenpy.algorithms.dmrg.
DensityMatrixMixer
(options)[source]¶ Bases:
tenpy.algorithms.dmrg.Mixer
Mixer based on density matrices.
This mixer constructs density matrices as described in the original paper [white2005].
-
perturb_svd
(engine, theta, i0, update_LP, update_RP)[source]¶ Mix extra terms to theta and perform an SVD.
We calculate the left and right reduced density 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 (
SingleSiteDMRGEngine
|TwoSiteDMRGEngine
) – 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
U (
Array
) – Left-canonical part of theta. Labels'(vL.p0)', 'vR'
.S (1D ndarray | 2D
Array
) – Without mixer just the singluar values of the array; with mixer it might be a general matrix; see comment above.VH (
Array
) – Right-canonical part of theta. Labels'vL', '(p1.vR)'
.err (
TruncationError
) – The truncation error introduced.
-
mix_rho_L
(engine, theta, i0, mix_enabled)[source]¶ Calculated mixed reduced density matrix for left site.
Pictorially:
| mix_enabled=False mix_enabled=True | | .---theta---. .---theta-------. | | | | | | | | | | | | LP---H0--H1--. | | | | | | | | | | | | .---theta*--. | xR | | | | | | | | LP*--H0*-H1*-. | | | | | | | .---theta*------.
- Parameters
engine (
DMRGEngine
) – The DMRG engine calling the mixer.theta (
Array
) – Ground state of the effective Hamiltonian, prepared for svd.i0 (int) – Site index; theta lives on
i0, i0+1
.mix_enabled (bool) – Whether we should perturb the density matrix.
- Returns
rho_L – A (hermitian) square array with labels
'(vL.p0)', '(vL*.p0*)'
, Mainly the reduced density matrix of the left part, but with some additional mixing.- Return type
-
mix_rho_R
(engine, theta, i0, mix_enabled)[source]¶ Calculated mixed reduced density matrix for left site.
Pictorially:
| mix_enabled=False mix_enabled=True | | .---theta---. .------theta---. | | | | | | | | | | | | | .--H0--H1--RP | | | | | | | | | | | .---theta*--. | wL | | | | | | | | | .--H0*-H1*-RP* | | | | | | .------theta*--.
- Parameters
engine (
DMRGEngine
) – The DMRG engine calling the mixer.theta (
Array
) – Ground state of the effective Hamiltonian, prepared for svd.i0 (int) – Site index; theta lives on
i0, i0+1
.mix_enabled (bool) – Whether we should perturb the density matrix.
- Returns
rho_R – A (hermitian) square array with labels
'(p1.vR)', '(p1*.vR*)'
. Mainly the reduced density matrix of the right part, but with some additional mixing.- Return type
-
get_xR
(wR_leg, Id_L, Id_R)[source]¶ Generate the coupling of the MPO legs for the reduced density matrix.
- Parameters
wR_leg (
LegCharge
) – LegCharge to be connected to.IdL (int |
None
) – Index within the leg for which the MPO has only identities to the left.IdR (int |
None
) – Index within the leg for which the MPO has only identities to the right.
- Returns
mixed_xR (
Array
) – Connection of the MPOs on the right for the reduced density matrix rhoL. Labels('wL', 'wL*')
.add_separate_Id (bool) – If Id_L is
None
, we can’t include the identity into mixed_xR, so it has to be added directly inmix_rho_L()
.
-
get_xL
(wL_leg, Id_L, Id_R)[source]¶ Generate the coupling of the MPO legs for the reduced density matrix.
- Parameters
wL_leg (
LegCharge
) – LegCharge to be connected to.Id_L (int |
None
) – Index within the leg for which the MPO has only identities to the left.Id_R (int |
None
) – Index within the leg for which the MPO has only identities to the right.
- Returns
mixed_xL (
Array
) – Connection of the MPOs on the left for the reduced density matrix rhoR. Labels('wR', 'wR*')
.add_separate_Id (bool) – If Id_R is
None
, we can’t include the identity into mixed_xL, so it has to be added directly inmix_rho_R()
.
-