I am running into an error where if I create an MPO, say one with the SiteSet “Fermion”, and I set conserved_nf=true
, I get the following error if the MPO gets too large in number of terms:
ERROR: LoadError: DimensionMismatch: array could not be broadcast to match destination
Stacktrace:
[1] check_broadcast_shape(shp::Tuple{Base.OneTo{Int64}}, Ashp::Tuple{Base.OneTo{Int64}})
@ Base.Broadcast ./broadcast.jl:540
[2] check_broadcast_shape(shp::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Ashp::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}})
@ Base.Broadcast ./broadcast.jl:541
[3] check_broadcast_axes(shp::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, A::Matrix{Float64})
@ Base.Broadcast ./broadcast.jl:543
[4] instantiate(bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, typeof(identity), Tuple{Matrix{Float64}}})
@ Base.Broadcast ./broadcast.jl:284
[5] materialize!(#unused#::Base.Broadcast.ArrayStyle{NDTensors.DenseTensor{Float64, 2, Tuple{Int64, Int64}, NDTensors.Dense{Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}}}}, dest::NDTensors.DenseTensor{Float64, 2, Tuple{Int64, Int64}, NDTensors.Dense{Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}}}, bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2}, Nothing, typeof(identity), Tuple{Matrix{Float64}}})
@ Base.Broadcast ./broadcast.jl:871
[6] materialize!(dest::NDTensors.DenseTensor{Float64, 2, Tuple{Int64, Int64}, NDTensors.Dense{Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}}}, bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2}, Nothing, typeof(identity), Tuple{Matrix{Float64}}})
@ Base.Broadcast ./broadcast.jl:868
[7] qn_svdMPO(os::Sum{Scaled{ComplexF64, Prod{Op}}}, sites::Vector{Index{Vector{Pair{QN, Int64}}}}; kwargs::Base.Pairs{Symbol, Int64, Tuple{Symbol}, NamedTuple{(:maxdim,), Tuple{Int64}}})
@ ITensors ~/.julia/packages/ITensors/5CAqA/src/physics/autompo/opsum_to_mpo_qn.jl:223
[8] MPO(os::Sum{Scaled{ComplexF64, Prod{Op}}}, sites::Vector{Index{Vector{Pair{QN, Int64}}}}; splitblocks::Bool, kwargs::Base.Pairs{Symbol, Int64, Tuple{Symbol}, NamedTuple{(:maxdim,), Tuple{Int64}}})
@ ITensors ~/.julia/packages/ITensors/5CAqA/src/physics/autompo/opsum_to_mpo_generic.jl:246
Does anyone have any idea what might be causing this error? Keep in mind that for a smaller Hamiltonian, I am able to create the MPO. I should also note that I am using AutoMPO
to create my Hamiltonian and that I am basically transcribing a molecular Hamiltonian from OpenFermion.