@@ -7,9 +7,6 @@ Classical(;θ = 0.25) = Classical(θ)
7
7
function strength_of_connection {T, Ti, Tv} (c:: Classical{T} , A:: SparseMatrixCSC{Tv, Ti} )
8
8
9
9
θ = c. θ
10
- # I = Int[]
11
- # J = Int[]
12
- # V = Float64[]
13
10
14
11
m, n = size (A)
15
12
nz = nnz (A)
@@ -19,17 +16,15 @@ function strength_of_connection{T, Ti, Tv}(c::Classical{T}, A::SparseMatrixCSC{T
19
16
k = 1
20
17
21
18
for i = 1 : n
22
- neighbors = A[:,i]
23
- _m = find_max_off_diag (neighbors, i)
19
+ # neighbors = A[:,i]
20
+ # _m = find_max_off_diag(neighbors, i)
21
+ _m = find_max_off_diag (A, i)
24
22
threshold = θ * _m
25
23
for j in nzrange (A, i)
26
24
row = A. rowval[j]
27
25
val = A. nzval[j]
28
26
if abs (val) >= threshold
29
27
if row != i
30
- #= push!(I, row)
31
- push!(J, i)
32
- push!(V, abs(val))=#
33
28
I[k] = row
34
29
J[k] = i
35
30
V[k] = abs (val)
@@ -38,9 +33,6 @@ function strength_of_connection{T, Ti, Tv}(c::Classical{T}, A::SparseMatrixCSC{T
38
33
end
39
34
40
35
if row == i
41
- #= push!(I, row)
42
- push!(J, i)
43
- push!(V, val)=#
44
36
I[k] = row
45
37
J[k] = i
46
38
V[k] = val
@@ -60,19 +52,41 @@ function strength_of_connection{T, Ti, Tv}(c::Classical{T}, A::SparseMatrixCSC{T
60
52
S' , S
61
53
end
62
54
63
- function find_max_off_diag (neighbors, col)
55
+ #= function find_max_off_diag(neighbors, col)
64
56
maxval = zero(eltype(neighbors))
65
57
for i in 1:length(neighbors.nzval)
66
58
maxval = max(maxval, ifelse(neighbors.nzind[i] == col, 0, abs(neighbors.nzval[i])))
67
59
end
68
60
return maxval
61
+ end=#
62
+ function find_max_off_diag (A, i)
63
+ m = 0
64
+ for j in nzrange (A, i)
65
+ row = A. rowval[j]
66
+ val = A. nzval[j]
67
+ if row != i
68
+ m = max (m, abs (val))
69
+ end
70
+ end
71
+ m
72
+ end
73
+
74
+ function find_max (A, i)
75
+ m = zero (eltype (A))
76
+ for j in nzrange (A, i)
77
+ row = A. rowval[j]
78
+ val = A. nzval[j]
79
+ m = max (m, abs (val))
80
+ end
81
+ m
69
82
end
70
83
71
84
function scale_cols_by_largest_entry! (A:: SparseMatrixCSC )
72
85
73
86
n = size (A, 1 )
74
87
for i = 1 : n
75
- _m = maximum (A[:,i])
88
+ # _m = maximum(A[:,i])
89
+ _m = find_max (A, i)
76
90
for j in nzrange (A, i)
77
91
A. nzval[j] /= _m
78
92
end
0 commit comments