1 | !**************************************************************************************** |
---|
2 | SUBROUTINE decomp_def(id_paral,id_size,id_im,id_jm,id_rank,id_npes,id_unit) |
---|
3 | ! |
---|
4 | IMPLICIT NONE |
---|
5 | INTEGER, DIMENSION(id_size), INTENT(out) :: id_paral(id_size) |
---|
6 | INTEGER, INTENT(in) :: id_size |
---|
7 | INTEGER, INTENT(in) :: id_im ! Grid dimension in i |
---|
8 | INTEGER, INTENT(in) :: id_jm ! Grid dimension in j |
---|
9 | INTEGER, INTENT(in) :: id_rank ! Rank of process |
---|
10 | INTEGER, INTENT(in) :: id_npes ! Number of processes involved in the coupling |
---|
11 | INTEGER, INTENT(in) :: id_unit ! Unit of log file |
---|
12 | INTEGER :: il_imjm, il_partj |
---|
13 | ! |
---|
14 | il_imjm = id_im*id_jm |
---|
15 | il_partj = id_jm/id_npes ! Nbr of latitude circles in the partition |
---|
16 | ! |
---|
17 | #ifdef DECOMP_APPLE |
---|
18 | ! Each process is responsible for a part of field defined by |
---|
19 | ! the number of grid points and the offset of the first point |
---|
20 | ! |
---|
21 | WRITE (id_unit,*) 'APPLE partitioning' |
---|
22 | ! |
---|
23 | IF (id_rank .LT. (id_npes-1)) THEN |
---|
24 | id_paral (1) = 1 |
---|
25 | id_paral (2) = id_rank*(il_partj * id_im) |
---|
26 | id_paral (3) = il_partj * id_im |
---|
27 | ELSE |
---|
28 | id_paral (1) = 1 |
---|
29 | id_paral (2) = id_rank*(il_partj * id_im) |
---|
30 | id_paral (3) = il_imjm-(id_rank*(il_partj * id_im)) |
---|
31 | ENDIF |
---|
32 | ! |
---|
33 | #elif defined DECOMP_BOX |
---|
34 | ! |
---|
35 | WRITE (id_unit,*) 'BOX partitioning' |
---|
36 | ! |
---|
37 | ! Each process is responsible for a rectangular box of il_partj lines |
---|
38 | ! |
---|
39 | id_paral (1) = 2 |
---|
40 | id_paral (5) = id_im |
---|
41 | id_paral (2) = id_rank*il_partj*id_im |
---|
42 | id_paral (3) = id_im |
---|
43 | IF (id_rank .LT. (id_npes-1)) THEN |
---|
44 | id_paral (4) = il_partj |
---|
45 | ELSE |
---|
46 | id_paral (4) = id_jm-(id_rank*il_partj) |
---|
47 | ENDIF |
---|
48 | ! |
---|
49 | #endif |
---|
50 | ! |
---|
51 | END SUBROUTINE decomp_def |
---|
52 | |
---|