18 perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)
20 integer(kind=kint),
intent(in) :: n
21 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
22 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
23 integer(kind=kint),
intent(in) :: perm_cur(:)
24 integer(kind=kint),
intent(in) :: ncolor_in
25 integer(kind=kint),
intent(out) :: ncolor_out
26 integer(kind=kint),
intent(out) :: colorindex(0:)
27 integer(kind=kint),
intent(out) :: perm(:), iperm(:)
28 integer(kind=kint),
allocatable :: iwk(:)
29 integer(kind=kint) :: nn_color, cntall, cnt, color
30 integer(kind=kint) :: i, inode, j, jnode
34 nn_color = n / ncolor_in
41 if (iwk(inode) > 0 .or. iwk(inode) == -1) cycle
47 if (cnt == nn_color)
exit
50 do j = indexl(inode-1)+1, indexl(inode)
52 if (iwk(jnode) == 0) iwk(jnode) = -1
54 do j = indexu(inode-1)+1, indexu(inode)
57 if (iwk(jnode) == 0) iwk(jnode) = -1
60 colorindex(color) = cntall
67 if (iwk(i) == -1) iwk(i) = 0
78 perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)
80 integer(kind=kint),
intent(in) :: n
81 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
82 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
83 integer(kind=kint),
intent(in) :: perm_cur(:)
84 integer(kind=kint),
intent(in) :: ncolor_in
85 integer(kind=kint),
intent(out) :: ncolor_out
86 integer(kind=kint),
intent(out) :: colorindex(0:)
87 integer(kind=kint),
intent(out) :: perm(:), iperm(:)
88 integer(kind=kint),
allocatable :: iwk(:)
89 integer(kind=kint) :: nn_color, cntall, cnt, color
90 integer(kind=kint) :: i, inode, j, jnode, k, knode
94 nn_color = n / ncolor_in
101 if (iwk(inode) > 0 .or. iwk(inode) == -1) cycle
107 if (cnt == nn_color)
exit
108 if (cntall == n)
exit
110 do j = indexl(inode-1)+1, indexl(inode)
112 if (iwk(jnode) == 0) iwk(jnode) = -1
113 do k = indexl(jnode-1)+1, indexl(jnode)
115 if (iwk(knode) == 0) iwk(knode) = -1
117 do k = indexu(jnode-1)+1, indexu(jnode)
120 if (iwk(knode) == 0) iwk(knode) = -1
123 do j = indexu(inode-1)+1, indexu(inode)
126 if (iwk(jnode) == 0) iwk(jnode) = -1
127 do k = indexl(jnode-1)+1, indexl(jnode)
129 if (iwk(knode) == 0) iwk(knode) = -1
131 do k = indexu(jnode-1)+1, indexu(jnode)
134 if (iwk(knode) == 0) iwk(knode) = -1
138 colorindex(color) = cntall
139 if (cntall == n)
then
145 if (iwk(i) == -1) iwk(i) = 0
156 perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)
158 integer(kind=kint),
intent(in) :: n
159 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
160 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
161 integer(kind=kint),
intent(in) :: perm_cur(:)
162 integer(kind=kint),
intent(in) :: ncolor_in
163 integer(kind=kint),
intent(out) :: ncolor_out
164 integer(kind=kint),
intent(out) :: colorindex(0:)
165 integer(kind=kint),
intent(out) :: perm(:), iperm(:)
166 integer(kind=kint),
allocatable :: iwk(:)
167 integer(kind=kint) :: nn_color, cntall, cnt, color
168 integer(kind=kint) :: i, inode, j, jnode, k, knode, l, lnode, m, mnode
172 nn_color = n / ncolor_in
179 if (iwk(inode) > 0 .or. iwk(inode) == -1) cycle
185 if (cnt == nn_color)
exit
186 if (cntall == n)
exit
188 do j = indexl(inode-1)+1, indexl(inode)
190 if (iwk(jnode) == 0) iwk(jnode) = -1
191 do k = indexl(jnode-1)+1, indexl(jnode)
193 if (iwk(knode) == 0) iwk(knode) = -1
194 do l = indexl(knode-1)+1, indexl(knode)
196 if (iwk(lnode) == 0) iwk(lnode) = -1
198 do l = indexu(knode-1)+1, indexu(knode)
201 if (iwk(lnode) == 0) iwk(lnode) = -1
204 do k = indexu(jnode-1)+1, indexu(jnode)
207 if (iwk(knode) == 0) iwk(knode) = -1
208 do l = indexl(knode-1)+1, indexl(knode)
210 if (iwk(lnode) == 0) iwk(lnode) = -1
212 do l = indexu(knode-1)+1, indexu(knode)
215 if (iwk(lnode) == 0) iwk(lnode) = -1
219 do j = indexu(inode-1)+1, indexu(inode)
222 if (iwk(jnode) == 0) iwk(jnode) = -1
223 do k = indexl(jnode-1)+1, indexl(jnode)
225 if (iwk(knode) == 0) iwk(knode) = -1
226 do l = indexl(knode-1)+1, indexl(knode)
228 if (iwk(lnode) == 0) iwk(lnode) = -1
230 do l = indexu(knode-1)+1, indexu(knode)
233 if (iwk(lnode) == 0) iwk(lnode) = -1
236 do k = indexu(jnode-1)+1, indexu(jnode)
239 if (iwk(knode) == 0) iwk(knode) = -1
240 do l = indexl(knode-1)+1, indexl(knode)
242 if (iwk(lnode) == 0) iwk(lnode) = -1
244 do l = indexu(knode-1)+1, indexu(knode)
247 if (iwk(lnode) == 0) iwk(lnode) = -1
252 colorindex(color) = cntall
253 if (cntall == n)
then
259 if (iwk(i) == -1) iwk(i) = 0
subroutine, public hecmw_matrix_ordering_mc(N, indexL, itemL, indexU, itemU, perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)
subroutine, public hecmw_matrix_ordering_mc_l2(N, indexL, itemL, indexU, itemU, perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)
subroutine, public hecmw_matrix_ordering_mc_l1(N, indexL, itemL, indexU, itemU, perm_cur, ncolor_in, ncolor_out, COLORindex, perm, iperm)