BlockArrays.jl icon indicating copy to clipboard operation
BlockArrays.jl copied to clipboard

Add documentation for block-diagonal arrays

Open MarkusLohmayer opened this issue 4 years ago • 3 comments

Can BlockArrays (currently) be used to define BlockDiagonalArrays in a straightforward way similar to Diagonal in LinearAlgebra?

Thanks!

MarkusLohmayer avatar May 27 '20 20:05 MarkusLohmayer

Yes!

julia> mortar(Diagonal([randn(2,2),randn(2,2)]))
2×2-blocked 4×4 BlockArray{Float64,2,Diagonal{Array{Float64,2},Array{Array{Float64,2},1}},Tuple{BlockedUnitRange{Array{Int64,1}},BlockedUnitRange{Array{Int64,1}}}}:
 -2.31669   0.669511  │    ⋅         ⋅     
 -0.497779  0.407213  │    ⋅         ⋅     
 ─────────────────────┼────────────────────
   ⋅         ⋅        │  -1.28362   2.24877
   ⋅         ⋅        │  -0.211033  1.58237

Note there is also BlockDiagonals.jl that is more specific to this use case. At some point it would be great to unify the interfaces.

dlfivefifty avatar May 27 '20 20:05 dlfivefifty

Thanks for the quick help! I was searching block-diagonal in the docs and didn't find it. Maybe something to think about adding.

MarkusLohmayer avatar May 27 '20 20:05 MarkusLohmayer

Yes indeed. These features are sometimes just a "free" by-product of the modularity in Julia, and sometimes are implemented with downstream packages in mind (e.g. BlockBandedMatrices.jl), so documentation is often incomplete, and features may not work without the downstream packages.

This means adding documentation is a lot harder than implementing features: there are many features that work without us even knowing about it!

A PR adding docs would be very appreciated.

dlfivefifty avatar May 27 '20 20:05 dlfivefifty