# FlatHermitianOperator¶

Inheritance Diagram

Methods

 FlatHermitianOperator.__init__(npc_matvec, …) Initialize this LinearOperator. Hermitian adjoint. Matrix-matrix or matrix-vector multiplication. Convert flat vector of selected charge sector into npc Array. Create a FlatLinearOperator from a square Array. Create a FlatLinearOperator from a matvec function acting on multiple legs. Matrix-matrix multiplication. Matrix-vector multiplication. Convert npc Array with qtotal = self.charge_sector into ndarray. Adjoint matrix-vector multiplication. Transpose this linear operator.

Class Attributes and Properties

 FlatHermitianOperator.H Hermitian adjoint. FlatHermitianOperator.T Transpose this linear operator. FlatHermitianOperator.charge_sector Charge sector of the vector which is acted on.
class tenpy.linalg.sparse.FlatHermitianOperator(npc_matvec, leg, dtype, charge_sector=0, vec_label=None)[source]

Hermitian variant of FlatLinearOperator.

Note that we don’t check matvec() to return a hermitian result, we only define an adjoint to be self.

property H

Hermitian adjoint.

Returns the Hermitian adjoint of self, aka the Hermitian conjugate or Hermitian transpose. For a complex matrix, the Hermitian adjoint is equal to the conjugate transpose.

Can be abbreviated self.H instead of self.adjoint().

Returns

A_H – Hermitian adjoint of self.

Return type

LinearOperator

property T

Transpose this linear operator.

Returns a LinearOperator that represents the transpose of this one. Can be abbreviated self.T instead of self.transpose().

adjoint()

Hermitian adjoint.

Returns the Hermitian adjoint of self, aka the Hermitian conjugate or Hermitian transpose. For a complex matrix, the Hermitian adjoint is equal to the conjugate transpose.

Can be abbreviated self.H instead of self.adjoint().

Returns

A_H – Hermitian adjoint of self.

Return type

LinearOperator

property charge_sector

Charge sector of the vector which is acted on.

dot(x)

Matrix-matrix or matrix-vector multiplication.

Parameters

x (array_like) – 1-d or 2-d array, representing a vector or matrix.

Returns

Ax – 1-d or 2-d array (depending on the shape of x) that represents the result of applying this linear operator on x.

Return type

array

flat_to_npc(vec)[source]

Convert flat vector of selected charge sector into npc Array.

Parameters

vec (1D ndarray) – Numpy vector to be converted. Should have the entries according to self.charge_sector.

Returns

npc_vec – Same as vec, but converted into a flat array.

Return type

Array

classmethod from_NpcArray(mat, charge_sector=0)[source]

Create a FlatLinearOperator from a square Array.

Parameters
• mat (Array) – A square matrix, with contractable legs.

• charge_sector (None | charges | 0) – Selects the charge sector of the vector onto which the Linear operator acts. None stands for all sectors, 0 stands for the zero-charge sector. Defaults to 0, i.e., assumes the dominant eigenvector is in charge sector 0.

classmethod from_guess_with_pipe(npc_matvec, v0_guess, labels_split=None, dtype=None)[source]

Create a FlatLinearOperator from a matvec function acting on multiple legs.

This function creates a wrapper matvec function to allow acting on a “vector” with multiple legs. The wrapper combines the legs into a LegPipe before calling the actual matvec function, and splits them again in the end.

Parameters
• npc_matvec (function) – Function to calculate the action of the linear operator on an npc vector with the given split labels labels_split. Has to return an npc vector with the same legs.

• v0_guess (Array) – Initial guess/starting vector which can be applied to npc_matvec.

• labels_split (None | list of str) – Labels of v0_guess in the order in which they are to be combined into a LegPipe. None defaults to v0_guess.get_leg_labels().

• dtype (np.dtype | None) – The data type of the arrays. None defaults to dtype of v0_guess (!).

Returns

• lin_op (cls) – Instance of the class to be used as linear operator

• guess_flat (np.ndarray) – Numpy vector representing the guess v0_guess.

matmat(X)

Matrix-matrix multiplication.

Performs the operation y=A*X where A is an MxN linear operator and X dense N*K matrix or ndarray.

Parameters

X ({matrix, ndarray}) – An array with shape (N,K).

Returns

Y – A matrix or ndarray with shape (M,K) depending on the type of the X argument.

Return type

{matrix, ndarray}

Notes

This matmat wraps any user-specified matmat routine or overridden _matmat method to ensure that y has the correct type.

matvec(x)

Matrix-vector multiplication.

Performs the operation y=A*x where A is an MxN linear operator and x is a column vector or 1-d array.

Parameters

x ({matrix, ndarray}) – An array with shape (N,) or (N,1).

Returns

y – A matrix or ndarray with shape (M,) or (M,1) depending on the type and shape of the x argument.

Return type

{matrix, ndarray}

Notes

This matvec wraps the user-specified matvec routine or overridden _matvec method to ensure that y has the correct shape and type.

npc_to_flat(npc_vec)[source]

Convert npc Array with qtotal = self.charge_sector into ndarray.

Parameters

npc_vec (Array) – Npc Array to be converted. Should only have entries in self.charge_sector.

Returns

vec – Same as npc_vec, but converted into a flat Numpy array.

Return type

1D ndarray

rmatvec(x)

Adjoint matrix-vector multiplication.

Performs the operation y = A^H * x where A is an MxN linear operator and x is a column vector or 1-d array.

Parameters

x ({matrix, ndarray}) – An array with shape (M,) or (M,1).

Returns

y – A matrix or ndarray with shape (N,) or (N,1) depending on the type and shape of the x argument.

Return type

{matrix, ndarray}

Notes

This rmatvec wraps the user-specified rmatvec routine or overridden _rmatvec method to ensure that y has the correct shape and type.

transpose()

Transpose this linear operator.

Returns a LinearOperator that represents the transpose of this one. Can be abbreviated self.T instead of self.transpose().