10 INTEGER,
DIMENSION(:),
INTENT(IN) :: ia
11 REAL(KIND=8),
DIMENSION(:),
INTENT(INOUT) :: aa
12 REAL(KIND=8),
DIMENSION(:),
INTENT(OUT) :: vect
23 DO j=ia(ii), ia(ii+1)-1
32 DO j=ia(ii), ia(ii+1)-1
48 INTEGER,
DIMENSION(:),
INTENT(IN) :: js
49 INTEGER,
DIMENSION(:),
INTENT(IN) :: ia
50 INTEGER,
DIMENSION(:),
INTENT(IN) :: ja
51 REAL(KIND=8),
DIMENSION(:),
INTENT(INOUT) :: a0
54 DO n = 1,
SIZE(js); i = js(n)
56 DO p = ia(i), ia(i+1) - 1
75 INTEGER,
DIMENSION(:),
INTENT(IN) :: js
76 INTEGER,
DIMENSION(:),
INTENT(IN) :: ia
77 INTEGER,
DIMENSION(:),
INTENT(IN) :: ja
78 REAL(KIND=8),
DIMENSION(:),
INTENT(INOUT) :: a0
79 REAL(KIND=8),
INTENT(IN) :: alpha
83 DO n = 1,
SIZE(js); i = js(n)
84 DO p = ia(i), ia(i+1) - 1
103 INTEGER,
DIMENSION(:),
INTENT(IN) :: ia
104 INTEGER,
DIMENSION(:),
INTENT(IN) :: ja
105 REAL(KIND=8),
DIMENSION(:),
INTENT(INOUT) :: a0
107 INTEGER :: n, i, k, p, np
109 np = (
SIZE(ia) - 1)/
SIZE(js_d)
111 DO n = 1,
SIZE(js_d(k)%DIL); i = js_d(k)%DIL(n) + (k-1)*np
112 DO p = ia(i), ia(i+1) - 1
128 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: js
129 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides
130 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir
131 INTEGER,
INTENT(OUT) :: j_d_size
133 INTEGER,
DIMENSION(:),
ALLOCATABLE :: j_all, j_dif
134 INTEGER :: nj, ms, ns
143 DO ms = 1,
SIZE(js, 2)
144 IF ( dir(sides(ms)) ) nj = nj +
SIZE(js, 1)
147 ALLOCATE (j_all(nj), j_dif(nj))
153 DO ms = 1,
SIZE(js, 2)
155 IF ( dir(sides(ms)) )
THEN
157 DO ns = 1,
SIZE(js, 1)
159 j_all(nj) = js(ns, ms)
172 DEALLOCATE (j_all, j_dif)
187 INTEGER,
DIMENSION(:),
INTENT(INOUT) :: a
188 INTEGER,
DIMENSION(:),
INTENT(OUT) :: a_d
189 INTEGER,
INTENT(OUT) :: n_a_d
191 INTEGER :: n, na, inc, i, j, k, ia
213 DO WHILE (a(j-inc) > ia)
227 IF (a(k) > a(k-1))
THEN
235 a_d(n_a_d + 1 : na) = 0
247 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: js
248 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides
249 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir
250 INTEGER,
DIMENSION(:),
INTENT(OUT) :: j_d
252 INTEGER,
DIMENSION(:),
ALLOCATABLE :: j_all, j_dif
253 INTEGER :: nj, ms, ns, nj_dif
262 DO ms = 1,
SIZE(js, 2)
263 IF ( dir(sides(ms)) ) nj = nj +
SIZE(js, 1)
266 ALLOCATE (j_all(nj), j_dif(nj))
272 DO ms = 1,
SIZE(js, 2)
274 IF ( dir(sides(ms)) )
THEN
276 DO ns = 1,
SIZE(js, 1)
278 j_all(nj) = js(ns, ms)
287 j_d = j_dif(1:nj_dif)
289 DEALLOCATE (j_all, j_dif)
305 INTEGER,
DIMENSION(:),
INTENT(INOUT) :: a
306 INTEGER,
DIMENSION(:),
INTENT(OUT) :: a_d
307 INTEGER,
INTENT(OUT) :: n_a_d
309 INTEGER :: n, na, inc, i, j, k, ia
331 DO WHILE (a(j-inc) > ia)
345 IF (a(k) > a(k-1))
THEN
353 a_d(n_a_d + 1 : na) = 0
364 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: js
365 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides
366 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir
367 INTEGER,
DIMENSION(:),
INTENT(OUT) :: j_d, s_d
369 INTEGER,
DIMENSION(:),
ALLOCATABLE :: j_all, j_dif, s_all
370 INTEGER :: nj, ms, ns, nj_dif
379 DO ms = 1,
SIZE(js, 2)
380 IF ( dir(sides(ms)) ) nj = nj +
SIZE(js, 1)
383 ALLOCATE (j_all(nj), j_dif(nj))
389 DO ms = 1,
SIZE(js, 2)
391 IF ( dir(sides(ms)) )
THEN
393 DO ns = 1,
SIZE(js, 1)
395 j_all(nj) = js(ns, ms)
404 j_d = j_dif(1:nj_dif)
409 DO ms = 1,
SIZE(js, 2)
411 IF ( dir(sides(ms)) )
THEN
413 DO ns = 1,
SIZE(js, 1)
415 s_all(js(ns, ms)) = sides(ms)
422 s_d = s_all(j_d(1:nj_dif))
424 DEALLOCATE (j_all, j_dif, s_all)
439 INTEGER,
DIMENSION(:),
INTENT(INOUT) :: a
440 INTEGER,
DIMENSION(:),
INTENT(OUT) :: a_d
441 INTEGER,
INTENT(OUT) :: n_a_d
443 INTEGER :: n, na, inc, i, j, k, ia
465 DO WHILE (a(j-inc) > ia)
479 IF (a(k) > a(k-1))
THEN
487 a_d(n_a_d + 1 : na) = 0
497 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: jjs_in
498 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides_in
499 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir_in
500 INTEGER,
DIMENSION(:),
POINTER :: js_d
507 ALLOCATE (js_d(j_size))
515 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: jjs_in
516 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides_in
517 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir_in
518 INTEGER,
DIMENSION(:),
POINTER :: js_d, sides_d
525 ALLOCATE (js_d(j_size), sides_d(j_size))
531 nb_bloc, bloc_size, js_d)
533 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: jjs_in
534 INTEGER,
DIMENSION(:),
INTENT(IN) :: sides_in
535 LOGICAL,
DIMENSION(:),
INTENT(IN) :: dir_in
536 INTEGER,
INTENT(IN) :: nb_bloc, bloc_size
537 INTEGER,
DIMENSION(:),
POINTER :: js_d_s, js_d
538 INTEGER:: j_size, n0, n_d, k
541 ALLOCATE (js_d_s(j_size))
544 ALLOCATE(js_d(nb_bloc*n_d))
547 js_d(n0+1:n0+n_d) = js_d_s + (k-1)*bloc_size
subroutine dir_nodes_size(js, sides, Dir, j_D_size)
subroutine dirichlet_m(js, ia, ja, a0)
subroutine dir_nodes_gen(js, sides, Dir, j_D)
subroutine dirichlet_bloc_m(js_D, ia, ja, a0)
subroutine precond_mat(ia, aa, vect)
subroutine dirichlet_rescale_m(js, ia, ja, alpha, a0)
subroutine dirichlet_nodes(jjs_in, sides_in, dir_in, js_d)
subroutine dirichlet_nodes_sides(jjs_in, sides_in, dir_in, js_d, sides_D)
subroutine dirichlet_nodes_bloc(jjs_in, sides_in, dir_in, nb_bloc, bloc_size, js_d)
subroutine dir_nodes_sides_gen(js, sides, Dir, j_D, s_D)
subroutine sort_diff(a, a_d, n_a_d)