@@ -4,9 +4,29 @@ using MPSKit: GenericMPSTensor, MPSBondTensor
44# Environment transfer functions
55#
66
7+ function MPSKit. transfer_left (
8+ GL:: GenericMPSTensor{S,N} ,
9+ O:: Union{PEPSSandwich,PEPOSandwich} ,
10+ A:: GenericMPSTensor{S,N} ,
11+ Ā:: GenericMPSTensor{S,N} ,
12+ ) where {S,N}
13+ Ā = twistdual (Ā, 2 : N)
14+ return _transfer_left (GL, O, A, Ā)
15+ end
16+
17+ function MPSKit. transfer_right (
18+ GR:: GenericMPSTensor{S,N} ,
19+ O:: Union{PEPSSandwich,PEPOSandwich} ,
20+ A:: GenericMPSTensor{S,N} ,
21+ Ā:: GenericMPSTensor{S,N} ,
22+ ) where {S,N}
23+ Ā = twistdual (Ā, 2 : N)
24+ return _transfer_right (GR, O, A, Ā)
25+ end
26+
727# # PEPS
828
9- function MPSKit . transfer_left (
29+ function _transfer_left (
1030 GL:: GenericMPSTensor{S,3} ,
1131 O:: PEPSSandwich ,
1232 A:: GenericMPSTensor{S,3} ,
@@ -20,7 +40,7 @@ function MPSKit.transfer_left(
2040 A[χ_NW D_N_above D_N_below; χ_NE]
2141end
2242
23- function MPSKit . transfer_right (
43+ function _transfer_right (
2444 GR:: GenericMPSTensor{S,3} ,
2545 O:: PEPSSandwich ,
2646 A:: GenericMPSTensor{S,3} ,
3656
3757# # PEPO
3858
39- @generated function MPSKit . transfer_left (
59+ @generated function _transfer_left (
4060 GL:: GenericMPSTensor{S,N} ,
4161 O:: PEPOSandwich{H} ,
4262 A:: GenericMPSTensor{S,N} ,
6585 return macroexpand (@__MODULE__ , :(return @autoopt @tensor $ GL´_e := $ rhs))
6686end
6787
68- @generated function MPSKit . transfer_right (
88+ @generated function _transfer_right (
6989 GR:: GenericMPSTensor{S,N} ,
7090 O:: PEPOSandwich{H} ,
7191 A:: GenericMPSTensor{S,N} ,
118138# Derivative contractions
119139#
120140
121- @generated function MPSKit. ∂C (
141+ function MPSKit. ∂C (
142+ C:: MPSBondTensor{S} , GL:: GenericMPSTensor{S,N} , GR:: GenericMPSTensor{S,N}
143+ ) where {S,N}
144+ GL = twistdual (GL, 1 )
145+ GR = twistdual (GR, numind (GR))
146+ return _∂C (C, GL, GR)
147+ end
148+ @generated function _∂C (
122149 C:: MPSBondTensor{S} , GL:: GenericMPSTensor{S,N} , GR:: GenericMPSTensor{S,N}
123150) where {S,N}
124151 C´_e = tensorexpr (:C´ , - 1 , - 2 )
128155 return macroexpand (@__MODULE__ , :(return @tensor $ C´_e := $ GL_e * $ C_e * $ GR_e))
129156end
130157
158+ function MPSKit. ∂AC (
159+ AC:: GenericMPSTensor{S,N} ,
160+ O:: Union{PEPSSandwich,PEPOSandwich} ,
161+ GL:: GenericMPSTensor{S,N} ,
162+ GR:: GenericMPSTensor{S,N} ,
163+ ) where {S,N}
164+ GL = twistdual (GL, 1 )
165+ GR = twistdual (GR, numind (GR))
166+ return _∂AC (AC, O, GL, GR)
167+ end
168+
131169# # PEPS
132170
133- function MPSKit . ∂AC (
171+ function _ ∂AC (
134172 AC:: GenericMPSTensor{S,3} ,
135173 O:: PEPSSandwich ,
136174 GL:: GenericMPSTensor{S,3} ,
162200
163201# # PEPO
164202
165- @generated function MPSKit . ∂AC (
203+ @generated function _ ∂AC (
166204 AC:: GenericMPSTensor{S,N} ,
167205 O:: PEPOSandwich{H} ,
168206 GL:: GenericMPSTensor{S,N} ,
0 commit comments