@@ -50,14 +50,21 @@ SubOperator(A,inds,dims::Tuple{Bool,Bool},lu) = SubOperator(A,inds,Int.(dims),lu
50
50
51
51
function SubOperator (A,inds:: NTuple{2,Block} ,lu)
52
52
checkbounds (A,inds... )
53
- SubOperator (A,inds,(blocklengths (rangespace (A))[inds[1 ]. n[1 ]],blocklengths (domainspace (A))[inds[2 ]. n[1 ]]),lu)
53
+ _SubOperator (A, inds, lu, domainspace (A), rangespace (A))
54
+ end
55
+ function _SubOperator (A, inds, lu, dsp, rsp)
56
+ SubOperator (A,inds,(blocklengths (rsp)[inds[1 ]. n[1 ]],
57
+ blocklengths (dsp)[inds[2 ]. n[1 ]]),lu)
54
58
end
55
59
56
60
SubOperator (A, inds:: NTuple{2,Block} ) = SubOperator (A,inds,subblockbandwidths (A))
57
61
function SubOperator (A, inds:: Tuple{BlockRange{1,R},BlockRange{1,R}} ) where R
58
62
checkbounds (A,inds... )
59
- dims = (sum (blocklengths (rangespace (A))[inds[1 ]. indices[1 ]]),
60
- sum (blocklengths (domainspace (A))[inds[2 ]. indices[1 ]]))
63
+ _SubOperator (A, inds, domainspace (A), rangespace (A))
64
+ end
65
+ function _SubOperator (A, inds, dsp, rsp)
66
+ dims = (sum (blocklengths (rsp)[inds[1 ]. indices[1 ]]),
67
+ sum (blocklengths (dsp)[inds[2 ]. indices[1 ]]))
61
68
SubOperator (A,inds,dims,(dims[1 ]- 1 ,dims[2 ]- 1 ))
62
69
end
63
70
0 commit comments