source: XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90 @ 26

Last change on this file since 26 was 26, checked in by ymipsl, 15 years ago

Mise à jour importante :

  • ajout de la grille type LMDZ
  • ajout des context
  • ajout de namelist pour parametrer l'utilisation du server : avec/sans MPI, en utlisant ou pas OASIS
File size: 7.4 KB
Line 
1MODULE mod_event_client
2  USE mod_pack, ONLY : pack, pack_field
3  USE mod_mpi_buffer_client, ONLY : create_request, finalize_request
4  USE mod_event_parameters 
5  USE mod_ioserver_namelist
6     
7CONTAINS
8
9  SUBROUTINE event__swap_context(id)
10  USE iomanager
11  IMPLICIT NONE
12    CHARACTER(LEN=*),INTENT(IN) :: id
13   
14    IF (using_server) THEN
15      CALL create_request(event_id_swap_context)
16      CALL pack(LEN(TRIM(id)))
17      CALL pack(TRIM(id))
18      CALL Finalize_request
19    ELSE
20      CALL iom__swap_context(TRIM(id))
21    ENDIF
22   
23  END SUBROUTINE  event__swap_context
24 
25 
26  SUBROUTINE event__parse_xml_file(filename)
27  USE iomanager
28  IMPLICIT NONE
29    CHARACTER(LEN=*),INTENT(IN) :: filename
30   
31    IF (using_server) THEN
32      CALL create_request(event_id_parse_xml_file)
33      CALL pack(LEN(TRIM(filename)))
34      CALL pack(TRIM(filename))
35      CALL Finalize_request
36    ELSE
37      CALL iom__parse_xml_file(filename)
38    ENDIF
39   
40  END SUBROUTINE  event__parse_xml_file
41
42  SUBROUTINE event__set_vert_axis(vert_name,vert_value)
43  USE iomanager
44  IMPLICIT NONE
45    CHARACTER(LEN=*),INTENT(IN) :: vert_name
46    REAL,INTENT(IN)             :: vert_value(:)
47   
48   
49    IF (using_server) THEN
50      CALL create_request(event_id_set_vert_axis)
51      CALL pack(LEN(TRIM(vert_name)))
52      CALL pack(TRIM(vert_name))
53      CALL pack(SIZE(vert_value))
54      CALL pack(vert_value)
55      CALL Finalize_request
56    ELSE
57      CALL iom__set_vert_axis(vert_name,vert_value)
58    ENDIF
59   
60  END SUBROUTINE  event__set_vert_axis
61
62  SUBROUTINE event__set_grid_dimension(name,ni_glo,nj_glo)
63  USE iomanager
64  IMPLICIT NONE
65    CHARACTER(LEN=*),INTENT(IN) :: name
66    INTEGER,INTENT(IN) :: ni_glo
67    INTEGER,INTENT(IN) :: nj_glo
68   
69    IF (using_server) THEN
70      CALL create_request(event_id_set_grid_dimension)
71      CALL pack(LEN(TRIM(name)))
72      CALL pack(TRIM(name))
73      CALL pack(ni_glo)
74      CALL pack(nj_glo)
75      CALL Finalize_request
76    ELSE
77      CALL iom__set_grid_dimension(name,ni_glo,nj_glo)
78    ENDIF
79   
80  END SUBROUTINE event__set_grid_dimension
81
82 
83  SUBROUTINE event__set_grid_domain(name,ni,nj,ibegin,jbegin,lon,lat)
84  USE iomanager
85  IMPLICIT NONE
86    CHARACTER(LEN=*),INTENT(IN) :: name
87    INTEGER,INTENT(IN) :: ni
88    INTEGER,INTENT(IN) :: nj
89    INTEGER,INTENT(IN) :: ibegin
90    INTEGER,INTENT(IN) :: jbegin
91    REAL,INTENT(IN)    :: lon(ni,nj)
92    REAL,INTENT(IN)    :: lat(ni,nj)
93   
94    IF (using_server) THEN
95      CALL create_request(event_id_set_grid_domain)
96      CALL pack(LEN(TRIM(name)))
97      CALL pack(TRIM(name))
98      CALL pack(ni)
99      CALL pack(nj)
100      CALL pack(ibegin)
101      CALL pack(jbegin)
102      CALL pack(lon)
103      CALL pack(lat)
104      CALL Finalize_request
105    ELSE
106     CALL iom__set_grid_domain(name,ni,nj,ibegin,jbegin,lon,lat)
107    ENDIF
108     
109  END SUBROUTINE event__set_grid_domain
110
111  SUBROUTINE event__set_grid_type_nemo(name)
112  USE iomanager
113  IMPLICIT NONE
114    CHARACTER(LEN=*),INTENT(IN) :: name
115   
116    IF (using_server) THEN
117      CALL create_request(event_id_set_grid_type_nemo)
118      CALL pack(LEN(TRIM(name)))
119      CALL pack(TRIM(name))
120      CALL Finalize_request
121    ELSE
122     CALL iom__set_grid_type_nemo(name)
123    ENDIF
124     
125  END SUBROUTINE event__set_grid_type_nemo
126 
127  SUBROUTINE event__set_grid_type_lmdz(name,nbp,offset)
128  USE iomanager
129  IMPLICIT NONE
130    CHARACTER(LEN=*),INTENT(IN) :: name
131    INTEGER,INTENT(IN)          :: nbp
132    INTEGER,INTENT(IN)          :: offset
133       
134    IF (using_server) THEN
135      CALL create_request(event_id_set_grid_type_lmdz)
136      CALL pack(LEN(TRIM(name)))
137      CALL pack(TRIM(name))
138      CALL pack(nbp)
139      CALL pack(offset)
140      CALL Finalize_request
141    ELSE
142     CALL iom__set_grid_type_lmdz(name,nbp,offset)
143    ENDIF
144     
145  END SUBROUTINE event__set_grid_type_lmdz
146 
147  SUBROUTINE event__set_time_parameters(itau0,zjulian,zdt)
148  USE iomanager
149  IMPLICIT NONE
150    INTEGER,INTENT(IN)  :: itau0
151    REAL,   INTENT(IN)  :: zjulian
152    REAL,   INTENT(IN)  :: zdt
153       
154    IF (using_server) THEN
155      CALL create_request(event_id_set_time_parameters)
156      CALL pack(itau0)
157      CALL pack(zjulian)
158      CALL pack(zdt)
159      CALL Finalize_request
160    ELSE
161      CALL iom__set_time_parameters(itau0,zjulian,zdt)
162    ENDIF
163   
164  END SUBROUTINE event__set_time_parameters
165
166
167  SUBROUTINE event__enable_field(varname)
168  USE iomanager
169  IMPLICIT NONE
170    CHARACTER(len=*),INTENT(IN)     :: varname
171
172    IF (using_server) THEN
173      CALL create_request(event_id_enable_field)
174      CALL pack(len(varname))
175      CALL pack(varname)
176      CALL Finalize_request 
177    ELSE
178      CALL iom__enable_field(varname)
179    ENDIF
180   
181  END SUBROUTINE event__enable_field
182
183  SUBROUTINE event__disable_field(varname)
184  USE iomanager
185  IMPLICIT NONE
186    CHARACTER(len=*),INTENT(IN)     :: varname
187
188    IF (using_server) THEN
189      CALL create_request(event_id_disable_field)
190      CALL pack(len(varname))
191      CALL pack(varname)
192      CALL Finalize_request 
193    ELSE
194      CALL iom__disable_field(varname)
195    ENDIF
196   
197  END SUBROUTINE event__disable_field
198 
199  SUBROUTINE event__write_field1d(varname,var)
200  USE iomanager
201  IMPLICIT NONE
202    CHARACTER(len=*),INTENT(IN)     :: varname
203    REAL, DIMENSION(:),INTENT(IN) :: var
204
205    IF (using_server) THEN
206      CALL create_request(event_id_write_field1d)
207      CALL pack(len(varname))
208      CALL pack(size(var,1))
209      CALL pack(varname)
210      CALL pack_field(var)
211      CALL Finalize_request 
212    ELSE
213      CALL iom__write_field1d(varname,var)
214    ENDIF
215   
216  END SUBROUTINE event__write_field1d
217
218  SUBROUTINE event__write_field2d(varname,var)
219  USE iomanager
220  IMPLICIT NONE
221    CHARACTER(len=*),INTENT(IN)     :: varname
222    REAL, DIMENSION(:,:),INTENT(IN) :: var
223
224    IF (using_server) THEN
225      CALL create_request(event_id_write_field2d)
226      CALL pack(len(varname))
227      CALL pack(size(var,1))
228      CALL pack(size(var,2))
229      CALL pack(varname)
230      CALL pack_field(var)
231      CALL Finalize_request 
232    ELSE
233      CALL iom__write_field2d(varname,var)
234    ENDIF
235   
236  END SUBROUTINE event__write_field2d
237 
238  SUBROUTINE event__write_field3d(varname,var)
239  USE iomanager
240  IMPLICIT NONE
241    CHARACTER(len=*),INTENT(IN)     :: varname
242    REAL, DIMENSION(:,:,:),INTENT(IN) :: var
243
244    IF (using_server) THEN
245      CALL create_request(event_id_write_field3d)
246      CALL pack(len(varname))
247      CALL pack(size(var,1))
248      CALL pack(size(var,2))
249      CALL pack(size(var,3))
250      CALL pack(varname)
251      CALL pack_field(var)
252      CALL Finalize_request 
253    ELSE
254      CALL iom__write_field3d(varname,var)
255    ENDIF
256  END SUBROUTINE event__write_field3d
257 
258
259  SUBROUTINE event__set_timestep(timestep)
260  USE iomanager
261  IMPLICIT NONE
262    INTEGER,INTENT(IN) :: timestep
263   
264    IF (using_server) THEN
265      CALL create_request(event_id_set_timestep)
266      CALL pack(timestep)
267      CALL Finalize_request
268    ELSE
269      CALL iom__set_timestep(timestep)
270    ENDIF
271
272  END SUBROUTINE event__set_timestep
273   
274   
275  SUBROUTINE event__close_io_definition
276  USE iomanager
277  IMPLICIT NONE
278   
279    IF (using_server) THEN
280      CALL create_request(event_id_close_io_definition)
281      CALL Finalize_request
282    ELSE
283      CALL iom__close_io_definition
284    ENDIF
285
286  END SUBROUTINE event__close_io_definition
287
288 
289  SUBROUTINE event__stop_ioserver
290  USE iomanager
291  IMPLICIT NONE
292 
293    IF (using_server) THEN
294      CALL create_request(event_id_stop_ioserver)
295      CALL Finalize_request
296    ELSE
297      CALL iom__finalize
298    ENDIF
299
300  END SUBROUTINE event__stop_ioserver
301   
302 
303END MODULE mod_event_client
Note: See TracBrowser for help on using the repository browser.