21 indexL, indexU, itemL, itemU, indexLp, indexUp, itemLp, itemUp)
23 integer(kind=kint),
intent(in) :: n
24 integer(kind=kint),
intent(in) :: perm(:), iperm(:)
25 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
26 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
27 integer(kind=kint),
intent(out) :: indexlp(0:), indexup(0:)
28 integer(kind=kint),
intent(out) :: itemlp(:), itemup(:)
29 integer(kind=kint) :: cntl, cntu, inew, iold, j, jold, jnew
37 do j = indexl(iold-1)+1, indexl(iold)
49 do j = indexu(iold-1)+1, indexu(iold)
69 indexL, indexU, itemL, itemU, AL, AU, D, &
70 indexLp, indexUp, itemLp, itemUp, ALp, AUp, Dp)
72 integer(kind=kint),
intent(in) :: n, ndof
73 integer(kind=kint),
intent(in) :: perm(:), iperm(:)
74 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
75 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
76 real(kind=
kreal),
intent(in) :: al(:), au(:), d(:)
77 integer(kind=kint),
intent(in) :: indexlp(0:), indexup(0:)
78 integer(kind=kint),
intent(in) :: itemlp(:), itemup(:)
79 real(kind=
kreal),
intent(out) :: alp(:), aup(:), dp(:)
90 call reorder_diag2(n, ndof, iperm, d, dp)
91 call reorder_off_diag2(n, ndof, iperm, &
93 indexlp, indexup, itemlp, itemup, alp, aup)
94 call reorder_off_diag2(n, ndof, iperm, &
96 indexlp, indexup, itemlp, itemup, alp, aup)
101 integer(kind=kint),
intent(in) :: n, ndof
102 integer(kind=kint),
intent(in) :: perm(:)
103 real(kind=
kreal),
intent(in) :: x(:)
104 real(kind=
kreal),
intent(out) :: xp(:)
105 integer(kind=kint) :: inew, iold, j0new, j0old, j
111 j0new = (inew-1)*ndof
112 j0old = (iold-1)*ndof
114 xp(j0new + j) = x(j0old + j)
123 integer(kind=kint),
intent(in) :: n, ndof
124 integer(kind=kint),
intent(in) :: perm(:)
125 real(kind=
kreal),
intent(in) :: xp(:)
126 real(kind=
kreal),
intent(out) :: x(:)
127 integer(kind=kint) :: inew, iold, j0new, j0old, j
133 j0new = (inew-1)*ndof
134 j0old = (iold-1)*ndof
136 x(j0old + j) = xp(j0new + j)
145 integer(kind=kint),
intent(in) :: n
146 integer(kind=kint),
intent(in) :: perm(:)
147 integer(kind=kint),
intent(in) :: indexxp(0:)
148 integer(kind=kint),
intent(inout) :: itemxp(:)
149 integer(kind=kint) :: npx, i
154 itemxp(i) = perm( itemxp(i) )
160 subroutine reorder_diag(N, NDOF, perm, D, Dp)
162 integer(kind=kint),
intent(in) :: n, ndof
163 integer(kind=kint),
intent(in) :: perm(:)
164 real(kind=
kreal),
intent(in) :: d(:)
165 real(kind=
kreal),
intent(out) :: dp(:)
166 integer(kind=kint) :: ndof2, inew, iold, j0new, j0old, j
171 j0new = (inew-1)*ndof2
172 j0old = (iold-1)*ndof2
174 dp(j0new + j) = d(j0old + j)
177 end subroutine reorder_diag
179 subroutine reorder_diag2(N, NDOF, iperm, D, Dp)
181 integer(kind=kint),
intent(in) :: n, ndof
182 integer(kind=kint),
intent(in) :: iperm(:)
183 real(kind=
kreal),
intent(in) :: d(:)
184 real(kind=
kreal),
intent(out) :: dp(:)
185 integer(kind=kint) :: ndof2, inew, iold, j0new, j0old, j
193 j0old = (iold-1)*ndof2
194 j0new = (inew-1)*ndof2
196 dp(j0new + j) = d(j0old + j)
201 end subroutine reorder_diag2
203 subroutine reorder_off_diag(N, NDOF, perm, &
204 indexL, indexU, itemL, itemU, AL, AU, &
205 indexXp, itemXp, AXp)
207 integer(kind=kint),
intent(in) :: n, ndof
208 integer(kind=kint),
intent(in) :: perm(:)
209 integer(kind=kint),
intent(in) :: indexl(0:), indexu(0:)
210 integer(kind=kint),
intent(in) :: iteml(:), itemu(:)
211 real(kind=
kreal),
intent(in) :: al(:), au(:)
212 integer(kind=kint),
intent(in) :: indexxp(0:)
213 integer(kind=kint),
intent(in) :: itemxp(:)
214 real(kind=
kreal),
intent(out) :: axp(:)
215 integer(kind=kint) :: ndof2, inew, iold
216 integer(kind=kint) :: jsoldl, jeoldl, jsoldu, jeoldu
217 integer(kind=kint) :: jnew, knew, kold, jold, l0new, l0old, l
222 jsoldl = indexl(iold-1)+1
223 jeoldl = indexl(iold)
224 jsoldu = indexu(iold-1)+1
225 jeoldu = indexu(iold)
226 do jnew = indexxp(inew-1)+1, indexxp(inew)
229 if (kold < iold)
then
232 write(0,*)
'DEBUG:: jold < 0 in reorder_off_diag'
235 l0new = (jnew-1)*ndof2
236 l0old = (jold-1)*ndof2
238 axp(l0new + l) = al(l0old + l)
243 write(0,*)
'DEBUG:: jold < 0 in reorder_off_diag'
246 l0new = (jnew-1)*ndof2
247 l0old = (jold-1)*ndof2
249 axp(l0new + l) = au(l0old + l)
254 end subroutine reorder_off_diag
256 subroutine reorder_off_diag2(N, NDOF, iperm, &
258 indexLp, indexUp, itemLp, itemUp, ALp, AUp)
260 integer(kind=kint),
intent(in) :: n, ndof
261 integer(kind=kint),
intent(in) :: iperm(:)
262 integer(kind=kint),
intent(in) :: indexx(0:)
263 integer(kind=kint),
intent(in) :: itemx(:)
264 real(kind=
kreal),
intent(in) :: ax(:)
265 integer(kind=kint),
intent(in) :: indexlp(0:), indexup(0:)
266 integer(kind=kint),
intent(in) :: itemlp(:), itemup(:)
267 real(kind=
kreal),
intent(out) :: alp(:), aup(:)
268 integer(kind=kint) :: ndof2, iold, inew
269 integer(kind=kint) :: jsnewl, jenewl, jsnewu, jenewu
270 integer(kind=kint) :: jold, kold, knew, jnew, l0old, l0new, l
279 jsnewl = indexlp(inew-1)+1
280 jenewl = indexlp(inew)
281 jsnewu = indexup(inew-1)+1
282 jenewu = indexup(inew)
283 do jold = indexx(iold-1)+1, indexx(iold)
287 if (knew < inew)
then
290 write(0,*)
'ERROR:: jnew < 0 in reorder_off_diag2'
293 l0old = (jold-1)*ndof2
294 l0new = (jnew-1)*ndof2
296 alp(l0new + l) = ax(l0old + l)
301 write(0,*)
'ERROR:: jnew < 0 in reorder_off_diag2'
304 l0old = (jold-1)*ndof2
305 l0new = (jnew-1)*ndof2
307 aup(l0new + l) = ax(l0old + l)
314 end subroutine reorder_off_diag2