LMDZ
pe2set_mod.F90
Go to the documentation of this file.
1 MODULE pe2set_mod
2 CONTAINS
3 SUBROUTINE pe2set(KPE,KPRGPNS,KPRGPEW,KPRTRW,KPRTRV)
4 
5 #ifdef DOC
6 
7 !**** *PE2SET* - Convert from PE number to set numbers
8 
9 ! Purpose.
10 ! --------
11 ! Convert from PE number to set numbers in both
12 ! grid-point space and spectral space
13 
14 !** Interface.
15 ! ----------
16 ! *CALL* *PE2SET(KPE,KPRGPNS,KPRGPEW,KPRTRW,KPRTRV)
17 
18 ! Explicit arguments :
19 ! --------------------
20 ! input: KPE - integer processor number
21 ! in the range 1 .. NPROC
22 ! output: KPRGPNS - integer A set number in grid space
23 ! in the range 1 .. NPRGPNS
24 ! KPRGPEW - integer B set number in grid space
25 ! in the range 1 .. NPRGPEW
26 ! KPRTRW - integer A set number in spectral space
27 ! in the range 1 .. NPRTRW
28 ! KPRTRV - integer B set number in spectral space
29 ! in the range 1 .. NPRTRV
30 
31 ! Implicit arguments : YOMMP parameters
32 ! NPRGPNS,NPRGPEW,NPRTRW,NPRTRV,NPROC
33 
34 ! --------------------
35 ! Method.
36 ! -------
37 
38 ! PE allocation order is row oriented (e.g. NPRGPNS or NPRTRW = 4):
39 
40 ! 1 2 3 4
41 ! 5 6 7 8
42 ! 9 10 11 12
43 ! 13 14 15 16
44 ! . . . .
45 
46 ! Externals.
47 ! ----------
48 ! NONE
49 
50 ! Reference.
51 ! ----------
52 ! ECMWF Research Department documentation of the IFS
53 
54 ! Author.
55 ! -------
56 ! David Dent *ECMWF*
57 
58 ! Modifications.
59 ! --------------
60 ! Original : 98-08-19
61 ! Revision : 98-10-13 row ordering
62 ! ------------------------------------------------------------------
63 #endif
64 
65 USE parkind1 ,ONLY : jpim ,jprb
66 
67 USE tpm_distr
70 
71 
72 IMPLICIT NONE
73 INTEGER(KIND=JPIM),INTENT(IN) :: KPE
74 INTEGER(KIND=JPIM),INTENT(OUT) :: KPRGPNS,KPRGPEW,KPRTRW,KPRTRV
75 
76 INTEGER(KIND=JPIM) :: IPE,JA
77 ! ------------------------------------------------------------------
78 
79 !* 1. Check input argument for validity
80 ! ---------------------------------
81 
82 IF(kpe <= 0.OR.kpe > nproc) THEN
83  WRITE(*,'(A,2I8)') ' PE2SET INVALID ARGUMENT ',kpe,nproc
84  CALL abort_trans(' PE2SET INVALID ARGUMENT ')
85 
86 ELSE
87 
88 !* 2. Compute output parameters
89 ! -------------------------
90 
91  IF( leq_regions )THEN
92  kprgpns=1
93  ipe=kpe
94  DO ja=1,n_regions_ns
95  IF( ipe > n_regions(ja) )THEN
96  ipe=ipe-n_regions(ja)
97  kprgpns=kprgpns+1
98  cycle
99  ENDIF
100  kprgpew=ipe
101  EXIT
102  ENDDO
103  ELSE
104  kprgpew=mod(kpe-1,nprgpew)+1
105  kprgpns=(kpe-1)/nprgpew+1
106  ENDIF
107  kprtrv =mod(kpe-1,nprtrv)+1
108  kprtrw =(kpe-1)/nprtrv+1
109 
110 ENDIF
111 
112 END SUBROUTINE pe2set
113 END MODULE pe2set_mod
integer(kind=jpim), public n_regions_ns
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim) nproc
Definition: tpm_distr.F90:11
integer(kind=jpim) nprtrv
Definition: tpm_distr.F90:15
integer(kind=jpim) nprgpew
Definition: tpm_distr.F90:13
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), dimension(:), allocatable, public n_regions
logical leq_regions
Definition: tpm_distr.F90:18
subroutine abort_trans(CDTEXT)
subroutine pe2set(KPE, KPRGPNS, KPRGPEW, KPRTRW, KPRTRV)
Definition: pe2set_mod.F90:4