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