Skip to content

Commit d35574b

Browse files
authored
Improve InfiniteMPOMatrix, rename to InfiniteBlockMPO (#77)
1 parent 1f19fd1 commit d35574b

13 files changed

+861
-284
lines changed

src/ITensorInfiniteMPS.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ include("itensormap.jl")
3434
include("celledvectors.jl")
3535
include("abstractinfinitemps.jl")
3636
include("infinitemps.jl")
37-
include("infinitempo.jl")
3837
include("infinitecanonicalmps.jl")
39-
include("infinitempomatrix.jl")
38+
include("infiniteblockmpo.jl")
39+
include("infinitempo.jl")
4040
include("transfermatrix.jl")
4141
include("models/models.jl")
4242
include("models/fqhe13.jl")
@@ -60,7 +60,7 @@ export Cell,
6060
InfMPS,
6161
InfiniteSum,
6262
InfiniteMPO,
63-
InfiniteMPOMatrix,
63+
InfiniteBlockMPO,
6464
InfiniteSumLocalOps,
6565
ITensorMap,
6666
ITensorNetwork,

src/ITensors.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,13 @@ end
182182
# TODO: make this definition AbstractMPS
183183
# Handle orthogonality center correctly
184184
Base.getindex::MPS, r::UnitRange{Int}) = MPS([ψ[n] for n in r])
185+
186+
#TODO Remove if everything is working nicely
187+
#Was still crashing on my laptop after updating ITensors
188+
Base.fill!(::NDTensors.NoData, ::Any) = NDTensors.NoData()
189+
190+
function ITensors.NDTensors.contraction_output(
191+
A::NDTensors.EmptyTensor, B::NDTensors.DiagBlockSparseTensor, label
192+
)
193+
return NDTensors.EmptyTensor(promote_type(eltype(A), eltype(B)), label)
194+
end

src/celledvectors.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ _setindex_cell1!(cv::CelledVector, val, n::Int) = (ITensors.data(cv)[n] = val)
142142
function getindex(cv::CelledVector, n::Int)
143143
cellₙ = cell(cv, n)
144144
siteₙ = cellindex(cv, n)
145+
cellₙ == 1 && return _getindex_cell1(cv, siteₙ) #Avoid unnecessary calls
145146
return translatecell(cv.translator, _getindex_cell1(cv, siteₙ), cellₙ - 1)
146147
end
147148

@@ -169,7 +170,11 @@ getindex(cv::CelledVector, c::Cell) = cv[eachindex(cv, c)]
169170
function setindex!(cv::CelledVector, T, n::Int)
170171
cellₙ = cell(cv, n)
171172
siteₙ = cellindex(cv, n)
172-
_setindex_cell1!(cv, translatecell(cv.translator, T, -(cellₙ - 1)), siteₙ)
173+
if cellₙ == 1
174+
_setindex_cell1!(cv, T, siteₙ)
175+
else
176+
_setindex_cell1!(cv, translatecell(cv.translator, T, -(cellₙ - 1)), siteₙ)
177+
end
173178
return cv
174179
end
175180

0 commit comments

Comments
 (0)