source: XIOS/dev/dev_oa/src/interface/fortran/idata.F90 @ 1963

Last change on this file since 1963 was 1963, checked in by oabramkina, 4 years ago

dev_oa: adding interface to xios_send permitting sending a tile

  • 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: 52.6 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      SUBROUTINE  cxios_oasis_enddef() BIND(C)
45         USE ISO_C_BINDING
46      END SUBROUTINE cxios_oasis_enddef
47     
48      SUBROUTINE  cxios_finalize() BIND(C)
49      END SUBROUTINE cxios_finalize
50
51      SUBROUTINE  cxios_solve_inheritance() BIND(C)
52      END SUBROUTINE cxios_solve_inheritance
53
54      SUBROUTINE cxios_write_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
55         USE ISO_C_BINDING
56         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
57         REAL     (kind = C_DOUBLE)               :: data_k8
58         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
59         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
60      END SUBROUTINE cxios_write_data_k80
61
62      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize, tileid) BIND(C)
63         USE ISO_C_BINDING
64         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
65         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
66         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
67         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
68         INTEGER  (kind = C_INT)   , VALUE        :: tileid
69      END SUBROUTINE cxios_write_data_k81
70
71      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, tileid) BIND(C)
72         USE ISO_C_BINDING
73         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
74         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
75         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
76         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
77         INTEGER  (kind = C_INT)   , VALUE        :: tileid
78      END SUBROUTINE cxios_write_data_k82
79
80      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize, &
81                                      tileid) BIND(C)
82         USE ISO_C_BINDING
83         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
84         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
85         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
86         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
87         INTEGER  (kind = C_INT)   , VALUE        :: tileid
88      END SUBROUTINE cxios_write_data_k83
89
90      SUBROUTINE cxios_write_data_k84(fieldid, fieldid_size, data_k8, &
91                                      data_0size, data_1size, data_2size, &
92                                      data_3size, tileid) BIND(C)
93         USE ISO_C_BINDING
94         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
95         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
96         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
97         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
98         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
99         INTEGER  (kind = C_INT)   , VALUE        :: tileid
100      END SUBROUTINE cxios_write_data_k84
101
102      SUBROUTINE cxios_write_data_k85(fieldid, fieldid_size, data_k8, &
103                                      data_0size, data_1size, data_2size, &
104                                      data_3size, data_4size, tileid) BIND(C)
105         USE ISO_C_BINDING
106         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
107         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
108         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
109         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
110         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
111         INTEGER  (kind = C_INT)   , VALUE        :: tileid
112      END SUBROUTINE cxios_write_data_k85
113
114      SUBROUTINE cxios_write_data_k86(fieldid, fieldid_size, data_k8, &
115                                      data_0size, data_1size, data_2size, &
116                                      data_3size, data_4size, data_5size, tileid) BIND(C)
117         USE ISO_C_BINDING
118         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
119         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
120         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
121         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
122         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
123         INTEGER  (kind = C_INT)   , VALUE        :: tileid
124      END SUBROUTINE cxios_write_data_k86
125
126      SUBROUTINE cxios_write_data_k87(fieldid, fieldid_size, data_k8, &
127                                      data_0size, data_1size, data_2size, &
128                                      data_3size, data_4size, data_5size, &
129                                      data_6size, tileid) BIND(C)
130         USE ISO_C_BINDING
131         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
132         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
133         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
134         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
135         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
136         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
137         INTEGER  (kind = C_INT)   , VALUE        :: tileid
138      END SUBROUTINE cxios_write_data_k87
139
140      SUBROUTINE cxios_write_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
141         USE ISO_C_BINDING
142         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
143         REAL     (kind = C_FLOAT)                :: data_k4
144         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
145         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
146      END SUBROUTINE cxios_write_data_k40
147
148      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize, tileid) BIND(C)
149         USE ISO_C_BINDING
150         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
151         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
152         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
153         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
154         INTEGER  (kind = C_INT)   , VALUE        :: tileid
155      END SUBROUTINE cxios_write_data_k41
156
157      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, tileid) BIND(C)
158         USE ISO_C_BINDING
159         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
160         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
161         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
162         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
163         INTEGER  (kind = C_INT)   , VALUE        :: tileid
164      END SUBROUTINE cxios_write_data_k42
165
166      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize, &
167                                      tileid) BIND(C)
168         USE ISO_C_BINDING
169         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
170         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
171         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
172         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
173         INTEGER  (kind = C_INT)   , VALUE        :: tileid
174      END SUBROUTINE cxios_write_data_k43
175
176      SUBROUTINE cxios_write_data_k44(fieldid, fieldid_size, data_k4, &
177                                      data_0size, data_1size, data_2size, &
178                                      data_3size, tileid) BIND(C)
179         USE ISO_C_BINDING
180         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
181         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
182         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
183         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
184         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
185         INTEGER  (kind = C_INT)   , VALUE        :: tileid
186      END SUBROUTINE cxios_write_data_k44
187
188      SUBROUTINE cxios_write_data_k45(fieldid, fieldid_size, data_k4, &
189                                      data_0size, data_1size, data_2size, &
190                                      data_3size, data_4size, tileid) BIND(C)
191         USE ISO_C_BINDING
192         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
193         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
194         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
195         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
196         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
197         INTEGER  (kind = C_INT)   , VALUE        :: tileid
198      END SUBROUTINE cxios_write_data_k45
199
200      SUBROUTINE cxios_write_data_k46(fieldid, fieldid_size, data_k4, &
201                                      data_0size, data_1size, data_2size, &
202                                      data_3size, data_4size, data_5size, tileid) BIND(C)
203         USE ISO_C_BINDING
204         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
205         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
206         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
207         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
208         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
209         INTEGER  (kind = C_INT)   , VALUE        :: tileid
210      END SUBROUTINE cxios_write_data_k46
211
212      SUBROUTINE cxios_write_data_k47(fieldid, fieldid_size, data_k4, &
213                                      data_0size, data_1size, data_2size, &
214                                      data_3size, data_4size, data_5size, &
215                                      data_6size, tileid) BIND(C)
216         USE ISO_C_BINDING
217         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
218         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
219         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
220         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
221         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
222         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
223         INTEGER  (kind = C_INT)   , VALUE        :: tileid
224      END SUBROUTINE cxios_write_data_k47
225
226      ! Read data
227      SUBROUTINE cxios_read_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
228         USE ISO_C_BINDING
229         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
230         REAL     (kind = C_DOUBLE)               :: data_k8
231         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
232         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
233      END SUBROUTINE cxios_read_data_k80
234
235      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
236         USE ISO_C_BINDING
237         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
238         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
239         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
240         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
241      END SUBROUTINE cxios_read_data_k81
242
243      SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
244         USE ISO_C_BINDING
245         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
246         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
247         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
248         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
249      END SUBROUTINE cxios_read_data_k82
250
251      SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
252         USE ISO_C_BINDING
253         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
254         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
255         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
256         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
257      END SUBROUTINE cxios_read_data_k83
258
259      SUBROUTINE cxios_read_data_k84(fieldid, fieldid_size, data_k8, &
260                                      data_0size, data_1size, data_2size, &
261                                      data_3size) BIND(C)
262         USE ISO_C_BINDING
263         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
264         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
265         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
266         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
267         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
268      END SUBROUTINE cxios_read_data_k84
269
270      SUBROUTINE cxios_read_data_k85(fieldid, fieldid_size, data_k8, &
271                                      data_0size, data_1size, data_2size, &
272                                      data_3size, data_4size) BIND(C)
273         USE ISO_C_BINDING
274         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
275         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
276         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
277         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
278         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
279      END SUBROUTINE cxios_read_data_k85
280
281      SUBROUTINE cxios_read_data_k86(fieldid, fieldid_size, data_k8, &
282                                      data_0size, data_1size, data_2size, &
283                                      data_3size, data_4size, data_5size) BIND(C)
284         USE ISO_C_BINDING
285         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
286         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
287         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
288         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
289         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
290      END SUBROUTINE cxios_read_data_k86
291
292      SUBROUTINE cxios_read_data_k87(fieldid, fieldid_size, data_k8, &
293                                      data_0size, data_1size, data_2size, &
294                                      data_3size, data_4size, data_5size, &
295                                      data_6size) BIND(C)
296         USE ISO_C_BINDING
297         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
298         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
299         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
300         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
301         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
302         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
303      END SUBROUTINE cxios_read_data_k87
304
305      SUBROUTINE cxios_read_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
306         USE ISO_C_BINDING
307         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
308         REAL     (kind = C_FLOAT)                :: data_k4
309         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
310         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
311      END SUBROUTINE cxios_read_data_k40
312
313      SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
314         USE ISO_C_BINDING
315         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
316         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
317         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
318         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
319      END SUBROUTINE cxios_read_data_k41
320
321      SUBROUTINE cxios_read_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
322         USE ISO_C_BINDING
323         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
324         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
325         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
326         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
327      END SUBROUTINE cxios_read_data_k42
328
329      SUBROUTINE cxios_read_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
330         USE ISO_C_BINDING
331         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
332         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
333         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
334         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
335      END SUBROUTINE cxios_read_data_k43
336
337      SUBROUTINE cxios_read_data_k44(fieldid, fieldid_size, data_k4, &
338                                      data_0size, data_1size, data_2size, &
339                                      data_3size) BIND(C)
340         USE ISO_C_BINDING
341         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
342         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
343         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
344         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
345         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
346      END SUBROUTINE cxios_read_data_k44
347
348      SUBROUTINE cxios_read_data_k45(fieldid, fieldid_size, data_k4, &
349                                      data_0size, data_1size, data_2size, &
350                                      data_3size, data_4size) BIND(C)
351         USE ISO_C_BINDING
352         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
353         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
354         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
355         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
356         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
357      END SUBROUTINE cxios_read_data_k45
358
359      SUBROUTINE cxios_read_data_k46(fieldid, fieldid_size, data_k4, &
360                                      data_0size, data_1size, data_2size, &
361                                      data_3size, data_4size, data_5size) BIND(C)
362         USE ISO_C_BINDING
363         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
364         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
365         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
366         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
367         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
368      END SUBROUTINE cxios_read_data_k46
369
370      SUBROUTINE cxios_read_data_k47(fieldid, fieldid_size, data_k4, &
371                                      data_0size, data_1size, data_2size, &
372                                      data_3size, data_4size, data_5size, &
373                                      data_6size) BIND(C)
374         USE ISO_C_BINDING
375         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
376         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
377         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
378         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
379         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
380         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
381      END SUBROUTINE cxios_read_data_k47
382
383      ! Binding C and Fortran interface of get_variable (icdata.cpp)
384      SUBROUTINE cxios_get_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
385         USE ISO_C_BINDING
386         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
387         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
388         REAL     (kind = C_DOUBLE)               :: data_k8
389         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
390      END SUBROUTINE cxios_get_variable_data_k8
391
392      SUBROUTINE cxios_get_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
393         USE ISO_C_BINDING
394         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
395         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
396         REAL     (kind = C_FLOAT)                :: data_k4
397         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
398      END SUBROUTINE cxios_get_variable_data_k4
399
400      SUBROUTINE cxios_get_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
401         USE ISO_C_BINDING
402         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
403         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
404         INTEGER  (kind = C_INT)                  :: data_int
405         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
406      END SUBROUTINE cxios_get_variable_data_int
407
408      SUBROUTINE cxios_get_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
409         USE ISO_C_BINDING
410         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
411         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
412         LOGICAL  (kind = 4)                      :: data_logic
413         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
414      END SUBROUTINE cxios_get_variable_data_logic
415
416      SUBROUTINE cxios_get_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
417         USE ISO_C_BINDING
418         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
419         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
420         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
421         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
422         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
423      END SUBROUTINE cxios_get_variable_data_char
424
425      ! Binding C and Fortran interface of set_variable (icdata.cpp)
426      SUBROUTINE cxios_set_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
427         USE ISO_C_BINDING
428         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
429         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
430         REAL     (kind = C_DOUBLE), VALUE        :: data_k8
431         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
432      END SUBROUTINE cxios_set_variable_data_k8
433
434      SUBROUTINE cxios_set_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
435         USE ISO_C_BINDING
436         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
437         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
438         REAL     (kind = C_FLOAT) , VALUE        :: data_k4
439         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
440      END SUBROUTINE cxios_set_variable_data_k4
441
442      SUBROUTINE cxios_set_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
443         USE ISO_C_BINDING
444         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
445         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
446         INTEGER  (kind = C_INT)   , VALUE        :: data_int
447         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
448      END SUBROUTINE cxios_set_variable_data_int
449
450      SUBROUTINE cxios_set_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
451         USE ISO_C_BINDING
452         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
453         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
454         LOGICAL  (kind = 4)       , VALUE        :: data_logic
455         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
456      END SUBROUTINE cxios_set_variable_data_logic
457
458      SUBROUTINE cxios_set_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
459         USE ISO_C_BINDING
460         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
461         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
462         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
463         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
464         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
465      END SUBROUTINE cxios_set_variable_data_char
466
467   END INTERFACE
468
469
470   CONTAINS ! Fonctions disponibles pour les utilisateurs.
471
472   SUBROUTINE  xios(init_server)()
473   IMPLICIT NONE
474     CALL cxios_init_server()
475   END SUBROUTINE xios(init_server)
476
477   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm)
478   IMPLICIT NONE
479   INCLUDE 'mpif.h'
480   CHARACTER(LEN=*),INTENT(IN) :: client_id
481   INTEGER,INTENT(IN),OPTIONAL         :: local_comm
482   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm
483   INTEGER :: f_local_comm
484   INTEGER :: f_return_comm
485
486      IF (PRESENT(local_comm)) THEN
487        f_local_comm=local_comm
488      ELSE
489        f_local_comm = MPI_COMM_NULL
490      ENDIF
491
492      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm)
493
494      IF (PRESENT(return_comm)) return_comm=f_return_comm
495
496   END SUBROUTINE  xios(initialize)
497
498
499   SUBROUTINE  xios(context_initialize)(context_id,comm)
500   IMPLICIT NONE
501   CHARACTER(LEN=*),INTENT(IN)  :: context_id
502   INTEGER, INTENT(IN)          :: comm
503
504      CALL cxios_context_initialize(context_id,LEN(context_id),comm)
505
506    END SUBROUTINE  xios(context_initialize)
507
508
509   LOGICAL FUNCTION  xios(context_is_initialized)(context_id)
510   USE ISO_C_BINDING
511   IMPLICIT NONE
512   CHARACTER(LEN=*),INTENT(IN)  :: context_id
513   LOGICAL(KIND=C_BOOL) :: is_init
514
515      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init)
516      xios(context_is_initialized) = is_init
517
518    END FUNCTION xios(context_is_initialized)
519
520
521   SUBROUTINE  xios(finalize)
522   IMPLICIT NONE
523
524      CALL cxios_finalize
525
526    END SUBROUTINE  xios(finalize)
527
528   SUBROUTINE  xios(oasis_enddef)
529   IMPLICIT NONE
530
531      CALL cxios_oasis_enddef
532
533    END SUBROUTINE  xios(oasis_enddef)
534
535   SUBROUTINE xios(close_context_definition)()
536   IMPLICIT NONE
537      CALL cxios_context_close_definition()
538   END SUBROUTINE xios(close_context_definition)
539
540
541   SUBROUTINE xios(context_finalize)()
542   IMPLICIT NONE
543      CALL cxios_context_finalize()
544   END SUBROUTINE xios(context_finalize)
545
546   SUBROUTINE xios(solve_inheritance)()
547   IMPLICIT NONE
548      CALL cxios_solve_inheritance()
549   END SUBROUTINE xios(solve_inheritance)
550
551   ! Send field functions
552   SUBROUTINE xios(send_field_r8_0d)(fieldid, data_k8)
553   IMPLICIT NONE
554      CHARACTER(len = *) , INTENT(IN) :: fieldid
555      REAL     (kind = 8), INTENT(IN) :: data_k8
556      CALL cxios_write_data_k80(fieldid, len(fieldid), data_k8, 1)
557   END SUBROUTINE xios(send_field_r8_0d)
558
559   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
560   IMPLICIT NONE
561      CHARACTER(len = *)               , INTENT(IN) :: fieldid
562      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
563      INTEGER, PARAMETER                            :: tileid = -1
564      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1), tileid)
565   END SUBROUTINE xios(send_field_r8_1d)
566
567   SUBROUTINE xios(send_field_tiled_r8_1d)(fieldid, data1d_k8, tileid)
568   IMPLICIT NONE
569      CHARACTER(len = *)               , INTENT(IN) :: fieldid
570      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
571      INTEGER                          , INTENT(IN) :: tileid
572      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1), tileid)
573   END SUBROUTINE xios(send_field_tiled_r8_1d)
574
575   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
576   IMPLICIT NONE
577      CHARACTER(len = *)               , INTENT(IN) :: fieldid
578      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
579      INTEGER, PARAMETER                            :: tileid = -1
580      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), &
581                                size(data2d_k8, 2), tileid)
582   END SUBROUTINE  xios(send_field_r8_2d)
583
584   SUBROUTINE  xios(send_field_tiled_r8_2d)(fieldid, data2d_k8, tileid)
585   IMPLICIT NONE
586      CHARACTER(len = *)               , INTENT(IN) :: fieldid
587      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
588      INTEGER                          , INTENT(IN) :: tileid
589      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), &
590                                size(data2d_k8, 2), tileid)
591   END SUBROUTINE  xios(send_field_tiled_r8_2d)
592
593   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
594   IMPLICIT NONE
595      CHARACTER(len = *)               , INTENT(IN) :: fieldid
596      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
597      INTEGER, PARAMETER                            :: tileid = -1
598      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3), &
599                                tileid)
600   END SUBROUTINE  xios(send_field_r8_3d)
601
602   SUBROUTINE  xios(send_field_tiled_r8_3d)(fieldid, data3d_k8, tileid)
603   IMPLICIT NONE
604      CHARACTER(len = *)               , INTENT(IN) :: fieldid
605      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
606      INTEGER                          , INTENT(IN) :: tileid
607      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), &
608                                      size(data3d_k8, 2), size(data3d_k8, 3), tileid)
609   END SUBROUTINE  xios(send_field_tiled_r8_3d)
610
611   SUBROUTINE  xios(send_field_r8_4d)(fieldid, data4d_k8)
612   IMPLICIT NONE
613      CHARACTER(len = *)               , INTENT(IN) :: fieldid
614      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
615      INTEGER, PARAMETER                            :: tileid = -1
616      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, &
617                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
618                                size(data4d_k8, 4), tileid)
619   END SUBROUTINE  xios(send_field_r8_4d)
620
621   SUBROUTINE  xios(send_field_tiled_r8_4d)(fieldid, data4d_k8, tileid)
622   IMPLICIT NONE
623      CHARACTER(len = *)               , INTENT(IN) :: fieldid
624      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
625      INTEGER                          , INTENT(IN) :: tileid
626      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, &
627                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
628                                size(data4d_k8, 4), tileid)
629   END SUBROUTINE  xios(send_field_tiled_r8_4d)
630
631   SUBROUTINE  xios(send_field_r8_5d)(fieldid, data5d_k8)
632   IMPLICIT NONE
633      CHARACTER(len = *)               , INTENT(IN) :: fieldid
634      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
635      INTEGER, PARAMETER                            :: tileid = -1
636      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, &
637                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
638                                size(data5d_k8, 4), size(data5d_k8, 5), tileid)
639   END SUBROUTINE  xios(send_field_r8_5d)
640
641   SUBROUTINE  xios(send_field_tiled_r8_5d)(fieldid, data5d_k8, tileid)
642   IMPLICIT NONE
643      CHARACTER(len = *)               , INTENT(IN) :: fieldid
644      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
645      INTEGER                          , INTENT(IN) :: tileid
646      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, &
647                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
648                                size(data5d_k8, 4), size(data5d_k8, 5), tileid)
649   END SUBROUTINE  xios(send_field_tiled_r8_5d)
650
651   SUBROUTINE  xios(send_field_r8_6d)(fieldid, data6d_k8)
652   IMPLICIT NONE
653      CHARACTER(len = *)               , INTENT(IN) :: fieldid
654      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
655      INTEGER, PARAMETER                            :: tileid = -1
656      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, &
657                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
658                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6), tileid)
659   END SUBROUTINE  xios(send_field_r8_6d)
660
661   SUBROUTINE  xios(send_field_tiled_r8_6d)(fieldid, data6d_k8, tileid)
662   IMPLICIT NONE
663      CHARACTER(len = *)               , INTENT(IN) :: fieldid
664      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
665      INTEGER                          , INTENT(IN) :: tileid
666      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, &
667                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
668                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6), tileid)
669   END SUBROUTINE  xios(send_field_tiled_r8_6d)
670
671   SUBROUTINE  xios(send_field_r8_7d)(fieldid, data7d_k8)
672   IMPLICIT NONE
673      CHARACTER(len = *)               , INTENT(IN) :: fieldid
674      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
675      INTEGER, PARAMETER                            :: tileid = -1
676      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, &
677                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
678                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
679                                size(data7d_k8, 7), tileid)
680   END SUBROUTINE  xios(send_field_r8_7d)
681
682   SUBROUTINE  xios(send_field_tiled_r8_7d)(fieldid, data7d_k8, tileid)
683   IMPLICIT NONE
684      CHARACTER(len = *)               , INTENT(IN) :: fieldid
685      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
686      INTEGER                          , INTENT(IN) :: tileid
687      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, &
688                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
689                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
690                                size(data7d_k8, 7), tileid)
691   END SUBROUTINE  xios(send_field_tiled_r8_7d)
692
693   SUBROUTINE xios(send_field_r4_0d)(fieldid, data_k4)
694   IMPLICIT NONE
695      CHARACTER(len = *) , INTENT(IN) :: fieldid
696      REAL     (kind = 4), INTENT(IN) :: data_k4
697      CALL cxios_write_data_k40(fieldid, len(fieldid), data_k4, 1)
698   END SUBROUTINE xios(send_field_r4_0d)
699
700   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
701   IMPLICIT NONE
702      CHARACTER(len = *)               , INTENT(IN) :: fieldid
703      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
704      INTEGER, PARAMETER                            :: tileid = -1
705      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1), tileid)
706   END SUBROUTINE xios(send_field_r4_1d)
707
708   SUBROUTINE xios(send_field_tiled_r4_1d)(fieldid, data1d_k4, tileid)
709   IMPLICIT NONE
710      CHARACTER(len = *)               , INTENT(IN) :: fieldid
711      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
712      INTEGER                          , INTENT(IN) :: tileid
713      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1), tileid)
714   END SUBROUTINE xios(send_field_tiled_r4_1d)
715
716   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
717   IMPLICIT NONE
718      CHARACTER(len = *)               , INTENT(IN) :: fieldid
719      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
720      INTEGER, PARAMETER                            :: tileid = -1
721      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2), tileid)
722   END SUBROUTINE xios(send_field_r4_2d)
723
724   SUBROUTINE xios(send_field_tiled_r4_2d)(fieldid, data2d_k4, tileid)
725   IMPLICIT NONE
726      CHARACTER(len = *)               , INTENT(IN) :: fieldid
727      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
728      INTEGER                          , INTENT(IN) :: tileid
729      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2), tileid)
730   END SUBROUTINE xios(send_field_tiled_r4_2d)
731
732   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
733   IMPLICIT NONE
734      CHARACTER(len = *)               , INTENT(IN) :: fieldid
735      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
736      INTEGER, PARAMETER                            :: tileid = -1
737      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3), &
738                                tileid)
739   END SUBROUTINE xios(send_field_r4_3d)
740
741   SUBROUTINE xios(send_field_tiled_r4_3d)(fieldid, data3d_k4, tileid)
742   IMPLICIT NONE
743      CHARACTER(len = *)               , INTENT(IN) :: fieldid
744      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
745      INTEGER                          , INTENT(IN) :: tileid
746      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3), &
747                                tileid)
748   END SUBROUTINE xios(send_field_tiled_r4_3d)
749
750   SUBROUTINE  xios(send_field_r4_4d)(fieldid, data4d_k4)
751   IMPLICIT NONE
752      CHARACTER(len = *)               , INTENT(IN) :: fieldid
753      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
754      INTEGER, PARAMETER                            :: tileid = -1
755      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, &
756                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
757                                size(data4d_k4, 4), tileid)
758   END SUBROUTINE  xios(send_field_r4_4d)
759
760   SUBROUTINE  xios(send_field_tiled_r4_4d)(fieldid, data4d_k4, tileid)
761   IMPLICIT NONE
762      CHARACTER(len = *)               , INTENT(IN) :: fieldid
763      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
764      INTEGER                          , INTENT(IN) :: tileid
765      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, &
766                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
767                                size(data4d_k4, 4), tileid)
768   END SUBROUTINE  xios(send_field_tiled_r4_4d)
769
770   SUBROUTINE  xios(send_field_r4_5d)(fieldid, data5d_k4)
771   IMPLICIT NONE
772      CHARACTER(len = *)               , INTENT(IN) :: fieldid
773      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
774      INTEGER, PARAMETER                            :: tileid = -1
775      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, &
776                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
777                                size(data5d_k4, 4), size(data5d_k4, 5), tileid)
778   END SUBROUTINE  xios(send_field_r4_5d)
779
780   SUBROUTINE  xios(send_field_tiled_r4_5d)(fieldid, data5d_k4, tileid)
781   IMPLICIT NONE
782      CHARACTER(len = *)               , INTENT(IN) :: fieldid
783      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
784      INTEGER                          , INTENT(IN) :: tileid
785      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, &
786                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
787                                size(data5d_k4, 4), size(data5d_k4, 5), tileid)
788   END SUBROUTINE  xios(send_field_tiled_r4_5d)
789
790   SUBROUTINE  xios(send_field_r4_6d)(fieldid, data6d_k4)
791   IMPLICIT NONE
792      CHARACTER(len = *)               , INTENT(IN) :: fieldid
793      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
794      INTEGER, PARAMETER                            :: tileid = -1
795      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, &
796                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
797                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6), tileid)
798   END SUBROUTINE  xios(send_field_r4_6d)
799
800   SUBROUTINE  xios(send_field_tiled_r4_6d)(fieldid, data6d_k4, tileid)
801   IMPLICIT NONE
802      CHARACTER(len = *)               , INTENT(IN) :: fieldid
803      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
804      INTEGER                          , INTENT(IN) :: tileid
805      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, &
806                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
807                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6), tileid)
808   END SUBROUTINE  xios(send_field_tiled_r4_6d)
809
810   SUBROUTINE  xios(send_field_r4_7d)(fieldid, data7d_k4)
811   IMPLICIT NONE
812      CHARACTER(len = *)               , INTENT(IN) :: fieldid
813      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
814      INTEGER, PARAMETER                            :: tileid = -1
815      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, &
816                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
817                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
818                                size(data7d_k4, 7), tileid)
819   END SUBROUTINE  xios(send_field_r4_7d)
820
821   SUBROUTINE  xios(send_field_tiled_r4_7d)(fieldid, data7d_k4, tileid)
822   IMPLICIT NONE
823      CHARACTER(len = *)               , INTENT(IN) :: fieldid
824      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
825      INTEGER                          , INTENT(IN) :: tileid
826      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, &
827                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
828                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
829                                size(data7d_k4, 7), tileid)
830   END SUBROUTINE  xios(send_field_tiled_r4_7d)
831
832   ! Receive field functions
833   SUBROUTINE xios(recv_field_r8_0d)(fieldid, data0d_k8)
834   IMPLICIT NONE
835      CHARACTER(len = *)               , INTENT(IN) :: fieldid
836      REAL     (kind = 8)              , INTENT(OUT):: data0d_k8
837      CALL cxios_read_data_k80(fieldid, len(fieldid), data0d_k8, 1)
838   END SUBROUTINE xios(recv_field_r8_0d)
839
840   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8)
841   IMPLICIT NONE
842      CHARACTER(len = *)               , INTENT(IN) :: fieldid
843      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
844      CALL cxios_read_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
845   END SUBROUTINE xios(recv_field_r8_1d)
846
847   SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8)
848   IMPLICIT NONE
849      CHARACTER(len = *)               , INTENT(IN) :: fieldid
850      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
851      CALL cxios_read_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
852   END SUBROUTINE  xios(recv_field_r8_2d)
853
854   SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8)
855   IMPLICIT NONE
856      CHARACTER(len = *)               , INTENT(IN) :: fieldid
857      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
858      CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
859   END SUBROUTINE  xios(recv_field_r8_3d)
860
861   SUBROUTINE  xios(recv_field_r8_4d)(fieldid, data4d_k8)
862   IMPLICIT NONE
863      CHARACTER(len = *)               , INTENT(IN) :: fieldid
864      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data4d_k8(:,:,:,:)
865      CALL cxios_read_data_k84(fieldid, len(fieldid), data4d_k8, &
866                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
867                                size(data4d_k8, 4))
868   END SUBROUTINE  xios(recv_field_r8_4d)
869
870   SUBROUTINE  xios(recv_field_r8_5d)(fieldid, data5d_k8)
871   IMPLICIT NONE
872      CHARACTER(len = *)               , INTENT(IN) :: fieldid
873      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data5d_k8(:,:,:,:,:)
874      CALL cxios_read_data_k85(fieldid, len(fieldid), data5d_k8, &
875                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
876                                size(data5d_k8, 4), size(data5d_k8, 5))
877   END SUBROUTINE  xios(recv_field_r8_5d)
878
879   SUBROUTINE  xios(recv_field_r8_6d)(fieldid, data6d_k8)
880   IMPLICIT NONE
881      CHARACTER(len = *)               , INTENT(IN) :: fieldid
882      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data6d_k8(:,:,:,:,:,:)
883      CALL cxios_read_data_k86(fieldid, len(fieldid), data6d_k8, &
884                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
885                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
886   END SUBROUTINE  xios(recv_field_r8_6d)
887
888   SUBROUTINE  xios(recv_field_r8_7d)(fieldid, data7d_k8)
889   IMPLICIT NONE
890      CHARACTER(len = *)               , INTENT(IN) :: fieldid
891      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data7d_k8(:,:,:,:,:,:,:)
892      CALL cxios_read_data_k87(fieldid, len(fieldid), data7d_k8, &
893                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
894                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
895                                size(data7d_k8, 7))
896   END SUBROUTINE  xios(recv_field_r8_7d)
897
898   SUBROUTINE xios(recv_field_r4_0d)(fieldid, data0d_k4)
899   IMPLICIT NONE
900      CHARACTER(len = *)               , INTENT(IN) :: fieldid
901      REAL     (kind = 4)              , INTENT(OUT):: data0d_k4
902      CALL cxios_read_data_k40(fieldid, len(fieldid), data0d_k4, 1)
903   END SUBROUTINE xios(recv_field_r4_0d)
904
905   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4)
906   IMPLICIT NONE
907      CHARACTER(len = *)               , INTENT(IN) :: fieldid
908      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
909      CALL cxios_read_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
910   END SUBROUTINE xios(recv_field_r4_1d)
911
912   SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4)
913   IMPLICIT NONE
914      CHARACTER(len = *)               , INTENT(IN) :: fieldid
915      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
916      CALL cxios_read_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
917   END SUBROUTINE xios(recv_field_r4_2d)
918
919   SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4)
920   IMPLICIT NONE
921      CHARACTER(len = *)               , INTENT(IN) :: fieldid
922      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
923      CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
924   END SUBROUTINE xios(recv_field_r4_3d)
925
926   SUBROUTINE  xios(recv_field_r4_4d)(fieldid, data4d_k4)
927   IMPLICIT NONE
928      CHARACTER(len = *)               , INTENT(IN) :: fieldid
929      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data4d_k4(:,:,:,:)
930      CALL cxios_read_data_k44(fieldid, len(fieldid), data4d_k4, &
931                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
932                                size(data4d_k4, 4))
933   END SUBROUTINE  xios(recv_field_r4_4d)
934
935   SUBROUTINE  xios(recv_field_r4_5d)(fieldid, data5d_k4)
936   IMPLICIT NONE
937      CHARACTER(len = *)               , INTENT(IN) :: fieldid
938      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data5d_k4(:,:,:,:,:)
939      CALL cxios_read_data_k45(fieldid, len(fieldid), data5d_k4, &
940                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
941                                size(data5d_k4, 4), size(data5d_k4, 5))
942   END SUBROUTINE  xios(recv_field_r4_5d)
943
944   SUBROUTINE  xios(recv_field_r4_6d)(fieldid, data6d_k4)
945   IMPLICIT NONE
946      CHARACTER(len = *)               , INTENT(IN) :: fieldid
947      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data6d_k4(:,:,:,:,:,:)
948      CALL cxios_read_data_k46(fieldid, len(fieldid), data6d_k4, &
949                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
950                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
951   END SUBROUTINE  xios(recv_field_r4_6d)
952
953   SUBROUTINE  xios(recv_field_r4_7d)(fieldid, data7d_k4)
954   IMPLICIT NONE
955      CHARACTER(len = *)               , INTENT(IN) :: fieldid
956      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data7d_k4(:,:,:,:,:,:,:)
957      CALL cxios_read_data_k47(fieldid, len(fieldid), data7d_k4, &
958                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
959                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
960                                size(data7d_k4, 7))
961   END SUBROUTINE  xios(recv_field_r4_7d)
962
963   ! Get variable functions
964   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8)
965   IMPLICIT NONE
966      LOGICAL  (kind = 1)                           :: val
967      CHARACTER(len = *)               , INTENT(IN) :: varId
968      REAL     (kind = 8)              , INTENT(OUT):: data_k8
969
970      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val)
971
972      xios(getVar_k8) = val
973   END FUNCTION xios(getVar_k8)
974
975   LOGICAL FUNCTION xios(getVar_k4)(varId, data_k4)
976   IMPLICIT NONE
977      LOGICAL  (kind = 1)                           :: val
978      CHARACTER(len = *)               , INTENT(IN) :: varId
979      REAL     (kind = 4)              , INTENT(OUT):: data_k4
980
981      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val)
982
983      xios(getVar_k4) = val
984   END FUNCTION xios(getVar_k4)
985
986   LOGICAL FUNCTION xios(getVar_int)(varId, data_int)
987   IMPLICIT NONE
988      LOGICAL  (kind = 1)                           :: val
989      CHARACTER(len = *)               , INTENT(IN) :: varId
990      INTEGER                          , INTENT(OUT):: data_int
991
992      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val)
993
994      xios(getVar_int) = val
995   END FUNCTION xios(getVar_int)
996
997   LOGICAL FUNCTION xios(getVar_logic)(varId, data_logic)
998   IMPLICIT NONE
999      LOGICAL  (kind = 1)                           :: val
1000      CHARACTER(len  = *)              , INTENT(IN) :: varId
1001      LOGICAL  (kind = 4)              , INTENT(OUT):: data_logic
1002
1003      CALL cxios_get_variable_data_logic(varId, len(varId), data_logic, val)
1004
1005      xios(getVar_logic) = val
1006   END FUNCTION xios(getVar_logic)
1007
1008   LOGICAL FUNCTION xios(getVar_char)(varId, data_char)
1009   IMPLICIT NONE
1010      LOGICAL  (kind = 1)                           :: val
1011      CHARACTER(len  = *)              , INTENT(IN) :: varId
1012      CHARACTER(len  = *)              , INTENT(OUT):: data_char
1013
1014      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val)
1015
1016      xios(getVar_char) = val
1017   END FUNCTION xios(getVar_char)
1018
1019   ! Set variable functions
1020   LOGICAL FUNCTION xios(setVar_k8)(varId, data_k8)
1021   IMPLICIT NONE
1022      LOGICAL  (kind = 1)                           :: val
1023      CHARACTER(len = *)               , INTENT(IN) :: varId
1024      REAL     (kind = 8)              , INTENT(IN) :: data_k8
1025
1026      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val)
1027
1028      xios(setVar_k8) = val
1029   END FUNCTION xios(setVar_k8)
1030
1031   LOGICAL FUNCTION xios(setVar_k4)(varId, data_k4)
1032   IMPLICIT NONE
1033      LOGICAL  (kind = 1)                           :: val
1034      CHARACTER(len = *)               , INTENT(IN) :: varId
1035      REAL     (kind = 4)              , INTENT(IN) :: data_k4
1036
1037      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val)
1038
1039      xios(setVar_k4) = val
1040   END FUNCTION xios(setVar_k4)
1041
1042   LOGICAL FUNCTION xios(setVar_int)(varId, data_int)
1043   IMPLICIT NONE
1044      LOGICAL  (kind = 1)                           :: val
1045      CHARACTER(len = *)               , INTENT(IN) :: varId
1046      INTEGER                          , INTENT(IN) :: data_int
1047
1048      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val)
1049
1050      xios(setVar_int) = val
1051   END FUNCTION xios(setVar_int)
1052
1053   LOGICAL FUNCTION xios(setVar_logic)(varId, data_logic)
1054   IMPLICIT NONE
1055      LOGICAL  (kind = 1)                           :: val
1056      CHARACTER(len  = *)              , INTENT(IN) :: varId
1057      LOGICAL  (kind = 4)              , INTENT(IN) :: data_logic
1058
1059      CALL cxios_set_variable_data_logic(varId, len(varId), data_logic, val)
1060
1061      xios(setVar_logic) = val
1062   END FUNCTION xios(setVar_logic)
1063
1064   LOGICAL FUNCTION xios(setVar_char)(varId, data_char)
1065   IMPLICIT NONE
1066      LOGICAL  (kind = 1)                           :: val
1067      CHARACTER(len  = *)              , INTENT(IN) :: varId
1068      CHARACTER(len  = *)              , INTENT(IN) :: data_char
1069
1070      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val)
1071
1072      xios(setVar_char) = val
1073   END FUNCTION xios(setVar_char)
1074
1075END MODULE IDATA
Note: See TracBrowser for help on using the repository browser.