@@ -12,6 +12,8 @@ function blockbandwidths(P::PseudoBlockMatrix{<:Any,<:Diagonal})
12
12
cumulsizes (bs)[1 ] == cumulsizes (bs)[2 ] || throw (DimensionMismatch ())
13
13
(0 ,0 )
14
14
end
15
+
16
+ bandeddata (P:: PseudoBlockMatrix ) = bandeddata (P. blocks)
15
17
bandwidths (P:: PseudoBlockMatrix ) = bandwidths (P. blocks)
16
18
17
19
BroadcastStyle (:: Type {<: SubArray {<: Any ,2 ,<: PseudoBlockMatrix{<:Any,<:Diagonal} ,
@@ -38,6 +40,19 @@ BroadcastStyle(::Type{<:SubKron{<:Any,<:Any,B,Block1,Block1}}) where B =
38
40
subblockbandwidths (parent (V))
39
41
40
42
43
+ const BlockDiagonal{T,VT<: Matrix{T} } = BlockMatrix{T,<: Diagonal{VT} }
44
+
45
+ BlockDiagonal (A) = mortar (Diagonal (A))
46
+
47
+ function sizes_from_blocks (A:: Diagonal , _)
48
+ # for k = 1:length(A.du)
49
+ # size(A.du[k],1) == sz[1][k] || throw(ArgumentError("block sizes of upper diagonal inconsisent with diagonal"))
50
+ # size(A.du[k],2) == sz[2][k+1] || throw(ArgumentError("block sizes of upper diagonal inconsisent with diagonal"))
51
+ # size(A.dl[k],1) == sz[1][k+1] || throw(ArgumentError("block sizes of lower diagonal inconsisent with diagonal"))
52
+ # size(A.dl[k],2) == sz[2][k] || throw(ArgumentError("block sizes of lower diagonal inconsisent with diagonal"))
53
+ # end
54
+ BlockSizes (size .(A. diag, 1 ), size .(A. diag,2 ))
55
+ end
41
56
42
57
43
58
# Block Tridiagonal
@@ -83,6 +98,13 @@ for op in (:-, :+)
83
98
end
84
99
end
85
100
101
+ function replace_in_print_matrix (A:: BlockDiagonal , i:: Integer , j:: Integer , s:: AbstractString )
102
+ bi = global2blockindex (A. block_sizes, (i, j))
103
+ I,J = bi. I
104
+ i,j = bi. α
105
+ J- I == 0 ? s : Base. replace_with_centered_mark (s)
106
+ end
107
+
86
108
function replace_in_print_matrix (A:: BlockTridiagonal , i:: Integer , j:: Integer , s:: AbstractString )
87
109
bi = global2blockindex (A. block_sizes, (i, j))
88
110
I,J = bi. I
0 commit comments