EffectiveH¶
full name: tenpy.algorithms.mps_common.EffectiveH
parent module:
tenpy.algorithms.mps_common
type: class
Inheritance Diagram
Methods
|
Initialize self. |
Return the hermitian conjugate of self |
|
|
Combine the legs of theta, such that it fits to how we combined the legs of self. |
|
Calculate the action of the operator on a vector vec. |
Contract self to a matrix. |
Class Attributes and Properties
-
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
andH1
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.
-
dtype
¶ The data type of the involved arrays.
- Type
np.dtype
-
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
-
move_right
¶ Whether the sweeping algorithm that calls for an EffectiveH is moving to the right.
- Type
-
combine_theta
(theta)[source]¶ Combine the legs of theta, such that it fits to how we combined the legs of self.
-
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.