FlatLinearOperator¶
full name: tenpy.linalg.sparse.FlatLinearOperator
parent module:
tenpy.linalg.sparse
type: class
Inheritance Diagram
Methods

Initialize this LinearOperator. 
Hermitian adjoint. 

Matrixmatrix or matrixvector multiplication. 

Convert flat vector of selected charge sector into npc Array. 


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

Matrixmatrix multiplication. 

Matrixvector multiplication. 


Convert npc Array with qtotal = self.charge_sector into ndarray. 
Adjoint matrixvector multiplication. 

Transpose this linear operator. 
Class Attributes and Properties
Hermitian adjoint. 

Transpose this linear operator. 

Charge sector of the vector which is acted on. 

class
tenpy.linalg.sparse.
FlatLinearOperator
(npc_matvec, leg, dtype, charge_sector=0, vec_label=None)[source]¶ Bases:
scipy.sparse.linalg.interface.LinearOperator
Square Linear operator acting on numpy arrays based on a matvec acting on npc Arrays.
Note that this class represents a square linear operator. In terms of charges, this means it has legs
[self.leg.conj(), self.leg]
and trivial (zero)qtotal
. Parameters
npc_matvec (function) – Function to calculate the action of the linear operator on an npc vector (with the specified leg). Has to return an npc vector with the same leg.
leg (
LegCharge
) – Leg of the vector on which npc_matvec can act on.dtype (np.dtype) – The data type of the arrays.
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 zerocharge sector. Defaults to0
, i.e., assumes the dominant eigenvector is in charge sector 0.vec_label (None  str) – Label to be set to the npc vector before acting on it with npc_matvec. Ignored if None.

charge_sector
¶

possible_charge_sectors
¶ Each row corresponds to one possible choice for charge_sector.
 Type
ndarray[QTYPE, ndim=2]

dtype
¶ The data type of the arrays.
 Type
np.dtype

vec_label
¶ Label to be set to the npc vector before acting on it with npc_matvec. Ignored if None.
 Type
None  str

npc_matvec
¶ Function to calculate the action of the linear operator on an npc vector (with one leg).
 Type
function

_mask
¶ The indices of leg corresponding to the charge_sector to be diagonalized.
 Type
ndarray[ndim=1, bool]

_npc_matvec_multileg
¶ Only set if initalized with
from_guess_with_pipe()
. The npc_matvec function to be wrapped around. Takes the npc Array in multidimensional form and returns it that way. Type
function  None

_labels_split
¶ Only set if initalized with
from_guess_with_pipe()
. Labels of the guess before combining them into a pipe (stored as leg). Type
list of str

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 zerocharge sector. Defaults to0
, 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 tov0_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.

property
charge_sector
Charge sector of the vector which is acted on.

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

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

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

dot
(x)¶ Matrixmatrix or matrixvector multiplication.
 Parameters
x (array_like) – 1d or 2d array, representing a vector or matrix.
 Returns
Ax – 1d or 2d array (depending on the shape of x) that represents the result of applying this linear operator on x.
 Return type
array

matmat
(X)¶ Matrixmatrix 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 userspecified matmat routine or overridden _matmat method to ensure that y has the correct type.

matvec
(x)¶ Matrixvector multiplication.
Performs the operation y=A*x where A is an MxN linear operator and x is a column vector or 1d 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 userspecified matvec routine or overridden _matvec method to ensure that y has the correct shape and type.

rmatvec
(x)¶ Adjoint matrixvector multiplication.
Performs the operation y = A^H * x where A is an MxN linear operator and x is a column vector or 1d 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 userspecified 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().