Skip to content

Commit 9d4f2e6

Browse files
committed
Manually fix enlarged corner contractions
1 parent 3bbd078 commit 9d4f2e6

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

src/algorithms/contractions/ctmrg_contractions.jl

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ function enlarge_northwest_corner(
2525
E_north::CTMRG_PEPS_EdgeTensor,
2626
A::PEPSSandwich,
2727
)
28-
return @autoopt @tensor corner[χ_S D_Sabove D_Sbelow; χ_E D_Eabove D_Ebelow] :=
29-
E_west[χ_S D1 D2; χ1] *
30-
C_northwest[χ1; χ2] *
31-
E_north[χ2 D3 D4; χ_E] *
32-
ket(A)[d; D3 D_Eabove D_Sabove D1] *
33-
conj(bra(A)[d; D4 D_Ebelow D_Sbelow D2])
28+
return @tensor order = (χ1, χ2, D2, D4, d, D1, D3) begin
29+
corner[χ_S D_Sabove D_Sbelow; χ_E D_Eabove D_Ebelow] :=
30+
E_west[χ_S D1 D2; χ1] *
31+
C_northwest[χ1; χ2] *
32+
E_north[χ2 D3 D4; χ_E] *
33+
ket(A)[d; D3 D_Eabove D_Sabove D1] *
34+
conj(bra(A)[d; D4 D_Ebelow D_Sbelow D2])
35+
end
3436
end
3537
function enlarge_northwest_corner(
3638
E_west::CTMRG_PF_EdgeTensor,
@@ -61,12 +63,14 @@ function enlarge_northeast_corner(
6163
E_east::CTMRG_PEPS_EdgeTensor,
6264
A::PEPSSandwich,
6365
)
64-
return @autoopt @tensor corner[χ_W D_Wabove D_Wbelow; χ_S D_Sabove D_Sbelow] :=
65-
E_north[χ_W D1 D2; χ1] *
66-
C_northeast[χ1; χ2] *
67-
E_east[χ2 D3 D4; χ_S] *
68-
ket(A)[d; D1 D3 D_Sabove D_Wabove] *
69-
conj(bra(A)[d; D2 D4 D_Sbelow D_Wbelow])
66+
return @tensor order = (χ1, χ2, D2, D4, d, D1, D3) begin
67+
corner[χ_W D_Wabove D_Wbelow; χ_S D_Sabove D_Sbelow] :=
68+
E_north[χ_W D1 D2; χ1] *
69+
C_northeast[χ1; χ2] *
70+
E_east[χ2 D3 D4; χ_S] *
71+
ket(A)[d; D1 D3 D_Sabove D_Wabove] *
72+
conj(bra(A)[d; D2 D4 D_Sbelow D_Wbelow])
73+
end
7074
end
7175
function enlarge_northeast_corner(
7276
E_north::CTMRG_PF_EdgeTensor,
@@ -97,12 +101,14 @@ function enlarge_southeast_corner(
97101
E_south::CTMRG_PEPS_EdgeTensor,
98102
A::PEPSSandwich,
99103
)
100-
return @autoopt @tensor corner[χ_N D_Nabove D_Nbelow; χ_W D_Wabove D_Wbelow] :=
101-
E_east[χ_N D1 D2; χ1] *
102-
C_southeast[χ1; χ2] *
103-
E_south[χ2 D3 D4; χ_W] *
104-
ket(A)[d; D_Nabove D1 D3 D_Wabove] *
105-
conj(bra(A)[d; D_Nbelow D2 D4 D_Wbelow])
104+
return @tensor order = (χ1, χ2, D2, D4, d, D1, D3) begin
105+
corner[χ_N D_Nabove D_Nbelow; χ_W D_Wabove D_Wbelow] :=
106+
E_east[χ_N D1 D2; χ1] *
107+
C_southeast[χ1; χ2] *
108+
E_south[χ2 D3 D4; χ_W] *
109+
ket(A)[d; D_Nabove D1 D3 D_Wabove] *
110+
conj(bra(A)[d; D_Nbelow D2 D4 D_Wbelow])
111+
end
106112
end
107113
function enlarge_southeast_corner(
108114
E_east::CTMRG_PF_EdgeTensor,
@@ -133,12 +139,14 @@ function enlarge_southwest_corner(
133139
E_west::CTMRG_PEPS_EdgeTensor,
134140
A::PEPSSandwich,
135141
)
136-
return @autoopt @tensor corner[χ_E D_Eabove D_Ebelow; χ_N D_Nabove D_Nbelow] :=
137-
E_south[χ_E D1 D2; χ1] *
138-
C_southwest[χ1; χ2] *
139-
E_west[χ2 D3 D4; χ_N] *
140-
ket(A)[d; D_Nabove D_Eabove D1 D3] *
141-
conj(bra(A)[d; D_Nbelow D_Ebelow D2 D4])
142+
return @tensor order = (χ1, χ2, D2, D4, d, D1, D3) begin
143+
corner[χ_E D_Eabove D_Ebelow; χ_N D_Nabove D_Nbelow] :=
144+
E_south[χ_E D1 D2; χ1] *
145+
C_southwest[χ1; χ2] *
146+
E_west[χ2 D3 D4; χ_N] *
147+
ket(A)[d; D_Nabove D_Eabove D1 D3] *
148+
conj(bra(A)[d; D_Nbelow D_Ebelow D2 D4])
149+
end
142150
end
143151
function enlarge_southwest_corner(
144152
E_south::CTMRG_PF_EdgeTensor,

0 commit comments

Comments
 (0)