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

Last change on this file since 932 was 932, checked in by mhnguyen, 5 years ago

Adding Fortran interface for high-dimension grid (up to 7)

+) Add check mask for high-dimension grid
+) Add Fortran interface for send_field, recv_field

Test
+) On Curie
+) Work

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