Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot create the Laplacian like this #36

Open
MikaelSlevinsky opened this issue Jun 10, 2021 · 2 comments
Open

Cannot create the Laplacian like this #36

MikaelSlevinsky opened this issue Jun 10, 2021 · 2 comments

Comments

@MikaelSlevinsky
Copy link
Member

I assume I'm doing something wrong:

julia> S = SphericalHarmonic()
SphericalHarmonic{ComplexF64}

julia> Δ = Laplacian(axes(S, 1))
Laplacian{SphericalCoordinate{Float64}, DomainSets.FixedUnitSphere{SVector{3, Float64}}}

julia> L = S \* S)
ERROR: ArgumentError: Cannot create infinite Array
Stacktrace:
  [1] Vector{Vector{ComplexF64}}(#unused#::UndefInitializer, #unused#::Tuple{Infinities.InfiniteCardinal{0}})
    @ InfiniteArrays ~/.julia/packages/InfiniteArrays/h9Ynf/src/infarrays.jl:19
  [2] _BlockArray(#unused#::Type{Vector{Vector{ComplexF64}}}, baxes::Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}})
    @ BlockArrays ~/.julia/packages/BlockArrays/qaMjJ/src/blockarray.jl:92
  [3] macro expansion
    @ ~/.julia/packages/BlockArrays/qaMjJ/src/blockarray.jl:126 [inlined]
  [4] initialized_blocks_BlockArray(#unused#::Type{Vector{Vector{ComplexF64}}}, baxes::Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}})
    @ BlockArrays ~/.julia/packages/BlockArrays/qaMjJ/src/blockarray.jl:124
  [5] BlockArray
    @ ~/.julia/packages/BlockArrays/qaMjJ/src/blockarray.jl:140 [inlined]
  [6] similar
    @ ~/.julia/packages/BlockArrays/qaMjJ/src/blockarray.jl:354 [inlined]
  [7] similar(a::BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}, #unused#::Type{ComplexF64})
    @ BlockArrays ~/.julia/packages/BlockArrays/qaMjJ/src/abstractblockarray.jl:37
  [8] AbstractVector{ComplexF64}(A::BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}})
    @ Base ./array.jl:541
  [9] convert(#unused#::Type{AbstractVector{ComplexF64}}, a::BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}})
    @ Base ./abstractarray.jl:16
 [10] copy_oftype(A::BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}, #unused#::Type{ComplexF64})
    @ LinearAlgebra /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/LinearAlgebra.jl:350
 [11] copy(M::ArrayLayouts.Lmul{ArrayLayouts.DiagonalLayout{ArrayLayouts.OnesLayout}, ArrayLayouts.DiagonalLayout{BlockArrays.BlockLayout{LazyArrays.BroadcastLayout{Type{Fill}}, ArrayLayouts.FillLayout}}, Diagonal{ComplexF64, Ones{ComplexF64, 1, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}})
    @ ArrayLayouts ~/.julia/packages/ArrayLayouts/mTQvg/src/diagonal.jl:60
 [12] copy(M::ArrayLayouts.Mul{ArrayLayouts.DiagonalLayout{ArrayLayouts.OnesLayout}, ArrayLayouts.DiagonalLayout{BlockArrays.BlockLayout{LazyArrays.BroadcastLayout{Type{Fill}}, ArrayLayouts.FillLayout}}, Diagonal{ComplexF64, Ones{ComplexF64, 1, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}})
    @ ArrayLayouts ~/.julia/packages/ArrayLayouts/mTQvg/src/mul.jl:108
 [13] materialize(M::ArrayLayouts.Mul{ArrayLayouts.DiagonalLayout{ArrayLayouts.OnesLayout}, ArrayLayouts.DiagonalLayout{BlockArrays.BlockLayout{LazyArrays.BroadcastLayout{Type{Fill}}, ArrayLayouts.FillLayout}}, Diagonal{ComplexF64, Ones{ComplexF64, 1, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}})
    @ ArrayLayouts ~/.julia/packages/ArrayLayouts/mTQvg/src/mul.jl:105
 [14] mul
    @ ~/.julia/packages/ArrayLayouts/mTQvg/src/mul.jl:106 [inlined]
 [15] copy(M::LazyArrays.Applied{LazyArrays.MulStyle, typeof(*), Tuple{Diagonal{ComplexF64, Ones{ComplexF64, 1, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}}})
    @ LazyArrays ~/.julia/packages/LazyArrays/MMaBf/src/linalg/mul.jl:13
 [16] materialize
    @ ~/.julia/packages/LazyArrays/MMaBf/src/lazyapplying.jl:81 [inlined]
 [17] apply
    @ ~/.julia/packages/LazyArrays/MMaBf/src/lazyapplying.jl:78 [inlined]
 [18] _copy_ldiv_mul
    @ ~/.julia/packages/LazyArrays/MMaBf/src/linalg/inv.jl:98 [inlined]
 [19] copy
    @ ~/.julia/packages/LazyArrays/MMaBf/src/linalg/inv.jl:100 [inlined]
 [20] copy(L::ArrayLayouts.Ldiv{ContinuumArrays.BasisLayout, LazyArrays.ApplyLayout{typeof(*)}, SphericalHarmonic{ComplexF64}, ApplyQuasiMatrix{ComplexF64, typeof(*), Tuple{SphericalHarmonic{ComplexF64}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}}}})
    @ ContinuumArrays ~/.julia/packages/ContinuumArrays/tg4mj/src/bases/bases.jl:201
 [21] materialize
    @ ~/.julia/packages/ArrayLayouts/mTQvg/src/ldiv.jl:22 [inlined]
 [22] ldiv
    @ ~/.julia/packages/ArrayLayouts/mTQvg/src/ldiv.jl:86 [inlined]
 [23] \(A::SphericalHarmonic{ComplexF64}, B::ApplyQuasiMatrix{ComplexF64, typeof(*), Tuple{SphericalHarmonic{ComplexF64}, Diagonal{Int64, BlockVector{Int64, LazyArrays.BroadcastVector{Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Type{Fill}, Tuple{LazyArrays.BroadcastVector{Int64, typeof(-), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, LazyArrays.BroadcastVector{Int64, typeof(Base.literal_pow), Tuple{Base.RefValue{typeof(^)}, InfiniteArrays.InfUnitRange{Int64}, Base.RefValue{Val{2}}}}}}, InfiniteArrays.InfStepRange{Int64, Int64}}}, Tuple{BlockedUnitRange{ArrayLayouts.RangeCumsum{Int64, InfiniteArrays.InfStepRange{Int64, Int64}}}}}}}})
    @ QuasiArrays ~/.julia/packages/QuasiArrays/bxqu9/src/matmul.jl:34
 [24] top-level scope
    @ REPL[45]:1

julia> 
@MikaelSlevinsky
Copy link
Member Author

@dlfivefifty

@dlfivefifty
Copy link
Member

Weird it’s not working… though looks like the culprit is a missing convert specialisation for BlockVector

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants