source: XIOS/trunk/src/interface/fortran/idata.F90 @ 1587

Last change on this file since 1587 was 1587, checked in by ymipsl, 3 years ago

XIOS - OASIS interaction : due to many problem occurring in the oasis/XIOS initialization phase due to a bad order of intialization call from both, you have now the possibily to explicitly inform xios that the servers must call oasis_enddef().
New rules : On model side, before calling oasis_enddef, you must add a call to "xios_oasis_enddef()"
Old rules : oasis_enddef must be call before any call to "xios_context_initialize" otherwise it may lead to a deadlock.
You can use the old rules if the variable <call_oasis_enddef> is set to false (default value is true), and by this way no need to modify the source code of the models

YM

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