@@ -24,51 +24,51 @@ function Base.:*(H::Hᶜ{MPO}, v::ITensor)
2424 Hᶜᴿv = v * δˡ (n) * Hᴿ[n]
2525 # We now start building terms where C overlap with the local Hamiltonian
2626 # We start with the tensor AL[n] - v - AR[n+1] ... AR[n + range_∑h - 1]
27- Hᶜʰv = v * ψ. AL[n] * δˡ (n - 1 ) * ψ′ . AL [n] * ∑h[n][ 1 ] # left extremity
27+ Hᶜʰv = v * ψ. AL[n] * δˡ (n - 1 ) * ∑h [n][ 1 ] * ψ′ . AL[n ] # left extremity
2828 common_sites = findsites (ψ, ∑h[n])
2929 idx = 2 # list the sites Σh, we start at 2 because n is already taken into account
3030 for k in 1 : (range_∑h - 2 )
3131 if n + k == common_sites[idx]
32- Hᶜʰv = Hᶜʰv * ψ. AR[n + k] * ψ′. AR[n + k] * ∑h[n][idx ]
32+ Hᶜʰv = Hᶜʰv * ψ. AR[n + k] * ∑h[n][idx] * ψ′. AR[n + k]
3333 idx += 1
3434 else
35- Hᶜʰv = Hᶜʰv * ψ. AR[n + k] * ψ′ . AR[ n + k] * δˢ ( n + k)
35+ Hᶜʰv = Hᶜʰv * ψ. AR[n + k] * δˢ ( n + k) * ψ′ . AR[ n + k]
3636 end
3737 end
3838 Hᶜʰv =
3939 Hᶜʰv *
4040 ψ. AR[n + range_∑h - 1 ] *
4141 δʳ (n + range_∑h - 1 ) *
42- ψ′ . AR[n + range_∑h - 1 ] *
43- ∑h[n][ end ] # right most extremity
42+ ∑h[n][ end ] *
43+ ψ′ . AR[n + range_∑h - 1 ] # right most extremity
4444 # Now we are building contributions of the form AL[n - j] ... AL[n] - v - AR[n + 1] ... AR[n + range_∑h - 1 - j]
4545 for j in 1 : (range_∑h - 2 )
46- temp_Hᶜʰv = ψ. AL[n - j] * δˡ (n - 1 - j) * ψ′ . AL [n - j] * ∑h [n - j][ 1 ]
46+ temp_Hᶜʰv = ψ. AL[n - j] * δˡ (n - 1 - j) * ∑h [n - j][ 1 ] * ψ′ . AL [n - j]
4747 common_sites = findsites (ψ, ∑h[n - j])
4848 idx = 2
4949 for k in 1 : j
5050 if n - j + k == common_sites[idx]
51- temp_Hᶜʰv = temp_Hᶜʰv * ψ. AL[n - j + k] * ψ′ . AL [n - j + k] * ∑h [n - j][idx ]
51+ temp_Hᶜʰv = temp_Hᶜʰv * ψ. AL[n - j + k] * ∑h [n - j][idx] * ψ′ . AL [n - j + k ]
5252 idx += 1
5353 else
54- temp_Hᶜʰv = temp_Hᶜʰv * ψ. AL[n - j + k] * ψ′ . AL[ n - j + k] * δˢ ( n - j + k)
54+ temp_Hᶜʰv = temp_Hᶜʰv * ψ. AL[n - j + k] * δˢ ( n - j + k) * ψ′ . AL[ n - j + k]
5555 end
5656 end
5757 # Finished the AL part
5858 temp_Hᶜʰv = temp_Hᶜʰv * v
5959 for k in (j + 1 ): (range_∑h - 2 )
6060 if n - j + k == common_sites[idx]
61- temp_Hᶜʰv = temp_Hᶜʰv * ψ. AR[n - j + k] * ψ′ . AR [n - j + k] * ∑h [n - j][idx ]
61+ temp_Hᶜʰv = temp_Hᶜʰv * ψ. AR[n - j + k] * ∑h [n - j][idx] * ψ′ . AR [n - j + k ]
6262 idx += 1
6363 else
64- temp_Hᶜʰv = temp_Hᶜʰv * ψ. AR[n - j + k] * ψ′ . AR[ n - j + k] * δˢ ( n - j + k)
64+ temp_Hᶜʰv = temp_Hᶜʰv * ψ. AR[n - j + k] * δˢ ( n - j + k) * ψ′ . AR[ n - j + k]
6565 end
6666 end
6767 temp_Hᶜʰv =
6868 temp_Hᶜʰv *
69- ∑h[n - j][end ] *
7069 ψ. AR[n - j + range_∑h - 1 ] *
7170 δʳ (n - j + range_∑h - 1 ) *
71+ ∑h[n - j][end ] *
7272 ψ′. AR[n - j + range_∑h - 1 ]
7373 Hᶜʰv = Hᶜʰv + temp_Hᶜʰv
7474 end
@@ -107,34 +107,34 @@ function Base.:*(H::Hᴬᶜ{MPO}, v::ITensor)
107107 idx = 2 # list the sites Σh, we start at 2 because n is already taken into account
108108 for k in 1 : (range_∑h - 2 )
109109 if n + k == common_sites[idx]
110- Hᴬᶜʰv = Hᴬᶜʰv * ψ. AR[n + k] * ψ′. AR[n + k] * ∑h[n][idx ]
110+ Hᴬᶜʰv = Hᴬᶜʰv * ψ. AR[n + k] * ∑h[n][idx] * ψ′. AR[n + k]
111111 idx += 1
112112 else
113- Hᴬᶜʰv = Hᴬᶜʰv * ψ. AR[n + k] * ψ′ . AR[ n + k] * δˢ ( n + k)
113+ Hᴬᶜʰv = Hᴬᶜʰv * ψ. AR[n + k] * δˢ ( n + k) * ψ′ . AR[ n + k]
114114 end
115115 end
116116 Hᴬᶜʰv =
117117 Hᴬᶜʰv *
118- ∑h[n][end ] *
119118 ψ. AR[n + range_∑h - 1 ] *
120- ψ′. AR[n + range_∑h - 1 ] *
121- δʳ (n + range_∑h - 1 ) # rightmost extremity
119+ δʳ (n + range_∑h - 1 ) *
120+ ∑h[n][end ] *
121+ ψ′. AR[n + range_∑h - 1 ] # rightmost extremity
122122 # Now we are building contributions of the form AL[n - j] ... AL[n-1] - v - AR[n + 1] ... AR[n + range_∑h - 1 - j]
123123 for j in 1 : (range_∑h - 1 )
124- temp_Hᴬᶜʰv = ψ. AL[n - j] * δˡ (n - j - 1 ) * ψ′ . AL [n - j] * ∑h [n - j][ 1 ]
124+ temp_Hᴬᶜʰv = ψ. AL[n - j] * δˡ (n - j - 1 ) * ∑h [n - j][ 1 ] * ψ′ . AL [n - j]
125125 common_sites = findsites (ψ, ∑h[n - j])
126126 idx = 2
127127 for k in 1 : (j - 1 )
128128 if n - j + k == common_sites[idx]
129- temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AL[n - j + k] * ψ′ . AL [n - j + k] * ∑h [n - j][idx ]
129+ temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AL[n - j + k] * ∑h [n - j][idx] * ψ′ . AL [n - j + k ]
130130 idx += 1
131131 else
132- temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AL[n - j + k] * ψ′ . AL[ n - j + k] * δˢ ( n - j + k)
132+ temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AL[n - j + k] * δˢ ( n - j + k) * ψ′ . AL[ n - j + k]
133133 end
134134 end
135135 # Finished with AL, treating the center AC = v
136136 if j == range_∑h - 1
137- temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * v * δʳ (n - j + range_∑h - 1 ) * ∑h[n - j][ end ]
137+ temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * v * ∑h[n - j][ end ] * δʳ (n - j + range_∑h - 1 )
138138 else
139139 if n == common_sites[idx] # need to check whether we need to branch v
140140 temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * v * ∑h[n - j][idx]
@@ -144,18 +144,18 @@ function Base.:*(H::Hᴬᶜ{MPO}, v::ITensor)
144144 end
145145 for k in (j + 1 ): (range_∑h - 2 )
146146 if n + k - j == common_sites[idx]
147- temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AR[n + k - j] * ψ′ . AR [n + k - j] * ∑h [n - j][idx ]
147+ temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AR[n + k - j] * ∑h [n - j][idx] * ψ′ . AR [n + k - j]
148148 idx += 1
149149 else
150- temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AR[n + k - j] * ψ′ . AR[ n + k - j] * δˢ ( n + k - j)
150+ temp_Hᴬᶜʰv = temp_Hᴬᶜʰv * ψ. AR[n + k - j] * δˢ ( n + k - j) * ψ′ . AR[ n + k - j]
151151 end
152152 end
153153 temp_Hᴬᶜʰv =
154154 temp_Hᴬᶜʰv *
155- ∑h[n - j][end ] *
156155 ψ. AR[n + range_∑h - 1 - j] *
157- ψ′. AR[n + range_∑h - 1 - j] *
158- δʳ (n - j + range_∑h - 1 )
156+ δʳ (n - j + range_∑h - 1 ) *
157+ ∑h[n - j][end ] *
158+ ψ′. AR[n + range_∑h - 1 - j]
159159 end
160160 Hᴬᶜʰv = Hᴬᶜʰv + temp_Hᴬᶜʰv
161161 end
@@ -192,12 +192,12 @@ function left_environment(∑h::InfiniteSum{MPO}, ψ::InfiniteCanonicalMPS; tol=
192192 hᴸ[k] =
193193 hᴸ[k] *
194194 ψ. AL[k - range_∑h + j] *
195- ψ′ . AL[ k - range_∑h + j ] *
196- ∑h[( k - range_∑h + 1 , k - range_∑h + 2 )][idx ]
195+ ∑h[( k - range_∑h + 1 , k - range_∑h + 2 )][idx ] *
196+ ψ′ . AL[ k - range_∑h + j ]
197197 idx += 1
198198 else
199199 hᴸ[k] =
200- hᴸ[k] * ψ. AL[k - range_∑h + j] * ψ′ . AL[ k - range_∑h + j] * δˢ ( k - range_∑h + j)
200+ hᴸ[k] * ψ. AL[k - range_∑h + j] * δˢ ( k - range_∑h + j) * ψ′ . AL[ k - range_∑h + j]
201201 end
202202 end
203203 end
@@ -242,15 +242,15 @@ function right_environment(∑h::InfiniteSum{MPO}, ψ::InfiniteCanonicalMPS; tol
242242
243243 hᴿ = Vector {ITensor} (undef, Nsites)
244244 for k in 1 : Nsites
245- hᴿ[k] = ψ. AR[k + range_∑h] * ∑h [k + 1 ][end ] * ψ′. AR[k + range_∑h] * δʳ (k + range_∑h)
245+ hᴿ[k] = ψ. AR[k + range_∑h] * δʳ (k + range_∑h) * ∑h [k + 1 ][end ] * ψ′. AR[k + range_∑h]
246246 common_sites = findsites (ψ, ∑h[k + 1 ])
247247 idx = length (common_sites) - 1
248248 for j in (range_∑h - 1 ): - 1 : 1
249249 if k + j == common_sites[idx]
250- hᴿ[k] = hᴿ[k] * ψ. AR[k + j] * ψ′ . AR [k + j] * ∑h [k + 1 ][idx ]
250+ hᴿ[k] = hᴿ[k] * ψ. AR[k + j] * ∑h [k + 1 ][idx] * ψ′ . AR [k + j ]
251251 idx -= 1
252252 else
253- hᴿ[k] = hᴿ[k] * ψ. AR[k + j] * ψ′ . AR[ k + j] * δˢ ( k + j)
253+ hᴿ[k] = hᴿ[k] * ψ. AR[k + j] * δˢ ( k + j) * ψ′ . AR[ k + j]
254254 end
255255 end
256256 end
0 commit comments