LMDZ
set2pe_mod.F90
Go to the documentation of this file.
1 MODULE set2pe_mod
2 CONTAINS
3 SUBROUTINE set2pe(KPE,KPRGPNS,KPRGPEW,KPRTRW,KPRTRV)
4 
5 #ifdef DOC
6 
7 !**** *SET2PE* - Convert from set numbers to PE number
8 
9 ! Purpose.
10 ! --------
11 ! Convert from set numbers in either grid-point space or spectral space
12 ! to PE number
13 
14 !** Interface.
15 ! ----------
16 ! *CALL* *SET2PE(KPRGPNS,KPRGPEW,KPRTRW,KPRTRV,KPE)
17 
18 ! Explicit arguments :
19 ! --------------------
20 
21 ! input : KPRGPNS - integer A set number in grid space
22 ! in the range 1 .. NPRGPNS
23 ! KPRGPEW - integer B set number in grid space
24 ! in the range 1 .. NPRGPEW
25 ! KPRTRW - integer A set number in spectral space
26 ! in the range 1 .. NPRTRW
27 ! KPRTRV - integer B set number in spectral space
28 ! in the range 1 .. NPRTRV
29 ! output: KPE - integer processor number
30 ! in the range 1 .. NPROC
31 
32 ! Normally, one pair of input set numbers will be set to zero
33 ! SET2PE will compute KPE from the first pair if they are valid numbers.
34 ! else from the other pair,
35 
36 ! Implicit arguments : YOMMP parameters
37 ! NPRGPNS,NPRGPEW,NPRTRW,NPRTRV,NPROC
38 
39 ! --------------------
40 ! Method.
41 ! -------
42 
43 ! Externals.
44 ! ----------
45 ! NONE
46 
47 ! Reference.
48 ! ----------
49 ! ECMWF Research Department documentation of the IFS
50 
51 ! Author.
52 ! -------
53 ! David Dent *ECMWF*
54 
55 ! Modifications.
56 ! --------------
57 ! Original : 98-08-19
58 ! ------------------------------------------------------------------
59 #endif
60 
61 USE parkind1 ,ONLY : jpim ,jprb
62 
63 USE tpm_distr
66 
67 IMPLICIT NONE
68 INTEGER(KIND=JPIM),INTENT(IN) :: KPRGPNS,KPRGPEW,KPRTRW,KPRTRV
69 INTEGER(KIND=JPIM),INTENT(OUT) :: KPE
70 
71 INTEGER(KIND=JPIM) :: IPE,JA
72 ! ------------------------------------------------------------------
73 
74 !* 1. Choose from input parameters
75 ! ----------------------------
76 
77 IF(kprgpns > 0.AND.kprgpew > 0) THEN
78 
79  IF( leq_regions )THEN
80  IF( kprgpns > n_regions_ns )THEN
81  WRITE(*,'(A,2I8)') ' SET2PE INVALID ARGUMENT ',kprgpns,n_regions_ns
82  CALL abor1(' SET2PE INVALID ARGUMENT ')
83  ENDIF
84  IF( kprgpew > n_regions(kprgpns) )THEN
85  WRITE(*,'(A,2I8)') ' SET2PE INVALID ARGUMENT ',kprgpew,n_regions(kprgpns)
86  CALL abor1(' SET2PE INVALID ARGUMENT ')
87  ENDIF
88  kpe=0
89  DO ja=1,kprgpns-1
90  kpe=kpe+n_regions(ja)
91  ENDDO
92  kpe=kpe+kprgpew
93  ELSE
94  IF(kprgpns <= nprgpns.AND.kprgpew <= nprgpew) THEN
95 
96 !* 2. Grid-space set values supplied
97 ! ------------------------------
98 
99  kpe=(kprgpns-1)*nprgpew + kprgpew
100  ELSE
101  WRITE(*,'(A,2I8)') ' SET2PE INVALID ARGUMENT ',kprgpns,kprgpew
102  CALL abort_trans(' SET2PE INVALID ARGUMENT ')
103  ENDIF
104  ENDIF
105 
106 ELSE
107 
108 !* 3. Spectral space set values supplied
109 ! ----------------------------------
110 
111  IF(kprtrw <= nprtrw.AND.kprtrv <= nprtrv) THEN
112  kpe=(kprtrw-1)*nprtrv + kprtrv
113  ELSE
114  WRITE(*,'(A,2I8)') ' SET2PE INVALID ARGUMENT ',kprtrw,kprtrv
115  CALL abort_trans(' SET2PE INVALID ARGUMENT ')
116  ENDIF
117 
118 ENDIF
119 
120 END SUBROUTINE set2pe
121 END MODULE set2pe_mod
integer(kind=jpim), public n_regions_ns
subroutine abor1(CDTEXT)
Definition: abor1.F90:2
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim) nprgpns
Definition: tpm_distr.F90:12
integer(kind=jpim) nprtrv
Definition: tpm_distr.F90:15
integer(kind=jpim) nprtrw
Definition: tpm_distr.F90:14
integer(kind=jpim) nprgpew
Definition: tpm_distr.F90:13
subroutine set2pe(KPE, KPRGPNS, KPRGPEW, KPRTRW, KPRTRV)
Definition: set2pe_mod.F90:4
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)