-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathSparseMatrixColoringsBandedMatricesExt.jl
More file actions
45 lines (40 loc) · 1.09 KB
/
SparseMatrixColoringsBandedMatricesExt.jl
File metadata and controls
45 lines (40 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
module SparseMatrixColoringsBandedMatricesExt
using BandedMatrices: BandedMatrix, bandrange, bandwidths, colrange, rowrange
using SparseMatrixColorings:
BipartiteGraph,
ColoringProblem,
ColumnColoringResult,
StructuredColoringAlgorithm,
RowColoringResult,
column_colors,
cycle_range,
row_colors
import SparseMatrixColorings as SMC
#=
This code is partly taken from ArrayInterface.jl and FiniteDiff.jl
https://github.com/JuliaArrays/ArrayInterface.jl
https://github.com/JuliaDiff/FiniteDiff.jl
=#
function SMC.coloring(
A::BandedMatrix,
::ColoringProblem{:nonsymmetric,:column},
::StructuredColoringAlgorithm;
kwargs...,
)
width = length(bandrange(A))
color = cycle_range(width, size(A, 2))
bg = BipartiteGraph(A)
return ColumnColoringResult(A, bg, color)
end
function SMC.coloring(
A::BandedMatrix,
::ColoringProblem{:nonsymmetric,:row},
::StructuredColoringAlgorithm;
kwargs...,
)
width = length(bandrange(A))
color = cycle_range(width, size(A, 1))
bg = BipartiteGraph(A)
return RowColoringResult(A, bg, color)
end
end