# NormDisentangler¶

Inheritance Diagram Methods

 `NormDisentangler.__init__`(parent) `NormDisentangler.iter`(theta, U, trunc_params) Given theta and U, find U2 maximizing `)`.
class tenpy.algorithms.disentangler.NormDisentangler(parent)[source]

Bases: `Disentangler`

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

Reads of the following options 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()`.

iter(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
• theta (`Array`) – Two-site wave function to be disentangled.

• U (`Array`) – The previous guess for U; with legs `'q0', 'q1', 'q0*', 'q1*'`.

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

Returns

• trunc_err (TruncationError) – Norm error discarded during the truncation of `U|theta>`.

• new_U (`Array`) – Unitary with legs `'q0', 'q1', 'q0*', 'q1*'`. Chosen such that `new_U|theta>` has maximal overlap with the truncated `U|theta>`.