Skip to content

Commit da7cb04

Browse files
author
qyli
committed
fix addITP for spin-fermion coupled systems
1 parent c68ca5e commit da7cb04

File tree

2 files changed

+268
-235
lines changed

2 files changed

+268
-235
lines changed

src/IntrTree/IntrIterator.jl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,20 @@ function iterate(iter::OnSiteInteractionIterator{L, <:AbstractTensorMap}, i::Int
8888
end
8989
return Op_wrap, i + 1
9090
end
91+
function iterate(iter::OnSiteInteractionIterator{L, <:AbstractVector}, i::Int64 = 1) where {L}
92+
i > L && return nothing
93+
if i == iter.Op.si
94+
Op_wrap = iter.Op
95+
elseif (i > iter.Op.si) && !isnothing(_getZ(iter.Z, i))
96+
Z = _getZ(iter.Z, i)
97+
Op_wrap = LocalOperator(Z, :Z, i, false)
98+
else
99+
# TODO pspace is not correct but it will not be used for id operator
100+
pspace = domain(iter.Op)[1]
101+
Op_wrap = IdentityOperator(pspace, trivial(pspace), i)
102+
end
103+
return Op_wrap, i + 1
104+
end
91105

92106
"""
93107
struct TwoSiteInteractionIterator{L, T} <: AbstractInteractionIterator{L}
@@ -192,6 +206,25 @@ function iterate(iter::TwoSiteInteractionIterator{L, <:AbstractTensorMap}, st::T
192206

193207
return Op_wrap, (i + 1, getRightSpace(Op_wrap))
194208
end
209+
function iterate(iter::TwoSiteInteractionIterator{L, <:AbstractVector}, st::Tuple{Int64, VectorSpace} = (1, getLeftSpace(iter.O₁))) where {L}
210+
i, aspace = st
211+
i > L && return nothing
212+
if i == iter.O₁.si
213+
Op_wrap = iter.O₁
214+
elseif i == iter.O₂.si
215+
# add Z here
216+
Op_wrap = _addZ!(iter.O₂, _getZ(iter.Z, i))
217+
elseif (iter.O₁.si < i < iter.O₂.si) && !isnothing(_getZ(iter.Z, i))
218+
Op_wrap = LocalOperator(_getZ(iter.Z, i), :Z, i, false; aspace = (aspace, aspace))
219+
else
220+
# TODO pspace is not correct but it will not be used for id operator
221+
pspace = domain(iter.O₁)[1]
222+
Op_wrap = IdentityOperator(pspace, aspace, i)
223+
end
224+
225+
return Op_wrap, (i + 1, getRightSpace(Op_wrap))
226+
end
227+
195228

196229
"""
197230
ArbitraryInteractionIterator{L} <: AbstractInteractionIterator{L}

0 commit comments

Comments
 (0)