EffectiveH

Inheritance Diagram

Inheritance diagram of tenpy.algorithms.mps_common.EffectiveH

Methods

EffectiveH.__init__(env, i0[, combine, …])

Initialize self.

EffectiveH.adjoint()

Return the hermitian conjugate of self

EffectiveH.combine_theta(theta)

Combine the legs of theta, such that it fits to how we combined the legs of self.

EffectiveH.matvec(vec)

Calculate the action of the operator on a vector vec.

EffectiveH.to_matrix()

Contract self to a matrix.

Class Attributes and Properties

EffectiveH.acts_on

EffectiveH.length

class tenpy.algorithms.mps_common.EffectiveH(env, i0, combine=False, move_right=True)[source]

Bases: tenpy.linalg.sparse.NpcLinearOperator

Prototype class for local effective Hamiltonians used in sweep algorithms.

As an example, the local effective Hamiltonian for a two-site (DMRG) algorithm looks like:

|        .---       ---.
|        |    |   |    |
|       LP----H0--H1---RP
|        |    |   |    |
|        .---       ---.

where H0 and H1 are MPO tensors.

Parameters
  • env (MPOEnvironment) – Environment for contraction <psi|H|psi>.

  • i0 (int) – Index of the active site if length=1, or of the left-most active site if length>1.

  • combine (bool, optional) – Whether to combine legs into pipes as far as possible. This reduces the overhead of calculating charge combinations in the contractions.

  • move_right (bool, optional) – Whether the sweeping algorithm that calls for an EffectiveH is moving to the right.

length

Number of (MPS) sites the effective hamiltonian covers. NB: Class attribute.

Type

int

dtype

The data type of the involved arrays.

Type

np.dtype

N

Contracting self with as_matrix() will result in an N`x`N matrix .

Type

int

acts_on

Labels of the state on which self acts. NB: class attribute. Overwritten by normal attribute, if combine.

Type

list of str

combine

Whether to combine legs into pipes as far as possible. This reduces the overhead of calculating charge combinations in the contractions.

Type

bool

move_right

Whether the sweeping algorithm that calls for an EffectiveH is moving to the right.

Type

bool

combine_theta(theta)[source]

Combine the legs of theta, such that it fits to how we combined the legs of self.

Parameters

theta (Array) – Wave function to apply the effective Hamiltonian to, with uncombined legs.

Returns

theta – Wave function with labels as given by self.acts_on.

Return type

Array

adjoint()[source]

Return the hermitian conjugate of self

If self is hermitian, subclasses can choose to implement this to define the adjoint operator of self.

matvec(vec)[source]

Calculate the action of the operator on a vector vec.

Note that we don’t require vec to be one-dimensional. However, for square operators we require that the result of matvec has the same legs (in the same order) as vec such that they can be added. Note that this excludes a non-trivial qtotal for square operators.

to_matrix()[source]

Contract self to a matrix.

If self represents an operator with very small shape, e.g. because the MPS bond dimension is very small, an algorithm might choose to contract self to a single tensor.

Returns

matrix – Contraction of the represented operator.

Return type

Array