19 indexL, indexU, itemL, itemU, indexLp, indexUp, itemLp, itemUp)
21 integer(kind=kint),
intent(in) :: n
22 integer(kind=kint),
intent(in) :: perm(:), iperm(:)
23 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
24 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
25 integer(kind=kint),
intent(out) :: indexlp(0:), indexup(0:)
26 integer(kind=kint),
intent(out) :: itemlp(:), itemup(:)
27 integer(kind=kint) :: cntl, cntu, inew, iold, j, jold, jnew
35 do j = indexl(iold-1)+1, indexl(iold)
47 do j = indexu(iold-1)+1, indexu(iold)
67 indexL, indexU, itemL, itemU, AL, AU, D, &
68 indexLp, indexUp, itemLp, itemUp, ALp, AUp, Dp)
70 integer(kind=kint),
intent(in) :: n, ndof
71 integer(kind=kint),
intent(in) :: perm(:), iperm(:)
72 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
73 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
74 real(kind=
kreal),
intent(in) :: al(:), au(:), d(:)
75 integer(kind=kint),
intent(in) :: indexlp(0:), indexup(0:)
76 integer(kind=kint),
intent(in) :: itemlp(:), itemup(:)
77 real(kind=
kreal),
intent(out) :: alp(:), aup(:), dp(:)
81 call reorder_diag2(n, ndof, iperm, d, dp)
82 call reorder_off_diag2(n, ndof, iperm, &
84 indexlp, indexup, itemlp, itemup, alp, aup)
85 call reorder_off_diag2(n, ndof, iperm, &
87 indexlp, indexup, itemlp, itemup, alp, aup)
92 integer(kind=kint),
intent(in) :: n
93 integer(kind=kint),
intent(in) :: perm(:)
94 integer(kind=kint),
intent(in) :: indexxp(0:)
95 integer(kind=kint),
intent(inout) :: itemxp(:)
96 integer(kind=kint) :: npx, i
101 itemxp(i) = perm( itemxp(i) )
107 subroutine reorder_diag2(N, NDOF, iperm, D, Dp)
109 integer(kind=kint),
intent(in) :: n, ndof
110 integer(kind=kint),
intent(in) :: iperm(:)
111 real(kind=
kreal),
intent(in) :: d(:)
112 real(kind=
kreal),
intent(out) :: dp(:)
113 integer(kind=kint) :: ndof2, inew, iold, j0new, j0old, j
121 j0old = (iold-1)*ndof2
122 j0new = (inew-1)*ndof2
124 dp(j0new + j) = d(j0old + j)
129 end subroutine reorder_diag2
131 subroutine reorder_off_diag2(N, NDOF, iperm, &
133 indexLp, indexUp, itemLp, itemUp, ALp, AUp)
135 integer(kind=kint),
intent(in) :: n, ndof
136 integer(kind=kint),
intent(in) :: iperm(:)
137 integer(kind=kint),
intent(in) :: indexx(0:)
138 integer(kind=kint),
intent(in) :: itemx(:)
139 real(kind=
kreal),
intent(in) :: ax(:)
140 integer(kind=kint),
intent(in) :: indexlp(0:), indexup(0:)
141 integer(kind=kint),
intent(in) :: itemlp(:), itemup(:)
142 real(kind=
kreal),
intent(inout) :: alp(:), aup(:)
143 integer(kind=kint) :: ndof2, iold, inew
144 integer(kind=kint) :: jsnewl, jenewl, jsnewu, jenewu
145 integer(kind=kint) :: jold, kold, knew, jnew, l0old, l0new, l
154 jsnewl = indexlp(inew-1)+1
155 jenewl = indexlp(inew)
156 jsnewu = indexup(inew-1)+1
157 jenewu = indexup(inew)
158 do jold = indexx(iold-1)+1, indexx(iold)
162 if (knew < inew)
then
166 write(0,*)
'ERROR:: jnew < 0 in reorder_off_diag2'
170 l0old = (jold-1)*ndof2
171 l0new = (jnew-1)*ndof2
173 alp(l0new + l) = ax(l0old + l)
179 write(0,*)
'ERROR:: jnew < 0 in reorder_off_diag2'
183 l0old = (jold-1)*ndof2
184 l0new = (jnew-1)*ndof2
186 aup(l0new + l) = ax(l0old + l)
193 end subroutine reorder_off_diag2
subroutine, public hecmw_bsearch_int_array(array, istart, iend, val, idx)
recursive subroutine, public hecmw_qsort_int_array(array, istart, iend)
subroutine, public hecmw_matrix_reorder_values(N, NDOF, perm, iperm, indexL, indexU, itemL, itemU, AL, AU, D, indexLp, indexUp, itemLp, itemUp, ALp, AUp, Dp)
subroutine, public hecmw_matrix_reorder_renum_item(N, perm, indexXp, itemXp)
subroutine, public hecmw_matrix_reorder_profile(N, perm, iperm, indexL, indexU, itemL, itemU, indexLp, indexUp, itemLp, itemUp)
subroutine hecmw_abort(comm, code)
integer(kind=kint) function hecmw_comm_get_comm()
integer(kind=4), parameter kreal