pyUni10.UniTensor¶
-
class
pyUni10.UniTensor¶ Proxy of C++ uni10::UniTensor class.
Class for symmetric tensors.
-
pyUni10.UniTensor([val]) Construct a rank-0 tensor (scalar)
Parameters: var (float) – initial value Returns: a rank-0 tensor (scalar) Return type: UniTensor
-
pyUni10.UniTensor(bds, labels, name="") Construct a UniTensor
Parameters: - bds (array of Bond) – list of bonds
- labels (array of int) – list of labels
- name (str) – name of the tensor
Returns: a UniTensor object
Return type: Methods
-
UniTensor.assign(bds)¶ Restructures the UniTensor with bonds bds, and clear all the content.
Parameters: bds (array of Bonds) – list of bonds Returns: a UniTensor with bonds bds Return type: UniTensor
-
UniTensor.blockNum()¶ Returns the number of blocks in UniTensor
Returns: total number of blocks Return type: int
-
UniTensor.blockQnum([idx])¶ Returns the quantum number of the idx-th block.
If no input is given, returns full list of quantum numbers associated with blocks in UniTensor.
Parameters: idx (int) – block index Returns: quantum number(s) Return type: (array of) Qnum
-
UniTensor.bond([idx])¶ Returns the idx-th bond in UniTensor.
If no input is given, returns an array of bonds associated with UniTensor.
Returns: bond(s) Return type: (array of) Bond
-
UniTensor.bondNum()¶ Returns the number of bonds in UniTensor.
Returns: number of bonds Return type: int
-
UniTensor.combineBond(labels)¶ Combines bonds with labels. The resulting bond has the same label and bondType as the bond with the first label in labels.
Parameters: labels (list) – array of labels Returns: combined bond with the same label and bondType as first bond in labels Return type: Bond
-
UniTensor.elemCmp(Tb)¶ Tests whether the elements of the UniTensor are the same as in Tb.
Parameters: Tb (UniTensor) – Returns: True if the elements of UniTensor is the same as in Tb, False otherwise. Rtyoe: bool
-
UniTensor.elemNum()¶ Returns the number of elements in UniTensor.
Returns: number of elements Return type: int
-
UniTensor.getBlock([qnum, ]diag=false)¶ Returns the block elements of quantum number qnum as a Matrix. If the diag flag is set, only the diagonal elements of the block will be picked out to a diagonal Matrix. If qnum is not given, returns the Qnum(0) block.
Parameters: - qnum (Qnum) – blcok quantum number
- diag (bool) – If True, output a diagnoal part only
Returns: a Matrix of block of qnum
Return type:
-
UniTensor.getBlocks()¶ Returns the a dictionary {qnum:block} of the mapping from Qnum to Matrix .
Returns: mapping from Qnum to Matrix Return type: dict
-
UniTensor.getElem()¶ Returns the reference to th elements of UniTensor
Returns: Reference to the elements Return type: float *
-
UniTensor.getName()¶ Returns the name of UniTensor
Returns: Name of UniTensor Return type: str
-
UniTensor.getRawElem()¶ Returns the raw elements of UniTensor with row(column) basis defined by the incoming (outgoing) bonds.
Returns: raw elements of UniTensor Return type: Matrix
-
UniTensor.identity([qnum])¶ Set the diagonal elements to 1 and the off-diagonal elements to 0 in all blocks. If qnum is given, only set the elements in the block with quantum number equal to qnum.
param Qnum qnum: quantum number
-
UniTensor.inBondNum()¶ Returns the number of incoming bonds in UniTensor
Returns: number of incoming bonds Return type: int
-
UniTensor.label([idx])¶ Returns the label of the idx-th bond. If no input is given, returns an array of labels.
Parameters: idx (int) – bond index Returns: (array of) label(s) Return type: int
-
UniTensor.orthoRand()¶ Randomly generates orthogonal bases and assigns to blocks.
-
UniTensor.partialTrace(la, lb)¶ Traces out bonds of label la and lb, and returns a reference to resulting tensor.
Returns: reference to the partial trace of UniTensor Return type: float *
-
UniTensor.permute([new_label, ]inBondNum)¶ Permutes the order the bonds according to new_label, and changes the number of incoming bonds to inBondNum.
Returns: reference to the permuted UniTensor Return type: float *
-
UniTensor.printRawElem()¶ Prints the raw elements of UniTensor
-
static
UniTensor.profile()¶ Prints the memory usage of all the existing UniTensors .
-
UniTensor.putBlock([qnum, ]mat)¶ Assigns the elements of Matrix mat into the block with Qnum qnum of UniTensor. If qnum is not give, assigns to Qnum(0) block.
Parameters:
-
UniTensor.randomize()¶ Assigns random numbers between 0 and 1 to the elements of UniTensor.
-
UniTensor.save(filename)¶ Saves the content of UniTensor to the binary file filename.
-
UniTensor.setElem(elem)¶ Assigns the elements to UniTensor, replacing the originals.
Parameters: elem (array of float) – elements
-
UniTensor.setLabel(new_labels)¶ Assigns new_labels to the bonds of UniTensor, replacing the orinals.
Parameters: new_labels (array of int) – new labels
-
UniTensor.setName(name)¶ Assigns name to UniTensor
Parameters: name (str) – name to be assigned
-
UniTensor.setRawElem(rawElem)¶ Assigns raw elements (non-block-diagonal) to UniTensor.
Parameters: rawElem (array of float) – input elements
-
UniTensor.set_zero()¶ Sets the elements of UniTensor to zero.
-
UniTensor.similar(Tb)¶ Tests whether the UniTensor is similar to input tensor Tb. Two tensors are said to be similar if the bonds of the tensors are exactly the same.
Parameters: Tb (UniTensor) – tensor to be compared to. Returns: True if UniTensor and Tb are similar. Return type: bool
-
UniTensor.trace()¶ Traces out incoming and outgoing bonds, and returns the trace value.
Returns: trace of UniTensor. Return type: float
-
UniTensor.transpose()¶ Transposes all blocks associated with quantum numbers. The bonds are changed from incoming to outcoming or vice versa while the quantum numbers remain the same on the bonds.
Returns: reference to the transposed tensor. Return type: UniTensor &
-
UniTensor.hosvd(group_labels, groups, groupsSize, Ls)¶ Performs High-order SVD of UniTensor.
Parameters: - group_labels (array of int) – Ordered labels of the bonds
- list (groups) – Number of external bonds in each mode
- groupSize (int) – Number of modes
- Ls (array of Matrix) – Singular values in each direction
Returns: array of unitaries, and the core tensor
-
UniTensor.hosvd(modeNum, fixedNum, Ls) Performs High-order SVD of UniTensor
Parameters: - modeNum (int) – Number of output modes
- fixedNum (int) – Number of bonds to remain unchanged
Returns: array of unitaries, and the core tensor