@@ -37,13 +37,10 @@ function enlarge_northwest_corner(
37
37
E_west:: CTMRG_PF_EdgeTensor ,
38
38
C_northwest:: CTMRGCornerTensor ,
39
39
E_north:: CTMRG_PF_EdgeTensor ,
40
- A:: PFSandwich ,
40
+ A:: PFTensor ,
41
41
)
42
42
return @autoopt @tensor corner[χ_S D_S; χ_E D_E] :=
43
- E_west[χ_S D1; χ1] *
44
- C_northwest[χ1; χ2] *
45
- E_north[χ2 D2; χ_E] *
46
- tensor (A)[D1 D_S; D2 D_E]
43
+ E_west[χ_S D1; χ1] * C_northwest[χ1; χ2] * E_north[χ2 D2; χ_E] * A[D1 D_S; D2 D_E]
47
44
end
48
45
49
46
"""
@@ -77,13 +74,10 @@ function enlarge_northeast_corner(
77
74
E_north:: CTMRG_PF_EdgeTensor ,
78
75
C_northeast:: CTMRGCornerTensor ,
79
76
E_east:: CTMRG_PF_EdgeTensor ,
80
- A:: PFSandwich ,
77
+ A:: PFTensor ,
81
78
)
82
79
return @autoopt @tensor corner[χ_W D_W; χ_S D_S] :=
83
- E_north[χ_W D1; χ1] *
84
- C_northeast[χ1; χ2] *
85
- E_east[χ2 D2; χ_S] *
86
- tensor (A)[D_W D_S; D1 D2]
80
+ E_north[χ_W D1; χ1] * C_northeast[χ1; χ2] * E_east[χ2 D2; χ_S] * A[D_W D_S; D1 D2]
87
81
end
88
82
89
83
"""
@@ -117,13 +111,10 @@ function enlarge_southeast_corner(
117
111
E_east:: CTMRG_PF_EdgeTensor ,
118
112
C_southeast:: CTMRGCornerTensor ,
119
113
E_south:: CTMRG_PF_EdgeTensor ,
120
- A:: PFSandwich ,
114
+ A:: PFTensor ,
121
115
)
122
116
return @autoopt @tensor corner[χ_N D_N; χ_W D_W] :=
123
- E_east[χ_N D1; χ1] *
124
- C_southeast[χ1; χ2] *
125
- E_south[χ2 D2; χ_W] *
126
- tensor (A)[D_W D2; D_N D1]
117
+ E_east[χ_N D1; χ1] * C_southeast[χ1; χ2] * E_south[χ2 D2; χ_W] * A[D_W D2; D_N D1]
127
118
end
128
119
129
120
"""
@@ -157,13 +148,10 @@ function enlarge_southwest_corner(
157
148
E_south:: CTMRG_PF_EdgeTensor ,
158
149
C_southwest:: CTMRGCornerTensor ,
159
150
E_west:: CTMRG_PF_EdgeTensor ,
160
- A:: PFSandwich ,
151
+ A:: PFTensor ,
161
152
)
162
153
return @autoopt @tensor corner[χ_E D_E; χ_N D_N] :=
163
- E_south[χ_E D1; χ1] *
164
- C_southwest[χ1; χ2] *
165
- E_west[χ2 D2; χ_N] *
166
- tensor (A)[D2 D1; D_N D_E]
154
+ E_south[χ_E D1; χ1] * C_southwest[χ1; χ2] * E_west[χ2 D2; χ_N] * A[D2 D1; D_N D_E]
167
155
end
168
156
169
157
# Projector contractions
@@ -191,12 +179,12 @@ function left_projector(E_1, C, E_2, V, isqS, A::PEPSSandwich)
191
179
conj (V[χ4; χ3 D5 D6]) *
192
180
isqS[χ4; χ_out]
193
181
end
194
- function left_projector (E_1, C, E_2, V, isqS, A:: PFSandwich )
182
+ function left_projector (E_1, C, E_2, V, isqS, A:: PFTensor )
195
183
return @autoopt @tensor P_left[χ_in D_in; χ_out] :=
196
184
E_1[χ_in D1; χ1] *
197
185
C[χ1; χ2] *
198
186
E_2[χ2 D2; χ3] *
199
- tensor (A) [D1 D_in; D2 D3] *
187
+ A [D1 D_in; D2 D3] *
200
188
conj (V[χ4; χ3 D3]) *
201
189
isqS[χ4; χ_out]
202
190
end
@@ -223,11 +211,11 @@ function right_projector(E_1, C, E_2, U, isqS, A::PEPSSandwich)
223
211
C[χ3; χ4] *
224
212
E_1[χ4 D5 D6; χ_out]
225
213
end
226
- function right_projector (E_1, C, E_2, U, isqS, A:: PFSandwich )
214
+ function right_projector (E_1, C, E_2, U, isqS, A:: PFTensor )
227
215
return @autoopt @tensor P_right[χ_in; χ_out D_out] :=
228
216
isqS[χ_in; χ1] *
229
217
conj (U[χ1; χ2 D1]) *
230
- tensor (A) [D1 D_out; D2 D3] *
218
+ A [D1 D_out; D2 D3] *
231
219
E_2[χ2 D2; χ3] *
232
220
C[χ3; χ4] *
233
221
E_1[χ4 D3; χ_out]
@@ -367,41 +355,41 @@ function half_infinite_environment(
367
355
end
368
356
function half_infinite_environment (
369
357
C_1, C_2, E_1, E_2, E_3, E_4, A_1:: P , A_2:: P
370
- ) where {P<: PFSandwich }
358
+ ) where {P<: PFTensor }
371
359
return @autoopt @tensor env[χ_in D_in; χ_out D_out] :=
372
360
E_1[χ_in D1; χ1] *
373
361
C_1[χ1; χ2] *
374
362
E_2[χ2 D3; χ3] *
375
- tensor ( A_1) [D1 D_in; D3 D9] *
376
- tensor ( A_2) [D9 D_out; D5 D7] *
363
+ A_1[D1 D_in; D3 D9] *
364
+ A_2[D9 D_out; D5 D7] *
377
365
E_3[χ3 D5; χ4] *
378
366
C_2[χ4; χ5] *
379
367
E_4[χ5 D7; χ_out]
380
368
end
381
369
function half_infinite_environment (
382
370
C_1, C_2, E_1, E_2, E_3, E_4, x:: AbstractTensor{T,S,2} , A_1:: P , A:: P
383
- ) where {T,S,P<: PFSandwich }
371
+ ) where {T,S,P<: PFTensor }
384
372
return @autoopt @tensor env_x[χ_in D_in] :=
385
373
E_1[χ_in D1; χ1] *
386
374
C_1[χ1; χ2] *
387
375
E_2[χ2 D3; χ3] *
388
- tensor ( A_1) [D1 D_in; D3 D9] *
389
- tensor ( A_2) [D9 D11; D5 D7] *
376
+ A_1[D1 D_in; D3 D9] *
377
+ A_2[D9 D11; D5 D7] *
390
378
E_3[χ3 D5; χ4] *
391
379
C_2[χ4; χ5] *
392
380
E_4[χ5 D7; χ6] *
393
381
x[χ6 D11]
394
382
end
395
383
function half_infinite_environment (
396
384
x:: AbstractTensor{T,S,2} , C_1, C_2, E_1, E_2, E_3, E_4, A_1:: P , A_2:: P
397
- ) where {T,S,P<: PFSandwich }
385
+ ) where {T,S,P<: PFTensor }
398
386
return @autoopt @tensor env_x[χ_in D_in] :=
399
387
x[χ1 D1 D2] *
400
388
conj (E_1[χ1 D3; χ2]) *
401
389
conj (C_1[χ2; χ3]) *
402
390
conj (E_2[χ3 D5; χ4]) *
403
- conj (tensor ( A_1) [D3 D1; D5 D11]) *
404
- conj (tensor ( A_2) [D11 D_in; D7 D9]) *
391
+ conj (A_1[D3 D1; D5 D11]) *
392
+ conj (A_2[D11 D_in; D7 D9]) *
405
393
conj (E_3[χ4 D7; χ5]) *
406
394
conj (C_2[χ5; χ6]) *
407
395
conj (E_4[χ6 D9; χ_in])
@@ -666,21 +654,21 @@ function full_infinite_environment(
666
654
A_2:: P ,
667
655
A_3:: P ,
668
656
A_4:: P ,
669
- ) where {P<: PFSandwich }
657
+ ) where {P<: PFTensor }
670
658
return @autoopt @tensor env[χ_in D_in; χ_out D_out] :=
671
659
E_1[χ_in D1; χ1] *
672
660
C_1[χ1; χ2] *
673
661
E_2[χ2 D3; χ3] *
674
- tensor ( A_1) [D1 D_in; D3 D11] *
675
- tensor ( A_2) [D11 D9; D5 D7] *
662
+ A_1[D1 D_in; D3 D11] *
663
+ A_2[D11 D9; D5 D7] *
676
664
E_3[χ3 D5; χ4] *
677
665
C_2[χ4; χ5] *
678
666
E_4[χ5 D7; χ6] *
679
667
E_5[χ6 D13; χ7] *
680
668
C_3[χ7; χ8] *
681
669
E_6[χ8 D15; χ9] *
682
- tensor ( A_3) [D17 D15; D9 D13] *
683
- tensor ( A_4) [D21 D19; D_out D17] *
670
+ A_3[D17 D15; D9 D13] *
671
+ A_4[D21 D19; D_out D17] *
684
672
E_7[χ9 D19; χ10] *
685
673
C_4[χ10; χ11] *
686
674
E_8[χ11 D21; χ_out]
@@ -703,21 +691,21 @@ function full_infinite_environment(
703
691
A_2:: P ,
704
692
A_3:: P ,
705
693
A_4:: P ,
706
- ) where {T,S,P<: PFSandwich }
694
+ ) where {T,S,P<: PFTensor }
707
695
return @autoopt @tensor env_x[χ_in D_in] :=
708
696
E_1[χ_in D1; χ1] *
709
697
C_1[χ1; χ2] *
710
698
E_2[χ2 D3; χ3] *
711
- tensor ( A_1) [D1 D_in; D3 D11] *
712
- tensor ( A_2) [D11 D9; D5 D7] *
699
+ A_1[D1 D_in; D3 D11] *
700
+ A_2[D11 D9; D5 D7] *
713
701
E_3[χ3 D5; χ4] *
714
702
C_2[χ4; χ5] *
715
703
E_4[χ5 D7; χ6] *
716
704
E_5[χ6 D13; χ7] *
717
705
C_3[χ7; χ8] *
718
706
E_6[χ8 D15; χ9] *
719
- tensor ( A_3) [D17 D15; D9 D13] *
720
- tensor ( A_4) [D21 D19; D_x D17] *
707
+ A_3[D17 D15; D9 D13] *
708
+ A_4[D21 D19; D_x D17] *
721
709
E_7[χ9 D19; χ10] *
722
710
C_4[χ10; χ11] *
723
711
E_8[χ11 D21; χ_x] *
@@ -741,22 +729,22 @@ function full_infinite_environment(
741
729
A_2:: P ,
742
730
A_3:: P ,
743
731
A_4:: P ,
744
- ) where {T,S,P<: PFSandwich }
732
+ ) where {T,S,P<: PFTensor }
745
733
return @autoopt @tensor x_env[χ_in D_in] :=
746
734
x[χ_x D_x] *
747
735
E_1[χ_x D1; χ1] *
748
736
C_1[χ1; χ2] *
749
737
E_2[χ2 D3; χ3] *
750
- tensor ( A_1) [D1 D_x; D3 D11] *
751
- tensor ( A_2) [D11 D9; D5 D7] *
738
+ A_1[D1 D_x; D3 D11] *
739
+ A_2[D11 D9; D5 D7] *
752
740
E_3[χ3 D5; χ4] *
753
741
C_2[χ4; χ5] *
754
742
E_4[χ5 D7; χ6] *
755
743
E_5[χ6 D13; χ7] *
756
744
C_3[χ7; χ8] *
757
745
E_6[χ8 D15; χ9] *
758
- tensor ( A_3) [D17 D15; D9 D13] *
759
- tensor ( A_4) [D21 D19; D_in D17] *
746
+ A_3[D17 D15; D9 D13] *
747
+ A_4[D21 D19; D_in D17] *
760
748
E_7[χ9 D19; χ10] *
761
749
C_4[χ10; χ11] *
762
750
E_8[χ11 D21; χ_in]
@@ -849,14 +837,14 @@ function renormalize_northwest_corner(
849
837
P_left[χ4 D7 D8; χ_out]
850
838
end
851
839
function renormalize_northwest_corner (
852
- E_west, C_northwest, E_north, P_left, P_right, A:: PFSandwich
840
+ E_west, C_northwest, E_north, P_left, P_right, A:: PFTensor
853
841
)
854
842
return @autoopt @tensor corner[χ_in; χ_out] :=
855
843
P_right[χ_in; χ1 D1] *
856
844
E_west[χ1 D3; χ2] *
857
845
C_northwest[χ2; χ3] *
858
846
E_north[χ3 D5; χ4] *
859
- tensor (A) [D3 D1; D5 D7] *
847
+ A [D3 D1; D5 D7] *
860
848
P_left[χ4 D7; χ_out]
861
849
end
862
850
@@ -904,14 +892,14 @@ function renormalize_northeast_corner(
904
892
P_left[χ4 D7 D8; χ_out]
905
893
end
906
894
function renormalize_northeast_corner (
907
- E_north, C_northeast, E_east, P_left, P_right, A:: PFSandwich
895
+ E_north, C_northeast, E_east, P_left, P_right, A:: PFTensor
908
896
)
909
897
return @autoopt @tensor corner[χ_in; χ_out] :=
910
898
P_right[χ_in; χ1 D1] *
911
899
E_north[χ1 D3; χ2] *
912
900
C_northeast[χ2; χ3] *
913
901
E_east[χ3 D5; χ4] *
914
- tensor (A) [D1 D7; D3 D5] *
902
+ A [D1 D7; D3 D5] *
915
903
P_left[χ4 D7; χ_out]
916
904
end
917
905
@@ -957,14 +945,14 @@ function renormalize_southeast_corner(
957
945
P_left[χ4 D7 D8; χ_out]
958
946
end
959
947
function renormalize_southeast_corner (
960
- E_east, C_southeast, E_south, P_left, P_right, A:: PFSandwich
948
+ E_east, C_southeast, E_south, P_left, P_right, A:: PFTensor
961
949
)
962
950
return @autoopt @tensor corner[χ_in; χ_out] :=
963
951
P_right[χ_in; χ1 D1] *
964
952
E_east[χ1 D3; χ2] *
965
953
C_southeast[χ2; χ3] *
966
954
E_south[χ3 D5; χ4] *
967
- tensor (A) [D7 D5; D1 D3] *
955
+ A [D7 D5; D1 D3] *
968
956
P_left[χ4 D7; χ_out]
969
957
end
970
958
@@ -1010,14 +998,14 @@ function renormalize_southwest_corner(
1010
998
P_left[χ4 D7 D8; χ_out]
1011
999
end
1012
1000
function renormalize_southwest_corner (
1013
- E_south, C_southwest, E_west, P_left, P_right, A:: PFSandwich
1001
+ E_south, C_southwest, E_west, P_left, P_right, A:: PFTensor
1014
1002
)
1015
1003
return @autoopt @tensor corner[χ_in; χ_out] :=
1016
1004
P_right[χ_in; χ1 D1] *
1017
1005
E_south[χ1 D3; χ2] *
1018
1006
C_southwest[χ2; χ3] *
1019
1007
E_west[χ3 D5; χ4] *
1020
- tensor (A) [D5 D3; D7 D1] *
1008
+ A [D5 D3; D7 D1] *
1021
1009
P_left[χ4 D7; χ_out]
1022
1010
end
1023
1011
@@ -1130,14 +1118,9 @@ function renormalize_north_edge(
1130
1118
P_right[χ_W; χ1 D5 D6]
1131
1119
return out
1132
1120
end
1133
- function renormalize_north_edge (
1134
- E_north:: CTMRG_PF_EdgeTensor , P_left, P_right, A:: PFSandwich
1135
- )
1121
+ function renormalize_north_edge (E_north:: CTMRG_PF_EdgeTensor , P_left, P_right, A:: PFTensor )
1136
1122
return @autoopt @tensor edge[χ_W D_S; χ_E] :=
1137
- E_north[χ1 D1; χ2] *
1138
- tensor (A)[D5 D_S; D1 D3] *
1139
- P_left[χ2 D3; χ_E] *
1140
- P_right[χ_W; χ1 D5]
1123
+ E_north[χ1 D1; χ2] * A[D5 D_S; D1 D3] * P_left[χ2 D3; χ_E] * P_right[χ_W; χ1 D5]
1141
1124
end
1142
1125
1143
1126
"""
@@ -1177,12 +1160,9 @@ function renormalize_east_edge(
1177
1160
P_bottom[χ2 D3 D4; χ_S] *
1178
1161
P_top[χ_N; χ1 D5 D6]
1179
1162
end
1180
- function renormalize_east_edge (E_east:: CTMRG_PF_EdgeTensor , P_bottom, P_top, A:: PFSandwich )
1163
+ function renormalize_east_edge (E_east:: CTMRG_PF_EdgeTensor , P_bottom, P_top, A:: PFTensor )
1181
1164
return @autoopt @tensor edge[χ_N D_W; χ_S] :=
1182
- E_east[χ1 D1; χ2] *
1183
- tensor (A)[D_W D3; D5 D1] *
1184
- P_bottom[χ2 D3; χ_S] *
1185
- P_top[χ_N; χ1 D5]
1165
+ E_east[χ1 D1; χ2] * A[D_W D3; D5 D1] * P_bottom[χ2 D3; χ_S] * P_top[χ_N; χ1 D5]
1186
1166
end
1187
1167
1188
1168
"""
@@ -1220,14 +1200,9 @@ function renormalize_south_edge(
1220
1200
P_left[χ2 D3 D4; χ_W] *
1221
1201
P_right[χ_E; χ1 D5 D6]
1222
1202
end
1223
- function renormalize_south_edge (
1224
- E_south:: CTMRG_PF_EdgeTensor , P_left, P_right, A:: PFSandwich
1225
- )
1203
+ function renormalize_south_edge (E_south:: CTMRG_PF_EdgeTensor , P_left, P_right, A:: PFTensor )
1226
1204
return @autoopt @tensor edge[χ_E D_N; χ_W] :=
1227
- E_south[χ1 D1; χ2] *
1228
- tensor (A)[D3 D1; D_N D5] *
1229
- P_left[χ2 D3; χ_W] *
1230
- P_right[χ_E; χ1 D5]
1205
+ E_south[χ1 D1; χ2] * A[D3 D1; D_N D5] * P_left[χ2 D3; χ_W] * P_right[χ_E; χ1 D5]
1231
1206
end
1232
1207
1233
1208
"""
@@ -1284,12 +1259,9 @@ function renormalize_west_edge(
1284
1259
P_bottom[χ2 D3 D4; χ_N] *
1285
1260
P_top[χ_S; χ1 D5 D6]
1286
1261
end
1287
- function renormalize_west_edge (E_west:: CTMRG_PF_EdgeTensor , P_bottom, P_top, A:: PFSandwich )
1262
+ function renormalize_west_edge (E_west:: CTMRG_PF_EdgeTensor , P_bottom, P_top, A:: PFTensor )
1288
1263
return @autoopt @tensor edge[χ_S D_E; χ_N] :=
1289
- E_west[χ1 D1; χ2] *
1290
- tensor (A)[D1 D5; D3 D_E] *
1291
- P_bottom[χ2 D3; χ_N] *
1292
- P_top[χ_S; χ1 D5]
1264
+ E_west[χ1 D1; χ2] * A[D1 D5; D3 D_E] * P_bottom[χ2 D3; χ_N] * P_top[χ_S; χ1 D5]
1293
1265
end
1294
1266
1295
1267
# Gauge fixing contractions
0 commit comments