Skip to content

Commit 033ece3

Browse files
committed
replaced A.Dagger() by Dagger().permute_(A.labels())
this achieves that the output of the Dagger is in the same form as the original tensor
1 parent 016deea commit 033ece3

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

example/DMRG/dmrg_two_sites_U1.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,11 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
111111
anet.FromString(["L: -2,-1,-3",\
112112
"A: -1,-4,1",\
113113
"M: -2,0,-4,-5",\
114-
"A_Conj: 2,-3,-5",\
114+
"A_Conj: -3,-5,2",\
115115
"TOUT: 0;1,2"])
116116
for p in range(Nsites - 1):
117-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Dagger(),M])
117+
anet.PutUniTensors(["L","A","A_Conj","M"], \
118+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
118119
LR[p+1] = anet.Launch()
119120

120121
Ekeep = []
@@ -143,9 +144,10 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
143144
anet.FromString(["R: -2,-1,-3",\
144145
"B: 1,-4,-1",\
145146
"M: 0,-2,-4,-5",\
146-
"B_Conj: -3,2,-5",\
147+
"B_Conj: 2,-3,-5",\
147148
"TOUT: 0;1,2"])
148-
anet.PutUniTensors(["R","B","M","B_Conj"],[LR[p+2],A[p+1],M,A[p+1].Dagger()])
149+
anet.PutUniTensors(["R","B","M","B_Conj"], \
150+
[LR[p+2],A[p+1],M,A[p+1].Dagger().permute_(A[p+1].labels())])
149151
LR[p+1] = anet.Launch()
150152

151153
print('Sweep[r->l]: %d/%d, Loc: %d,Energy: %f' % (k, numsweeps, p, Ekeep[-1]))
@@ -177,9 +179,10 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
177179
anet.FromString(["L: -2,-1,-3",\
178180
"A: -1,-4,1",\
179181
"M: -2,0,-4,-5",\
180-
"A_Conj: 2,-3,-5",\
182+
"A_Conj: -3,-5,2",\
181183
"TOUT: 0;1,2"])
182-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Dagger(),M])
184+
anet.PutUniTensors(["L","A","A_Conj","M"], \
185+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
183186
LR[p+1] = anet.Launch()
184187

185188
print('Sweep[l->r]: %d/%d, Loc: %d,Energy: %f' % (k, numsweeps, p, Ekeep[-1]))

example/DMRG/dmrg_two_sites_dense.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
9292
"A_Conj: -3,-5,2",\
9393
"TOUT: 0,1,2"])
9494
# or you can do: anet = cytnx.Network("L_AMAH.net")
95-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Conj(),M])
95+
anet.PutUniTensors(["L","A","A_Conj","M"], \
96+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
9697
LR[p+1] = anet.Launch()
9798

9899
# Recover the original MPS labels
@@ -131,7 +132,8 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
131132
"B_Conj: 2,-5,-3",\
132133
"TOUT: 0;1,2"])
133134
# or you can do: anet = cytnx.Network("R_AMAH.net")
134-
anet.PutUniTensors(["R","B","M","B_Conj"],[LR[p+2],A[p+1],M,A[p+1].Conj()])
135+
anet.PutUniTensors(["R","B","M","B_Conj"], \
136+
[LR[p+2],A[p+1],M,A[p+1].Dagger().permute_(A[p+1].labels())])
135137
LR[p+1] = anet.Launch()
136138

137139
print('Sweep[r->l]: %d/%d, Loc: %d,Energy: %f' % (k, numsweeps, p, Ekeep[-1]))
@@ -167,7 +169,8 @@ def optimize_psi(psi, functArgs, maxit=2, krydim=4):
167169
"TOUT: 0,1,2"])
168170
# or you can do: anet = cytnx.Network("L_AMAH.net")
169171

170-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Conj(),M])
172+
anet.PutUniTensors(["L","A","A_Conj","M"], \
173+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
171174
LR[p+1] = anet.Launch()
172175

173176
print('Sweep[l->r]: %d/%d, Loc: %d,Energy: %f' % (k, numsweeps, p, Ekeep[-1]))

example/TDVP/tdvp1_dense.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ def get_energy(A, M):
8080
"TOUT: 0,1,2"])
8181
# or you can do: anet = cytnx.Network("L_AMAH.net")
8282
for p in range(0, N):
83-
anet.PutUniTensors(["L","A","A_Conj","M"],[L,A[p],A[p].Conj(),M])
83+
anet.PutUniTensors(["L","A","A_Conj","M"], \
84+
[L,A[p],A[p].Dagger().permute_(A[p].labels()),M])
8485
L = anet.Launch()
8586
E = cytnx.Contract(L, R0).item()
8687
print('energy:', E)
@@ -138,7 +139,8 @@ def get_energy(A, M):
138139
"A_Conj: -3,-5,2",\
139140
"TOUT: 0,1,2"])
140141
# or you can do: anet = cytnx.Network("L_AMAH.net")
141-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Conj(),M])
142+
anet.PutUniTensors(["L","A","A_Conj","M"], \
143+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
142144
LR[p+1] = anet.Launch()
143145

144146
# Recover the original MPS labels
@@ -175,7 +177,8 @@ def get_energy(A, M):
175177
"B_Conj: 2,-5,-3",\
176178
"TOUT: ;0,1,2"])
177179
# or you can do: anet = cytnx.Network("R_AMAH.net")
178-
anet.PutUniTensors(["R","B","M","B_Conj"],[LR[p+1],A[p],M,A[p].Conj()])
180+
anet.PutUniTensors(["R","B","M","B_Conj"], \
181+
[LR[p+1],A[p],M,A[p].Dagger().permute_(A[p].labels())])
179182
old_LR = LR[p].clone()
180183
if p != 0:
181184
LR[p] = anet.Launch()
@@ -215,7 +218,8 @@ def get_energy(A, M):
215218
"A_Conj: -3,-5,2",\
216219
"TOUT: 0,1,2"])
217220

218-
anet.PutUniTensors(["L","A","A_Conj","M"],[LR[p],A[p],A[p].Conj(),M])
221+
anet.PutUniTensors(["L","A","A_Conj","M"], \
222+
[LR[p],A[p],A[p].Dagger().permute_(A[p].labels()),M])
219223
old_LR = LR[p+1].clone()
220224

221225

@@ -246,15 +250,17 @@ def Local_meas(A, B, Op, site):
246250
"TOUT: 2;4"])
247251
for i in range(0, N):
248252
if i != site:
249-
anet.PutUniTensors(["l","A","B"],[l,A[i],B[i].Conj()])
253+
anet.PutUniTensors(["l","A","B"], \
254+
[l,A[i],B[i].Dagger().permute_(B[i].labels())])
250255
l = anet.Launch()
251256
else:
252257
tmp = A[i].relabel(1, "_aux_up")
253258
Op = Op.relabels(["_aux_up", "_aux_low"])
254259
tmp = cytnx.Contract(tmp, Op)
255260
tmp.relabel_("_aux_low", A[i].labels()[1])
256261
tmp.permute_(A[i].labels())
257-
anet.PutUniTensors(["l","A","B"],[l,tmp,B[i].Conj()])
262+
anet.PutUniTensors(["l","A","B"], \
263+
[l,tmp,B[i].Dagger().permute_(B[i].labels())])
258264
l = anet.Launch()
259265

260266
return l.reshape(1).item()

0 commit comments

Comments
 (0)