[6331] | 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 32x48 points |
---|
| 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 | |
---|