source: XIOS/dev/branch_yushan/src/interface/fortran/idata.F90 @ 1053

Last change on this file since 1053 was 1053, checked in by yushan, 7 years ago

ep_lib namespace specified when netcdf involved

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 43.0 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE IDATA
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE ICONTEXT
6
7   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
8
9      SUBROUTINE  cxios_init_server() BIND(C)
10      END SUBROUTINE cxios_init_server
11
12     SUBROUTINE cxios_init_client(client_id, len_client_id, f_local_comm, f_return_comm) BIND(C)
13         USE ISO_C_BINDING
14         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: client_id
15         INTEGER  (kind = C_INT)     , VALUE        :: len_client_id
16         INTEGER  (kind = C_INT)                    :: f_local_comm
17         INTEGER  (kind = C_INT)                    :: f_return_comm
18      END SUBROUTINE cxios_init_client
19
20      SUBROUTINE  cxios_context_initialize(context_id,len_context_id,f_comm) BIND(C)
21         USE ISO_C_BINDING
22         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: context_id
23         INTEGER  (kind = C_INT)     , VALUE        :: len_context_id
24         INTEGER  (kind = C_INT)                    :: f_comm
25      END SUBROUTINE cxios_context_initialize
26
27      SUBROUTINE cxios_context_is_initialized(context_id,len_context_id,initialized) BIND(C)
28         USE ISO_C_BINDING
29         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: context_id
30         INTEGER  (kind = C_INT)     , VALUE        :: len_context_id
31         LOGICAL  (kind = C_BOOL)                   :: initialized
32      END SUBROUTINE cxios_context_is_initialized
33
34
35       SUBROUTINE  cxios_context_close_definition() BIND(C)
36         USE ISO_C_BINDING
37      END SUBROUTINE cxios_context_close_definition
38
39
40       SUBROUTINE  cxios_context_finalize() BIND(C)
41         USE ISO_C_BINDING
42      END SUBROUTINE cxios_context_finalize
43
44
45      SUBROUTINE  cxios_finalize() BIND(C)
46      END SUBROUTINE cxios_finalize
47
48      SUBROUTINE  cxios_solve_inheritance() BIND(C)
49      END SUBROUTINE cxios_solve_inheritance
50
51      SUBROUTINE cxios_write_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
52         USE ISO_C_BINDING
53         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
54         REAL     (kind = C_DOUBLE)               :: data_k8
55         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
56         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
57      END SUBROUTINE cxios_write_data_k80
58
59      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
60         USE ISO_C_BINDING
61         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
62         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
63         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
64         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
65      END SUBROUTINE cxios_write_data_k81
66
67      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
68         USE ISO_C_BINDING
69         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
70         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
71         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
72         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
73      END SUBROUTINE cxios_write_data_k82
74
75      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
76         USE ISO_C_BINDING
77         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
78         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
79         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
80         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
81      END SUBROUTINE cxios_write_data_k83
82
83      SUBROUTINE cxios_write_data_k84(fieldid, fieldid_size, data_k8, &
84                                      data_0size, data_1size, data_2size, &
85                                      data_3size) BIND(C)
86         USE ISO_C_BINDING
87         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
88         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
89         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
90         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
91         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
92      END SUBROUTINE cxios_write_data_k84
93
94      SUBROUTINE cxios_write_data_k85(fieldid, fieldid_size, data_k8, &
95                                      data_0size, data_1size, data_2size, &
96                                      data_3size, data_4size) BIND(C)
97         USE ISO_C_BINDING
98         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
99         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
100         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
101         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
102         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
103      END SUBROUTINE cxios_write_data_k85
104
105      SUBROUTINE cxios_write_data_k86(fieldid, fieldid_size, data_k8, &
106                                      data_0size, data_1size, data_2size, &
107                                      data_3size, data_4size, data_5size) BIND(C)
108         USE ISO_C_BINDING
109         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
110         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
111         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
112         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
113         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
114      END SUBROUTINE cxios_write_data_k86
115
116      SUBROUTINE cxios_write_data_k87(fieldid, fieldid_size, data_k8, &
117                                      data_0size, data_1size, data_2size, &
118                                      data_3size, data_4size, data_5size, &
119                                      data_6size) BIND(C)
120         USE ISO_C_BINDING
121         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
122         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
123         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
124         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
125         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
126         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
127      END SUBROUTINE cxios_write_data_k87
128
129      SUBROUTINE cxios_write_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
130         USE ISO_C_BINDING
131         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
132         REAL     (kind = C_FLOAT)                :: data_k4
133         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
134         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
135      END SUBROUTINE cxios_write_data_k40
136
137      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
138         USE ISO_C_BINDING
139         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
140         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
141         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
142         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
143      END SUBROUTINE cxios_write_data_k41
144
145      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
146         USE ISO_C_BINDING
147         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
148         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
149         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
150         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
151      END SUBROUTINE cxios_write_data_k42
152
153      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
154         USE ISO_C_BINDING
155         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
156         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
157         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
158         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
159      END SUBROUTINE cxios_write_data_k43
160
161      SUBROUTINE cxios_write_data_k44(fieldid, fieldid_size, data_k4, &
162                                      data_0size, data_1size, data_2size, &
163                                      data_3size) BIND(C)
164         USE ISO_C_BINDING
165         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
166         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
167         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
168         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
169         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
170      END SUBROUTINE cxios_write_data_k44
171
172      SUBROUTINE cxios_write_data_k45(fieldid, fieldid_size, data_k4, &
173                                      data_0size, data_1size, data_2size, &
174                                      data_3size, data_4size) BIND(C)
175         USE ISO_C_BINDING
176         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
177         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
178         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
179         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
180         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
181      END SUBROUTINE cxios_write_data_k45
182
183      SUBROUTINE cxios_write_data_k46(fieldid, fieldid_size, data_k4, &
184                                      data_0size, data_1size, data_2size, &
185                                      data_3size, data_4size, data_5size) BIND(C)
186         USE ISO_C_BINDING
187         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
188         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
189         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
190         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
191         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
192      END SUBROUTINE cxios_write_data_k46
193
194      SUBROUTINE cxios_write_data_k47(fieldid, fieldid_size, data_k4, &
195                                      data_0size, data_1size, data_2size, &
196                                      data_3size, data_4size, data_5size, &
197                                      data_6size) BIND(C)
198         USE ISO_C_BINDING
199         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
200         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
201         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
202         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
203         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
204         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
205      END SUBROUTINE cxios_write_data_k47
206
207      ! Read data
208      SUBROUTINE cxios_read_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
209         USE ISO_C_BINDING
210         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
211         REAL     (kind = C_DOUBLE)               :: data_k8
212         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
213         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
214      END SUBROUTINE cxios_read_data_k80
215
216      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
217         USE ISO_C_BINDING
218         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
219         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
220         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
221         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
222      END SUBROUTINE cxios_read_data_k81
223
224      SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
225         USE ISO_C_BINDING
226         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
227         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
228         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
229         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
230      END SUBROUTINE cxios_read_data_k82
231
232      SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
233         USE ISO_C_BINDING
234         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
235         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
236         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
237         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
238      END SUBROUTINE cxios_read_data_k83
239
240      SUBROUTINE cxios_read_data_k84(fieldid, fieldid_size, data_k8, &
241                                      data_0size, data_1size, data_2size, &
242                                      data_3size) BIND(C)
243         USE ISO_C_BINDING
244         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
245         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
246         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
247         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
248         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
249      END SUBROUTINE cxios_read_data_k84
250
251      SUBROUTINE cxios_read_data_k85(fieldid, fieldid_size, data_k8, &
252                                      data_0size, data_1size, data_2size, &
253                                      data_3size, data_4size) BIND(C)
254         USE ISO_C_BINDING
255         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
256         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
257         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
258         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
259         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
260      END SUBROUTINE cxios_read_data_k85
261
262      SUBROUTINE cxios_read_data_k86(fieldid, fieldid_size, data_k8, &
263                                      data_0size, data_1size, data_2size, &
264                                      data_3size, data_4size, data_5size) BIND(C)
265         USE ISO_C_BINDING
266         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
267         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
268         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
269         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
270         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
271      END SUBROUTINE cxios_read_data_k86
272
273      SUBROUTINE cxios_read_data_k87(fieldid, fieldid_size, data_k8, &
274                                      data_0size, data_1size, data_2size, &
275                                      data_3size, data_4size, data_5size, &
276                                      data_6size) BIND(C)
277         USE ISO_C_BINDING
278         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
279         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
280         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
281         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
282         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
283         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
284      END SUBROUTINE cxios_read_data_k87
285
286      SUBROUTINE cxios_read_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
287         USE ISO_C_BINDING
288         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
289         REAL     (kind = C_FLOAT)                :: data_k4
290         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
291         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
292      END SUBROUTINE cxios_read_data_k40
293
294      SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
295         USE ISO_C_BINDING
296         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
297         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
298         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
299         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
300      END SUBROUTINE cxios_read_data_k41
301
302      SUBROUTINE cxios_read_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
303         USE ISO_C_BINDING
304         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
305         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
306         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
307         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
308      END SUBROUTINE cxios_read_data_k42
309
310      SUBROUTINE cxios_read_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
311         USE ISO_C_BINDING
312         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
313         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
314         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
315         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
316      END SUBROUTINE cxios_read_data_k43
317
318      SUBROUTINE cxios_read_data_k44(fieldid, fieldid_size, data_k4, &
319                                      data_0size, data_1size, data_2size, &
320                                      data_3size) BIND(C)
321         USE ISO_C_BINDING
322         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
323         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
324         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
325         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
326         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
327      END SUBROUTINE cxios_read_data_k44
328
329      SUBROUTINE cxios_read_data_k45(fieldid, fieldid_size, data_k4, &
330                                      data_0size, data_1size, data_2size, &
331                                      data_3size, data_4size) BIND(C)
332         USE ISO_C_BINDING
333         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
334         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
335         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
336         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
337         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
338      END SUBROUTINE cxios_read_data_k45
339
340      SUBROUTINE cxios_read_data_k46(fieldid, fieldid_size, data_k4, &
341                                      data_0size, data_1size, data_2size, &
342                                      data_3size, data_4size, data_5size) BIND(C)
343         USE ISO_C_BINDING
344         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
345         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
346         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
347         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
348         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
349      END SUBROUTINE cxios_read_data_k46
350
351      SUBROUTINE cxios_read_data_k47(fieldid, fieldid_size, data_k4, &
352                                      data_0size, data_1size, data_2size, &
353                                      data_3size, data_4size, data_5size, &
354                                      data_6size) BIND(C)
355         USE ISO_C_BINDING
356         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
357         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
358         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
359         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
360         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
361         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
362      END SUBROUTINE cxios_read_data_k47
363
364      ! Binding C and Fortran interface of get_variable (icdata.cpp)
365      SUBROUTINE cxios_get_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
366         USE ISO_C_BINDING
367         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
368         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
369         REAL     (kind = C_DOUBLE)               :: data_k8
370         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
371      END SUBROUTINE cxios_get_variable_data_k8
372
373      SUBROUTINE cxios_get_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
374         USE ISO_C_BINDING
375         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
376         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
377         REAL     (kind = C_FLOAT)                :: data_k4
378         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
379      END SUBROUTINE cxios_get_variable_data_k4
380
381      SUBROUTINE cxios_get_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
382         USE ISO_C_BINDING
383         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
384         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
385         INTEGER  (kind = C_INT)                  :: data_int
386         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
387      END SUBROUTINE cxios_get_variable_data_int
388
389      SUBROUTINE cxios_get_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
390         USE ISO_C_BINDING
391         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
392         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
393         LOGICAL  (kind = 4)                      :: data_logic
394         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
395      END SUBROUTINE cxios_get_variable_data_logic
396
397      SUBROUTINE cxios_get_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
398         USE ISO_C_BINDING
399         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
400         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
401         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
402         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
403         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
404      END SUBROUTINE cxios_get_variable_data_char
405
406      ! Binding C and Fortran interface of set_variable (icdata.cpp)
407      SUBROUTINE cxios_set_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
408         USE ISO_C_BINDING
409         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
410         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
411         REAL     (kind = C_DOUBLE), VALUE        :: data_k8
412         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
413      END SUBROUTINE cxios_set_variable_data_k8
414
415      SUBROUTINE cxios_set_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
416         USE ISO_C_BINDING
417         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
418         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
419         REAL     (kind = C_FLOAT) , VALUE        :: data_k4
420         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
421      END SUBROUTINE cxios_set_variable_data_k4
422
423      SUBROUTINE cxios_set_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
424         USE ISO_C_BINDING
425         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
426         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
427         INTEGER  (kind = C_INT)   , VALUE        :: data_int
428         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
429      END SUBROUTINE cxios_set_variable_data_int
430
431      SUBROUTINE cxios_set_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
432         USE ISO_C_BINDING
433         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
434         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
435         LOGICAL  (kind = 4)       , VALUE        :: data_logic
436         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
437      END SUBROUTINE cxios_set_variable_data_logic
438
439      SUBROUTINE cxios_set_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
440         USE ISO_C_BINDING
441         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
442         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
443         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
444         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
445         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
446      END SUBROUTINE cxios_set_variable_data_char
447
448   END INTERFACE
449
450
451   CONTAINS ! Fonctions disponibles pour les utilisateurs.
452
453   SUBROUTINE  xios(init_server)()
454   IMPLICIT NONE
455     CALL cxios_init_server()
456   END SUBROUTINE xios(init_server)
457
458   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm)
459   IMPLICIT NONE
460   INCLUDE 'mpif.h'
461   CHARACTER(LEN=*),INTENT(IN) :: client_id
462   INTEGER,INTENT(IN),OPTIONAL         :: local_comm
463   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm
464   INTEGER :: f_local_comm
465   INTEGER :: f_return_comm
466
467
468      IF (PRESENT(local_comm)) THEN
469        f_local_comm=local_comm
470      ELSE
471        f_local_comm = MPI_COMM_NULL
472      ENDIF
473
474      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm)
475     
476     
477      !print*, "in fortran, world_f = ", MPI_COMM_WORLD
478
479      print*, "in fortran, f_return_comm = ", f_return_comm 
480
481      IF (PRESENT(return_comm)) return_comm=f_return_comm
482
483   END SUBROUTINE  xios(initialize)
484
485
486   SUBROUTINE  xios(context_initialize)(context_id,comm)
487   IMPLICIT NONE
488   CHARACTER(LEN=*),INTENT(IN)  :: context_id
489   INTEGER, INTENT(IN)          :: comm
490
491      CALL cxios_context_initialize(context_id,LEN(context_id),comm)
492
493    END SUBROUTINE  xios(context_initialize)
494
495
496   LOGICAL FUNCTION  xios(context_is_initialized)(context_id)
497   USE ISO_C_BINDING
498   IMPLICIT NONE
499   CHARACTER(LEN=*),INTENT(IN)  :: context_id
500   LOGICAL(KIND=C_BOOL) :: is_init
501
502      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init)
503      xios(context_is_initialized) = is_init
504
505    END FUNCTION xios(context_is_initialized)
506
507
508   SUBROUTINE  xios(finalize)
509   IMPLICIT NONE
510
511      CALL cxios_finalize
512
513    END SUBROUTINE  xios(finalize)
514
515
516   SUBROUTINE xios(close_context_definition)()
517   IMPLICIT NONE
518      CALL cxios_context_close_definition()
519   END SUBROUTINE xios(close_context_definition)
520
521
522   SUBROUTINE xios(context_finalize)()
523   IMPLICIT NONE
524      CALL cxios_context_finalize()
525   END SUBROUTINE xios(context_finalize)
526
527   SUBROUTINE xios(solve_inheritance)()
528   IMPLICIT NONE
529      CALL cxios_solve_inheritance()
530   END SUBROUTINE xios(solve_inheritance)
531
532   ! Send field functions
533   SUBROUTINE xios(send_field_r8_0d)(fieldid, data_k8)
534   IMPLICIT NONE
535      CHARACTER(len = *) , INTENT(IN) :: fieldid
536      REAL     (kind = 8), INTENT(IN) :: data_k8
537      CALL cxios_write_data_k80(fieldid, len(fieldid), data_k8, 1)
538   END SUBROUTINE xios(send_field_r8_0d)
539
540   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
541   IMPLICIT NONE
542      CHARACTER(len = *)               , INTENT(IN) :: fieldid
543      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
544      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
545   END SUBROUTINE xios(send_field_r8_1d)
546
547   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
548   IMPLICIT NONE
549      CHARACTER(len = *)               , INTENT(IN) :: fieldid
550      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
551      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
552   END SUBROUTINE  xios(send_field_r8_2d)
553
554   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
555   IMPLICIT NONE
556      CHARACTER(len = *)               , INTENT(IN) :: fieldid
557      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
558      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
559   END SUBROUTINE  xios(send_field_r8_3d)
560
561   SUBROUTINE  xios(send_field_r8_4d)(fieldid, data4d_k8)
562   IMPLICIT NONE
563      CHARACTER(len = *)               , INTENT(IN) :: fieldid
564      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
565      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, &
566                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
567                                size(data4d_k8, 4))
568   END SUBROUTINE  xios(send_field_r8_4d)
569
570   SUBROUTINE  xios(send_field_r8_5d)(fieldid, data5d_k8)
571   IMPLICIT NONE
572      CHARACTER(len = *)               , INTENT(IN) :: fieldid
573      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
574      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, &
575                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
576                                size(data5d_k8, 4), size(data5d_k8, 5))
577   END SUBROUTINE  xios(send_field_r8_5d)
578
579   SUBROUTINE  xios(send_field_r8_6d)(fieldid, data6d_k8)
580   IMPLICIT NONE
581      CHARACTER(len = *)               , INTENT(IN) :: fieldid
582      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
583      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, &
584                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
585                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
586   END SUBROUTINE  xios(send_field_r8_6d)
587
588   SUBROUTINE  xios(send_field_r8_7d)(fieldid, data7d_k8)
589   IMPLICIT NONE
590      CHARACTER(len = *)               , INTENT(IN) :: fieldid
591      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
592      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, &
593                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
594                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
595                                size(data7d_k8, 7))
596   END SUBROUTINE  xios(send_field_r8_7d)
597
598   SUBROUTINE xios(send_field_r4_0d)(fieldid, data_k4)
599   IMPLICIT NONE
600      CHARACTER(len = *) , INTENT(IN) :: fieldid
601      REAL     (kind = 4), INTENT(IN) :: data_k4
602      CALL cxios_write_data_k40(fieldid, len(fieldid), data_k4, 1)
603   END SUBROUTINE xios(send_field_r4_0d)
604
605   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
606   IMPLICIT NONE
607      CHARACTER(len = *)               , INTENT(IN) :: fieldid
608      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
609      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
610   END SUBROUTINE xios(send_field_r4_1d)
611
612   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
613   IMPLICIT NONE
614      CHARACTER(len = *)               , INTENT(IN) :: fieldid
615      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
616      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
617   END SUBROUTINE xios(send_field_r4_2d)
618
619   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
620   IMPLICIT NONE
621      CHARACTER(len = *)               , INTENT(IN) :: fieldid
622      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
623      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
624   END SUBROUTINE xios(send_field_r4_3d)
625
626   SUBROUTINE  xios(send_field_r4_4d)(fieldid, data4d_k4)
627   IMPLICIT NONE
628      CHARACTER(len = *)               , INTENT(IN) :: fieldid
629      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
630      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, &
631                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
632                                size(data4d_k4, 4))
633   END SUBROUTINE  xios(send_field_r4_4d)
634
635   SUBROUTINE  xios(send_field_r4_5d)(fieldid, data5d_k4)
636   IMPLICIT NONE
637      CHARACTER(len = *)               , INTENT(IN) :: fieldid
638      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
639      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, &
640                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
641                                size(data5d_k4, 4), size(data5d_k4, 5))
642   END SUBROUTINE  xios(send_field_r4_5d)
643
644   SUBROUTINE  xios(send_field_r4_6d)(fieldid, data6d_k4)
645   IMPLICIT NONE
646      CHARACTER(len = *)               , INTENT(IN) :: fieldid
647      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
648      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, &
649                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
650                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
651   END SUBROUTINE  xios(send_field_r4_6d)
652
653   SUBROUTINE  xios(send_field_r4_7d)(fieldid, data7d_k4)
654   IMPLICIT NONE
655      CHARACTER(len = *)               , INTENT(IN) :: fieldid
656      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
657      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, &
658                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
659                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
660                                size(data7d_k4, 7))
661   END SUBROUTINE  xios(send_field_r4_7d)
662
663   ! Receive field functions
664   SUBROUTINE xios(recv_field_r8_0d)(fieldid, data0d_k8)
665   IMPLICIT NONE
666      CHARACTER(len = *)               , INTENT(IN) :: fieldid
667      REAL     (kind = 8)              , INTENT(OUT):: data0d_k8
668      CALL cxios_read_data_k80(fieldid, len(fieldid), data0d_k8, 1)
669   END SUBROUTINE xios(recv_field_r8_0d)
670
671   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8)
672   IMPLICIT NONE
673      CHARACTER(len = *)               , INTENT(IN) :: fieldid
674      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
675      CALL cxios_read_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
676   END SUBROUTINE xios(recv_field_r8_1d)
677
678   SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8)
679   IMPLICIT NONE
680      CHARACTER(len = *)               , INTENT(IN) :: fieldid
681      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
682      CALL cxios_read_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
683   END SUBROUTINE  xios(recv_field_r8_2d)
684
685   SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8)
686   IMPLICIT NONE
687      CHARACTER(len = *)               , INTENT(IN) :: fieldid
688      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
689      CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
690   END SUBROUTINE  xios(recv_field_r8_3d)
691
692   SUBROUTINE  xios(recv_field_r8_4d)(fieldid, data4d_k8)
693   IMPLICIT NONE
694      CHARACTER(len = *)               , INTENT(IN) :: fieldid
695      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data4d_k8(:,:,:,:)
696      CALL cxios_read_data_k84(fieldid, len(fieldid), data4d_k8, &
697                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
698                                size(data4d_k8, 4))
699   END SUBROUTINE  xios(recv_field_r8_4d)
700
701   SUBROUTINE  xios(recv_field_r8_5d)(fieldid, data5d_k8)
702   IMPLICIT NONE
703      CHARACTER(len = *)               , INTENT(IN) :: fieldid
704      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data5d_k8(:,:,:,:,:)
705      CALL cxios_read_data_k85(fieldid, len(fieldid), data5d_k8, &
706                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
707                                size(data5d_k8, 4), size(data5d_k8, 5))
708   END SUBROUTINE  xios(recv_field_r8_5d)
709
710   SUBROUTINE  xios(recv_field_r8_6d)(fieldid, data6d_k8)
711   IMPLICIT NONE
712      CHARACTER(len = *)               , INTENT(IN) :: fieldid
713      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data6d_k8(:,:,:,:,:,:)
714      CALL cxios_read_data_k86(fieldid, len(fieldid), data6d_k8, &
715                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
716                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
717   END SUBROUTINE  xios(recv_field_r8_6d)
718
719   SUBROUTINE  xios(recv_field_r8_7d)(fieldid, data7d_k8)
720   IMPLICIT NONE
721      CHARACTER(len = *)               , INTENT(IN) :: fieldid
722      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data7d_k8(:,:,:,:,:,:,:)
723      CALL cxios_read_data_k87(fieldid, len(fieldid), data7d_k8, &
724                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
725                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
726                                size(data7d_k8, 7))
727   END SUBROUTINE  xios(recv_field_r8_7d)
728
729   SUBROUTINE xios(recv_field_r4_0d)(fieldid, data0d_k4)
730   IMPLICIT NONE
731      CHARACTER(len = *)               , INTENT(IN) :: fieldid
732      REAL     (kind = 4)              , INTENT(OUT):: data0d_k4
733      CALL cxios_read_data_k40(fieldid, len(fieldid), data0d_k4, 1)
734   END SUBROUTINE xios(recv_field_r4_0d)
735
736   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4)
737   IMPLICIT NONE
738      CHARACTER(len = *)               , INTENT(IN) :: fieldid
739      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
740      CALL cxios_read_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
741   END SUBROUTINE xios(recv_field_r4_1d)
742
743   SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4)
744   IMPLICIT NONE
745      CHARACTER(len = *)               , INTENT(IN) :: fieldid
746      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
747      CALL cxios_read_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
748   END SUBROUTINE xios(recv_field_r4_2d)
749
750   SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4)
751   IMPLICIT NONE
752      CHARACTER(len = *)               , INTENT(IN) :: fieldid
753      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
754      CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
755   END SUBROUTINE xios(recv_field_r4_3d)
756
757   SUBROUTINE  xios(recv_field_r4_4d)(fieldid, data4d_k4)
758   IMPLICIT NONE
759      CHARACTER(len = *)               , INTENT(IN) :: fieldid
760      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data4d_k4(:,:,:,:)
761      CALL cxios_read_data_k44(fieldid, len(fieldid), data4d_k4, &
762                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
763                                size(data4d_k4, 4))
764   END SUBROUTINE  xios(recv_field_r4_4d)
765
766   SUBROUTINE  xios(recv_field_r4_5d)(fieldid, data5d_k4)
767   IMPLICIT NONE
768      CHARACTER(len = *)               , INTENT(IN) :: fieldid
769      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data5d_k4(:,:,:,:,:)
770      CALL cxios_read_data_k45(fieldid, len(fieldid), data5d_k4, &
771                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
772                                size(data5d_k4, 4), size(data5d_k4, 5))
773   END SUBROUTINE  xios(recv_field_r4_5d)
774
775   SUBROUTINE  xios(recv_field_r4_6d)(fieldid, data6d_k4)
776   IMPLICIT NONE
777      CHARACTER(len = *)               , INTENT(IN) :: fieldid
778      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data6d_k4(:,:,:,:,:,:)
779      CALL cxios_read_data_k46(fieldid, len(fieldid), data6d_k4, &
780                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
781                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
782   END SUBROUTINE  xios(recv_field_r4_6d)
783
784   SUBROUTINE  xios(recv_field_r4_7d)(fieldid, data7d_k4)
785   IMPLICIT NONE
786      CHARACTER(len = *)               , INTENT(IN) :: fieldid
787      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data7d_k4(:,:,:,:,:,:,:)
788      CALL cxios_read_data_k47(fieldid, len(fieldid), data7d_k4, &
789                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
790                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
791                                size(data7d_k4, 7))
792   END SUBROUTINE  xios(recv_field_r4_7d)
793
794   ! Get variable functions
795   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8)
796   IMPLICIT NONE
797      LOGICAL  (kind = 1)                           :: val
798      CHARACTER(len = *)               , INTENT(IN) :: varId
799      REAL     (kind = 8)              , INTENT(OUT):: data_k8
800
801      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val)
802
803      xios(getVar_k8) = val
804   END FUNCTION xios(getVar_k8)
805
806   LOGICAL FUNCTION xios(getVar_k4)(varId, data_k4)
807   IMPLICIT NONE
808      LOGICAL  (kind = 1)                           :: val
809      CHARACTER(len = *)               , INTENT(IN) :: varId
810      REAL     (kind = 4)              , INTENT(OUT):: data_k4
811
812      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val)
813
814      xios(getVar_k4) = val
815   END FUNCTION xios(getVar_k4)
816
817   LOGICAL FUNCTION xios(getVar_int)(varId, data_int)
818   IMPLICIT NONE
819      LOGICAL  (kind = 1)                           :: val
820      CHARACTER(len = *)               , INTENT(IN) :: varId
821      INTEGER                          , INTENT(OUT):: data_int
822
823      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val)
824
825      xios(getVar_int) = val
826   END FUNCTION xios(getVar_int)
827
828   LOGICAL FUNCTION xios(getVar_logic)(varId, data_logic)
829   IMPLICIT NONE
830      LOGICAL  (kind = 1)                           :: val
831      CHARACTER(len  = *)              , INTENT(IN) :: varId
832      LOGICAL  (kind = 4)              , INTENT(OUT):: data_logic
833
834      CALL cxios_get_variable_data_logic(varId, len(varId), data_logic, val)
835
836      xios(getVar_logic) = val
837   END FUNCTION xios(getVar_logic)
838
839   LOGICAL FUNCTION xios(getVar_char)(varId, data_char)
840   IMPLICIT NONE
841      LOGICAL  (kind = 1)                           :: val
842      CHARACTER(len  = *)              , INTENT(IN) :: varId
843      CHARACTER(len  = *)              , INTENT(OUT):: data_char
844
845      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val)
846
847      xios(getVar_char) = val
848   END FUNCTION xios(getVar_char)
849
850   ! Set variable functions
851   LOGICAL FUNCTION xios(setVar_k8)(varId, data_k8)
852   IMPLICIT NONE
853      LOGICAL  (kind = 1)                           :: val
854      CHARACTER(len = *)               , INTENT(IN) :: varId
855      REAL     (kind = 8)              , INTENT(IN) :: data_k8
856
857      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val)
858
859      xios(setVar_k8) = val
860   END FUNCTION xios(setVar_k8)
861
862   LOGICAL FUNCTION xios(setVar_k4)(varId, data_k4)
863   IMPLICIT NONE
864      LOGICAL  (kind = 1)                           :: val
865      CHARACTER(len = *)               , INTENT(IN) :: varId
866      REAL     (kind = 4)              , INTENT(IN) :: data_k4
867
868      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val)
869
870      xios(setVar_k4) = val
871   END FUNCTION xios(setVar_k4)
872
873   LOGICAL FUNCTION xios(setVar_int)(varId, data_int)
874   IMPLICIT NONE
875      LOGICAL  (kind = 1)                           :: val
876      CHARACTER(len = *)               , INTENT(IN) :: varId
877      INTEGER                          , INTENT(IN) :: data_int
878
879      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val)
880
881      xios(setVar_int) = val
882   END FUNCTION xios(setVar_int)
883
884   LOGICAL FUNCTION xios(setVar_logic)(varId, data_logic)
885   IMPLICIT NONE
886      LOGICAL  (kind = 1)                           :: val
887      CHARACTER(len  = *)              , INTENT(IN) :: varId
888      LOGICAL  (kind = 4)              , INTENT(IN) :: data_logic
889
890      CALL cxios_set_variable_data_logic(varId, len(varId), data_logic, val)
891
892      xios(setVar_logic) = val
893   END FUNCTION xios(setVar_logic)
894
895   LOGICAL FUNCTION xios(setVar_char)(varId, data_char)
896   IMPLICIT NONE
897      LOGICAL  (kind = 1)                           :: val
898      CHARACTER(len  = *)              , INTENT(IN) :: varId
899      CHARACTER(len  = *)              , INTENT(IN) :: data_char
900
901      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val)
902
903      xios(setVar_char) = val
904   END FUNCTION xios(setVar_char)
905
906END MODULE IDATA
Note: See TracBrowser for help on using the repository browser.