NormDisentangler

class tenpy.algorithms.purification_tebd.NormDisentangler(parent)[source]

Bases: tenpy.algorithms.purification_tebd.Disentangler

Find optimal U for which the truncation of U|theta> has maximal overlap with U|theta>.

Reads of the following TEBD_params as break criteria for the iteration:

key

type

description

disent_eps

float

Break, if the change in the Renyi entropy S(n=2) per iteration is smaller than this value.

disent_max_iter

float

Maximum number of iterations to perform.

disent_trunc_par

dict

Truncation parameters; defaults to trunc_params.

disent_norm_chi

iterable

To find the optimal U it can help to increase chi_max of disent_trunc_par slowly, the default is range(1, disent_trunc_par['chi_max']+1). However, that’s very slow for large chi_max, so we allow to change it. (In fact, it makes the disentangler scale worse than the rest of TEBD.)

Arguments and return values are the same as for disentangle().

Methods

__call__(self, theta)

Find and apply a unitary to disentangle theta.

iter(self, theta, U, trunc_params)

Given theta and U, find U2 maximizing <theta|U2 truncate(U |theta>).

iter(self, theta, U, trunc_params)[source]

Given theta and U, find U2 maximizing <theta|U2 truncate(U |theta>).

Finds unitary U2 which maximizes Tr(U

Parameters
thetaArray

Two-site wave function to be disentangled.

UArray

The previous guess for U; with legs 'q0', 'q1', 'q0*', 'q1*'.

trunc_paramsdict

The truncation parameters (similar as self.trunc_params) used to truncate U|theta>.

Returns
trunc_errTruncationError

Norm error discarded during the truncation of U|theta>.

new_UArray

Unitary with legs 'q0', 'q1', 'q0*', 'q1*'. Chosen such that new_U|theta> has maximal overlap with the truncated U|theta>.