source: CPL/oasis3-mct/branches/OASIS3-MCT_2.0_branch/examples/tutorial/decomp_def.F90 @ 4775

Last change on this file since 4775 was 4775, checked in by aclsce, 4 years ago
  • Imported oasis3-mct from Cerfacs svn server (not suppotred anymore).

The version has been extracted from https://oasis3mct.cerfacs.fr/svn/branches/OASIS3-MCT_2.0_branch/oasis3-mct@1818

File size: 1.6 KB
Line 
1!****************************************************************************************
2SUBROUTINE 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  !
51END SUBROUTINE decomp_def
52
Note: See TracBrowser for help on using the repository browser.