@@ -37,87 +37,3 @@ _use_sparseCSC_common_sparsity(J, sparsity) = false
3737_use_sparseCSC_common_sparsity (J:: SparseMatrixCSC , sparsity:: SparseMatrixCSC ) =
3838 ((J. colptr == sparsity. colptr) && (J. rowval == sparsity. rowval))
3939
40- function __init__ ()
41- @require BlockBandedMatrices= " ffab5731-97b5-5995-9138-79e8c1846df0" begin
42- @require BlockArrays= " 8e7c35d0-a365-5155-bbbb-fb81a777f24e" begin
43- _use_findstructralnz (:: BlockBandedMatrices.BandedBlockBandedMatrix ) = false
44- _use_findstructralnz (:: BlockBandedMatrices.BlockBandedMatrix ) = false
45-
46- @inline function _colorediteration! (Jac:: BlockBandedMatrices.BandedBlockBandedMatrix ,
47- sparsity:: BlockBandedMatrices.BandedBlockBandedMatrix ,
48- rows_index,cols_index,vfx,colorvec,color_i,ncols)
49- λ,μ = BlockBandedMatrices. subblockbandwidths (Jac)
50- rs = BlockArrays. blocklengths (BlockArrays. axes (Jac,1 )) # column block sizes
51- cs = BlockArrays. blocklengths (BlockArrays. axes (Jac,1 ))
52- b = BlockBandedMatrices. BlockArray (vfx,rs)
53- c = BlockBandedMatrices. BlockArray (colorvec,cs)
54- @inbounds for J= BlockArrays. blockaxes (Jac,2 )
55- c_v = c. blocks[J. n[1 ]]
56- @inbounds for K= BlockBandedMatrices. blockcolrange (Jac,J)
57- V = view (Jac,K,J)
58- b_v = b. blocks[K. n[1 ]]
59- data = BlockBandedMatrices. bandeddata (V)
60- p = pointer (data)
61- st = stride (data,2 )
62- m,n = size (V)
63- @inbounds for j= 1 : n
64- if c_v[j] == color_i
65- @inbounds for k= max (1 ,j- μ): min (m,j+ λ)
66- unsafe_store! (p, b_v[k], (j- 1 )* st + μ + k - j + 1 )
67- end
68- end
69- end
70- end
71- end
72- end
73-
74- @inline function _colorediteration! (Jac:: BlockBandedMatrices.BlockBandedMatrix ,
75- sparsity:: BlockBandedMatrices.BlockBandedMatrix ,
76- rows_index,cols_index,vfx,colorvec,color_i,ncols)
77- rs = BlockArrays. blocklengths (BlockArrays. axes (Jac,1 )) # column block sizes
78- cs = BlockArrays. blocklengths (BlockArrays. axes (Jac,1 ))
79- b = BlockBandedMatrices. BlockArray (vfx,rs)
80- c = BlockBandedMatrices. BlockArray (colorvec,cs)
81- @inbounds for J= BlockArrays. blockaxes (Jac,2 )
82- c_v = c. blocks[J. n[1 ]]
83- blockcolrange = BlockBandedMatrices. blockcolrange (Jac,J)
84- _,n = length .(getindex .(axes (Jac), (blockcolrange[1 ], J)))
85- @inbounds for j = 1 : n
86- if c_v[j] == color_i
87- @inbounds for K = blockcolrange
88- V = view (Jac,K,J)
89- b_v = b. blocks[K. n[1 ]]
90- m = size (V,1 )
91- @inbounds for k = 1 : m
92- V[k,j] = b_v[k]
93- end
94- end
95- end
96- end
97- end
98- end
99-
100- end
101-
102- @require BandedMatrices = " aae01518-5342-5314-be14-df237901396f" begin
103-
104- _use_findstructralnz (:: BandedMatrices.BandedMatrix ) = false
105-
106- @inline function _colorediteration! (Jac:: BandedMatrices.BandedMatrix ,
107- sparsity:: BandedMatrices.BandedMatrix ,
108- rows_index,cols_index,vfx,colorvec,color_i,ncols)
109- nrows = size (Jac,1 )
110- l,u = BandedMatrices. bandwidths (Jac)
111- # data = BandedMatrices.bandeddata(Jac)
112- @inbounds for col_index in max (1 ,1 - l): min (ncols,ncols+ u)
113- if colorvec[col_index] == color_i
114- @inbounds for row_index in max (1 ,col_index- u): min (nrows,col_index+ l)
115- # data[u+row_index-col_index+1,col_index] = vfx[row_index]
116- Jac[row_index,col_index]= vfx[row_index]
117- end
118- end
119- end
120- end
121- end
122- end
123- end
0 commit comments