1. Set same value for all blocks in UniTensor with SymmetryΒΆ
Consider a UniTensor with Symmetry Tsymm. The following code provide example code to set all elements to be the same value (1.0 in this case) for all the blocks
In Python:
1bond_d = cytnx.Bond(cytnx.BD_IN, [cytnx.Qs(1)>>1, cytnx.Qs(-1)>>1],[cytnx.Symmetry.U1()])
2bond_e = cytnx.Bond(cytnx.BD_IN, [cytnx.Qs(1)>>1, cytnx.Qs(-1)>>1],[cytnx.Symmetry.U1()])
3bond_f = cytnx.Bond(cytnx.BD_OUT,\
4 [cytnx.Qs(2)>>1, cytnx.Qs(0)>>2, cytnx.Qs(-2)>>1],[cytnx.Symmetry.U1()])
5Tsymm = cytnx.UniTensor([bond_d, bond_e, bond_f], name="symm. tensor", labels=["d","e","f"])
6
7for block in Tsymm.get_blocks_():
8 block.fill(1.0)
In C++:
1for(auto &block: Td.get_blocks_()){
2 block.fill(1.0);
3}
Output (before) >>
-------- start of print ---------
Tensor name: Td
braket_form : True
is_diag : False
[OVERALL] contiguous : True
========================
BLOCK [#0]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[0] U1(1) -->| 1 1 |--> [0] U1(2)
| |
[0] U1(1) -->| 1 |
| |
-----------
Total elem: 1
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,1)
[[[0.00000e+00 ]]]
========================
BLOCK [#1]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[0] U1(1) -->| 1 2 |--> [1] U1(0)
| |
[1] U1(-1) -->| 1 |
| |
-----------
Total elem: 2
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,2)
[[[0.00000e+00 0.00000e+00 ]]]
========================
BLOCK [#2]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[1] U1(-1) -->| 1 2 |--> [1] U1(0)
| |
[0] U1(1) -->| 1 |
| |
-----------
Total elem: 2
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,2)
[[[0.00000e+00 0.00000e+00 ]]]
========================
BLOCK [#3]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[1] U1(-1) -->| 1 1 |--> [2] U1(-2)
| |
[1] U1(-1) -->| 1 |
| |
-----------
Total elem: 1
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,1)
[[[0.00000e+00 ]]]
Output (after) >>
-------- start of print ---------
Tensor name: Td
braket_form : True
is_diag : False
[OVERALL] contiguous : True
========================
BLOCK [#0]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[0] U1(1) -->| 1 1 |--> [0] U1(2)
| |
[0] U1(1) -->| 1 |
| |
-----------
Total elem: 1
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,1)
[[[1.00000e+00 ]]]
========================
BLOCK [#1]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[0] U1(1) -->| 1 2 |--> [1] U1(0)
| |
[1] U1(-1) -->| 1 |
| |
-----------
Total elem: 2
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,2)
[[[1.00000e+00 1.00000e+00 ]]]
========================
BLOCK [#2]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[1] U1(-1) -->| 1 2 |--> [1] U1(0)
| |
[0] U1(1) -->| 1 |
| |
-----------
Total elem: 2
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,2)
[[[1.00000e+00 1.00000e+00 ]]]
========================
BLOCK [#3]
|- [] : Qn index
|- Sym(): Qnum of correspond symmetry
-----------
| |
[1] U1(-1) -->| 1 1 |--> [2] U1(-2)
| |
[1] U1(-1) -->| 1 |
| |
-----------
Total elem: 1
type : Double (Float64)
cytnx device: CPU
Shape : (1,1,1)
[[[1.00000e+00 ]]]