source: LMDZ6/trunk/libf/phy_common/ioipsl_getin_p_mod.f90 @ 5755

Last change on this file since 5755 was 5754, checked in by dcugnet, 13 days ago

Make the ioipsl_getin_p routine more flexible: optional default value
and optional flag to print or not the effective value of the key
=> get rid of the get_in routine

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