@@ -24,7 +24,7 @@ function BlockSparseArrays.blockrange(bs::Vector{<:CartesianProduct})
2424end
2525
2626using BlockArrays: AbstractBlockedUnitRange
27- using BlockSparseArrays: Block, GetUnstoredBlock , eachblockaxis, mortar_axis
27+ using BlockSparseArrays: Block, ZeroBlocks , eachblockaxis, mortar_axis
2828using DerivableInterfaces: zero!
2929using FillArrays: Eye
3030using KroneckerArrays:
@@ -56,45 +56,41 @@ function block_axes(ax::NTuple{N,AbstractUnitRange{<:Integer}}, I::Block{N}) whe
5656 return block_axes (ax, Tuple (I)... )
5757end
5858
59- function (f :: GetUnstoredBlock ) (
60- :: Type{<:AbstractMatrix{ KroneckerMatrix{T,A,B} }} , I:: Vararg{Int,2}
59+ function Base . getindex (
60+ a :: ZeroBlocks{2, KroneckerMatrix{T,A,B}} , I:: Vararg{Int,2}
6161) where {T,A<: AbstractMatrix{T} ,B<: AbstractMatrix{T} }
62- ax_a = arg1 .(f. axes)
63- f_a = GetUnstoredBlock (ax_a)
64- a = f_a (AbstractMatrix{A}, I... )
62+ ax_a1 = arg1 .(a. parentaxes)
63+ a1 = ZeroBlocks {2,A} (ax_a1)[I... ]
6564
66- ax_b = arg2 .(f. axes)
67- f_b = GetUnstoredBlock (ax_b)
68- b = f_b (AbstractMatrix{B}, I... )
65+ ax_a2 = arg2 .(a. parentaxes)
66+ a2 = ZeroBlocks {2,B} (ax_a2)[I... ]
6967
70- return a ⊗ b
68+ return a1 ⊗ a2
7169end
72- function (f :: GetUnstoredBlock ) (
73- :: Type{<:AbstractMatrix{ EyeKronecker{T,A,B} }} , I:: Vararg{Int,2}
70+ function Base . getindex (
71+ a :: ZeroBlocks{2, EyeKronecker{T,A,B}} , I:: Vararg{Int,2}
7472) where {T,A<: Eye{T} ,B<: AbstractMatrix{T} }
75- block_ax_a = arg1 .(block_axes (f . axes , Block (I)))
76- a = _similar (A, block_ax_a )
73+ block_ax_a1 = arg1 .(block_axes (a . parentaxes , Block (I)))
74+ a1 = _similar (A, block_ax_a1 )
7775
78- ax_b = arg2 .(f. axes)
79- f_b = GetUnstoredBlock (ax_b)
80- b = f_b (AbstractMatrix{B}, I... )
76+ ax_a2 = arg2 .(a. parentaxes)
77+ a2 = ZeroBlocks {2,B} (ax_a2)[I... ]
8178
82- return a ⊗ b
79+ return a1 ⊗ a2
8380end
84- function (f :: GetUnstoredBlock ) (
85- :: Type{<:AbstractMatrix{ KroneckerEye{T,A,B} }} , I:: Vararg{Int,2}
81+ function Base . getindex (
82+ a :: ZeroBlocks{2, KroneckerEye{T,A,B}} , I:: Vararg{Int,2}
8683) where {T,A<: AbstractMatrix{T} ,B<: Eye{T} }
87- ax_a = arg1 .(f. axes)
88- f_a = GetUnstoredBlock (ax_a)
89- a = f_a (AbstractMatrix{A}, I... )
84+ ax_a1 = arg1 .(a. parentaxes)
85+ a1 = ZeroBlocks {2,A} (ax_a1)[I... ]
9086
91- block_ax_b = arg2 .(block_axes (f . axes , Block (I)))
92- b = _similar (B, block_ax_b )
87+ block_ax_a2 = arg2 .(block_axes (a . parentaxes , Block (I)))
88+ a2 = _similar (B, block_ax_a2 )
9389
94- return a ⊗ b
90+ return a1 ⊗ a2
9591end
96- function (f :: GetUnstoredBlock ) (
97- :: Type{<:AbstractMatrix{ EyeEye{T,A,B} }} , I:: Vararg{Int,2}
92+ function Base . getindex (
93+ a :: ZeroBlocks{2, EyeEye{T,A,B}} , I:: Vararg{Int,2}
9894) where {T,A<: Eye{T} ,B<: Eye{T} }
9995 return error (" Not implemented." )
10096end
0 commit comments