New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
mod_event_client.f90 in trunk/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER – NEMO

source: trunk/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER/mod_event_client.f90 @ 2767

Last change on this file since 2767 was 2767, checked in by smasson, 13 years ago

merging XMLIO_SERVER/r_193 into the EXTERNAL deposit

  • Property svn:keywords set to Id
File size: 8.6 KB
Line 
1MODULE mod_event_client
2  USE mod_pack, ONLY : pack_data, pack_field
3  USE mod_mpi_buffer_client, ONLY : create_request, finalize_request,is_last_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_data(LEN(TRIM(id)))
17      CALL pack_data(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_data(LEN(TRIM(filename)))
34      CALL pack_data(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_data(LEN(TRIM(vert_name)))
52      CALL pack_data(TRIM(vert_name))
53      CALL pack_data(SIZE(vert_value))
54      CALL pack_data(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_data(LEN(TRIM(name)))
72      CALL pack_data(TRIM(name))
73      CALL pack_data(ni_glo)
74      CALL pack_data(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_data(LEN(TRIM(name)))
97      CALL pack_data(TRIM(name))
98      CALL pack_data(ni)
99      CALL pack_data(nj)
100      CALL pack_data(ibegin)
101      CALL pack_data(jbegin)
102      CALL pack_data(lon)
103      CALL pack_data(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_data(LEN(TRIM(name)))
119      CALL pack_data(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_data(LEN(TRIM(name)))
137      CALL pack_data(TRIM(name))
138      CALL pack_data(nbp)
139      CALL pack_data(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_data(itau0)
157      CALL pack_data(zjulian)
158      CALL pack_data(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__set_calendar(str_calendar)
168  USE iomanager
169  IMPLICIT NONE
170    CHARACTER(LEN=*),INTENT(IN) :: str_calendar
171       
172    IF (using_server) THEN
173      CALL create_request(event_id_set_calendar)
174      CALL pack_data(LEN(TRIM(str_calendar)))
175      CALL pack_data(TRIM(str_calendar))
176      CALL Finalize_request
177    ELSE
178     CALL iom__set_calendar(str_calendar)
179    ENDIF
180     
181  END SUBROUTINE event__set_calendar
182 
183 
184  SUBROUTINE event__enable_field(varname)
185  USE iomanager
186  IMPLICIT NONE
187    CHARACTER(len=*),INTENT(IN)     :: varname
188
189    IF (using_server) THEN
190      CALL create_request(event_id_enable_field)
191      CALL pack_data(len(varname))
192      CALL pack_data(varname)
193      CALL Finalize_request 
194    ELSE
195      CALL iom__enable_field(varname)
196    ENDIF
197   
198  END SUBROUTINE event__enable_field
199
200  SUBROUTINE event__disable_field(varname)
201  USE iomanager
202  IMPLICIT NONE
203    CHARACTER(len=*),INTENT(IN)     :: varname
204
205    IF (using_server) THEN
206      CALL create_request(event_id_disable_field)
207      CALL pack_data(len(varname))
208      CALL pack_data(varname)
209      CALL Finalize_request 
210    ELSE
211      CALL iom__disable_field(varname)
212    ENDIF
213   
214  END SUBROUTINE event__disable_field
215 
216  SUBROUTINE event__write_field1d(varname,var)
217  USE iomanager
218  IMPLICIT NONE
219    CHARACTER(len=*),INTENT(IN)     :: varname
220    REAL, DIMENSION(:),INTENT(IN) :: var
221
222    IF (using_server) THEN
223      CALL create_request(event_id_write_field1d)
224      CALL pack_data(len(varname))
225      CALL pack_data(size(var,1))
226      CALL pack_data(varname)
227      CALL pack_field(var)
228      CALL Finalize_request 
229    ELSE
230      CALL iom__write_field1d(varname,var)
231    ENDIF
232   
233  END SUBROUTINE event__write_field1d
234
235  SUBROUTINE event__write_field2d(varname,var)
236  USE iomanager
237  IMPLICIT NONE
238    CHARACTER(len=*),INTENT(IN)     :: varname
239    REAL, DIMENSION(:,:),INTENT(IN) :: var
240
241    IF (using_server) THEN
242      CALL create_request(event_id_write_field2d)
243      CALL pack_data(len(varname))
244      CALL pack_data(size(var,1))
245      CALL pack_data(size(var,2))
246      CALL pack_data(varname)
247      CALL pack_field(var)
248      CALL Finalize_request 
249    ELSE
250      CALL iom__write_field2d(varname,var)
251    ENDIF
252   
253  END SUBROUTINE event__write_field2d
254 
255  SUBROUTINE event__write_field3d(varname,var)
256  USE iomanager
257  IMPLICIT NONE
258    CHARACTER(len=*),INTENT(IN)     :: varname
259    REAL, DIMENSION(:,:,:),INTENT(IN) :: var
260
261    IF (using_server) THEN
262      CALL create_request(event_id_write_field3d)
263      CALL pack_data(len(varname))
264      CALL pack_data(size(var,1))
265      CALL pack_data(size(var,2))
266      CALL pack_data(size(var,3))
267      CALL pack_data(varname)
268      CALL pack_field(var)
269      CALL Finalize_request 
270    ELSE
271      CALL iom__write_field3d(varname,var)
272    ENDIF
273  END SUBROUTINE event__write_field3d
274 
275
276  SUBROUTINE event__set_timestep(timestep)
277  USE iomanager
278  IMPLICIT NONE
279    INTEGER,INTENT(IN) :: timestep
280   
281    IF (using_server) THEN
282      CALL create_request(event_id_set_timestep)
283      CALL pack_data(timestep)
284      CALL Finalize_request
285    ELSE
286      CALL iom__set_timestep(timestep)
287    ENDIF
288
289  END SUBROUTINE event__set_timestep
290   
291   
292  SUBROUTINE event__close_io_definition
293  USE iomanager
294  IMPLICIT NONE
295   
296    IF (using_server) THEN
297      CALL create_request(event_id_close_io_definition)
298      CALL Finalize_request
299    ELSE
300      CALL iom__close_io_definition
301    ENDIF
302
303  END SUBROUTINE event__close_io_definition
304
305 
306  SUBROUTINE event__set_attribut(id,attrib)
307  USE iomanager
308  USE mod_attribut
309  IMPLICIT NONE
310    CHARACTER(LEN=*),INTENT(IN) :: id
311    TYPE(attribut),INTENT(IN)   :: attrib
312 
313    IF (using_server) THEN
314      CALL create_request(event_id_set_attribut)
315      CALL pack_data(len(id))
316      CALL pack_data(id)
317      CALL pack_data(attrib)
318      CALL Finalize_request
319    ELSE
320      CALL iom__set_attribut(id,attrib)
321    ENDIF
322 
323  END SUBROUTINE event__set_attribut 
324
325  SUBROUTINE event__stop_ioserver
326  USE iomanager
327  IMPLICIT NONE
328 
329    IF (using_server) THEN
330      CALL create_request(event_id_stop_ioserver)
331      is_last_request=.TRUE.
332      CALL Finalize_request
333    ELSE
334      CALL iom__finalize
335    ENDIF
336
337  END SUBROUTINE event__stop_ioserver
338   
339 
340END MODULE mod_event_client
Note: See TracBrowser for help on using the repository browser.