# 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

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.

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()

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.

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)

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().