source: trunk/LMDZ.COMMON/libf/phy_common/ioipsl_getin_p_mod.F90 @ 4003

Last change on this file since 4003 was 3896, checked in by emillour, 6 months ago

Dynamics-physics interface:
Minor cleaning and prettyfying: use "is_master" when possible,
remove unecessary memory-hungry calls to check_buffer_r in omp_transfert,
and convert comments to English in transfert_para.
EM

File size: 4.0 KB
Line 
1!
2! $Id$
3!
4MODULE ioipsl_getin_p_mod
5! To use getin in a parallel context
6!---------------------------------------------------------------------
7#ifdef CPP_IOIPSL
8USE ioipsl, ONLY: getin
9#else
10USE ioipsl_getincom, ONLY: getin
11#endif
12USE mod_phys_lmdz_para, ONLY :  is_master
13USE mod_phys_lmdz_transfert_para, ONLY : bcast
14!-
15IMPLICIT NONE
16!-
17PRIVATE
18PUBLIC :: getin_p
19!-
20INTERFACE getin_p
21
22  MODULE PROCEDURE getinrs_p, getinr1d_p, getinr2d_p, &
23 &                 getinis_p, getini1d_p, getini2d_p, &
24 &                 getincs_p, getinc1d_p,             &
25 &                 getinls_p, getinl1d_p, getinl2d_p
26END INTERFACE
27!-
28CONTAINS
29
30
31!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32!!   Definition des getin -> bcast      !!
33!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
34
35!! -- Les chaines de caracteres -- !!
36 
37  SUBROUTINE getincs_p(VarIn,VarOut)
38    IMPLICIT NONE   
39    CHARACTER(LEN=*),INTENT(IN) :: VarIn
40    CHARACTER(LEN=*),INTENT(INOUT) :: VarOut   
41
42!$OMP BARRIER
43    IF (is_master) THEN
44        CALL getin(VarIn,VarOut)
45    ENDIF
46    CALL bcast(VarOut)
47  END SUBROUTINE getincs_p
48
49  SUBROUTINE getinc1d_p(VarIn,VarOut)
50    IMPLICIT NONE   
51    CHARACTER(LEN=*),INTENT(IN) :: VarIn
52    CHARACTER(LEN=*),INTENT(INOUT) :: VarOut(:)   
53
54    INTEGER :: i
55
56!$OMP BARRIER
57    IF (is_master) THEN
58        CALL getin(VarIn,VarOut)
59    ENDIF
60    DO i=1,size(VarOut)
61      CALL bcast(VarOut(i))
62    ENDDO
63  END SUBROUTINE getinc1d_p
64
65!! -- Les entiers -- !!
66 
67  SUBROUTINE getinis_p(VarIn,VarOut)
68    IMPLICIT NONE   
69    CHARACTER(LEN=*),INTENT(IN) :: VarIn
70    INTEGER,INTENT(INOUT) :: VarOut   
71
72!$OMP BARRIER
73    IF (is_master) THEN
74        CALL getin(VarIn,VarOut)
75    ENDIF
76    CALL bcast(VarOut)
77  END SUBROUTINE getinis_p
78
79  SUBROUTINE getini1d_p(VarIn,VarOut)
80    IMPLICIT NONE   
81    CHARACTER(LEN=*),INTENT(IN) :: VarIn
82    INTEGER,INTENT(INOUT) :: VarOut(:)
83
84!$OMP BARRIER
85    IF (is_master) THEN
86        CALL getin(VarIn,VarOut)
87    ENDIF
88    CALL bcast(VarOut)
89  END SUBROUTINE getini1d_p
90
91  SUBROUTINE getini2d_p(VarIn,VarOut)
92    IMPLICIT NONE   
93    CHARACTER(LEN=*),INTENT(IN) :: VarIn
94    INTEGER,INTENT(INOUT) :: VarOut(:,:)
95
96!$OMP BARRIER
97    IF (is_master) THEN
98        CALL getin(VarIn,VarOut)
99    ENDIF
100    CALL bcast(VarOut)
101  END SUBROUTINE getini2d_p
102
103!! -- Les flottants -- !!
104 
105  SUBROUTINE getinrs_p(VarIn,VarOut)
106    IMPLICIT NONE   
107    CHARACTER(LEN=*),INTENT(IN) :: VarIn
108    REAL,INTENT(INOUT) :: VarOut
109
110!$OMP BARRIER
111    IF (is_master) THEN
112        CALL getin(VarIn,VarOut)
113    ENDIF
114    CALL bcast(VarOut)
115  END SUBROUTINE getinrs_p
116
117  SUBROUTINE getinr1d_p(VarIn,VarOut)
118    IMPLICIT NONE   
119    CHARACTER(LEN=*),INTENT(IN) :: VarIn
120    REAL,INTENT(INOUT) :: VarOut(:)
121
122!$OMP BARRIER
123    IF (is_master) THEN
124        CALL getin(VarIn,VarOut)
125    ENDIF
126    CALL bcast(VarOut)
127  END SUBROUTINE getinr1d_p
128
129  SUBROUTINE getinr2d_p(VarIn,VarOut)
130    IMPLICIT NONE   
131    CHARACTER(LEN=*),INTENT(IN) :: VarIn
132    REAL,INTENT(INOUT) :: VarOut(:,:)
133
134!$OMP BARRIER
135    IF (is_master) THEN
136        CALL getin(VarIn,VarOut)
137    ENDIF
138    CALL bcast(VarOut)
139  END SUBROUTINE getinr2d_p
140
141!! -- Les Booleens -- !!
142 
143  SUBROUTINE getinls_p(VarIn,VarOut)
144    IMPLICIT NONE   
145    CHARACTER(LEN=*),INTENT(IN) :: VarIn
146    LOGICAL,INTENT(INOUT) :: VarOut
147
148!$OMP BARRIER
149    IF (is_master) THEN
150        CALL getin(VarIn,VarOut)
151    ENDIF
152    CALL bcast(VarOut)
153  END SUBROUTINE getinls_p
154
155  SUBROUTINE getinl1d_p(VarIn,VarOut)
156    IMPLICIT NONE   
157    CHARACTER(LEN=*),INTENT(IN) :: VarIn
158    LOGICAL,INTENT(INOUT) :: VarOut(:)
159
160!$OMP BARRIER
161    IF (is_master) THEN
162        CALL getin(VarIn,VarOut)
163    ENDIF
164    CALL bcast(VarOut)
165  END SUBROUTINE getinl1d_p
166
167  SUBROUTINE getinl2d_p(VarIn,VarOut)
168    IMPLICIT NONE   
169    CHARACTER(LEN=*),INTENT(IN) :: VarIn
170    LOGICAL,INTENT(INOUT) :: VarOut(:,:)
171
172!$OMP BARRIER
173    IF (is_master) THEN
174        CALL getin(VarIn,VarOut)
175    ENDIF
176    CALL bcast(VarOut)
177  END SUBROUTINE getinl2d_p
178!-
179!-----------------------------
180!-----------------------------
181!-----------------------------
182
183END MODULE ioipsl_getin_p_mod
184
Note: See TracBrowser for help on using the repository browser.