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

Last change on this file since 886 was 886, checked in by mhnguyen, 7 years ago

Change send_scalar to send_field to make it more coherent

+) Removing and changing some functions in fortran interface

Test
+) On Curie
+) All 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: 22.9 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_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
60         USE ISO_C_BINDING
61         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
62         REAL     (kind = C_FLOAT)                :: data_k4
63         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
64         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
65      END SUBROUTINE cxios_write_data_k40
66
67
68      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
69         USE ISO_C_BINDING
70         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
71         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
72         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
73         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
74      END SUBROUTINE cxios_write_data_k81
75
76      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
77         USE ISO_C_BINDING
78         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
79         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
80         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
81         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
82      END SUBROUTINE cxios_write_data_k82
83
84      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
85         USE ISO_C_BINDING
86         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
87         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
88         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
89         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
90      END SUBROUTINE cxios_write_data_k83
91
92      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
93         USE ISO_C_BINDING
94         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
95         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
96         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
97         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
98      END SUBROUTINE cxios_write_data_k41
99
100      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
101         USE ISO_C_BINDING
102         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
103         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
104         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
105         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
106      END SUBROUTINE cxios_write_data_k42
107
108      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
109         USE ISO_C_BINDING
110         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
111         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
112         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
113         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
114      END SUBROUTINE cxios_write_data_k43
115
116      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
117         USE ISO_C_BINDING
118         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
119         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
120         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
121         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
122      END SUBROUTINE cxios_read_data_k81
123
124      SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
125         USE ISO_C_BINDING
126         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
127         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
128         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
129         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
130      END SUBROUTINE cxios_read_data_k82
131
132      SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
133         USE ISO_C_BINDING
134         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
135         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
136         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
137         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
138      END SUBROUTINE cxios_read_data_k83
139
140      SUBROUTINE cxios_read_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_read_data_k41
147
148      SUBROUTINE cxios_read_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_read_data_k42
155
156      SUBROUTINE cxios_read_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_read_data_k43
163
164      ! Binding C and Fortran interface of get_variable (icdata.cpp)
165      SUBROUTINE cxios_get_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
166         USE ISO_C_BINDING
167         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
168         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
169         REAL     (kind = C_DOUBLE)               :: data_k8
170         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
171      END SUBROUTINE cxios_get_variable_data_k8
172
173      SUBROUTINE cxios_get_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
174         USE ISO_C_BINDING
175         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
176         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
177         REAL     (kind = C_FLOAT)                :: data_k4
178         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
179      END SUBROUTINE cxios_get_variable_data_k4
180
181      SUBROUTINE cxios_get_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
182         USE ISO_C_BINDING
183         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
184         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
185         INTEGER  (kind = C_INT)                  :: data_int
186         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
187      END SUBROUTINE cxios_get_variable_data_int
188
189      SUBROUTINE cxios_get_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
190         USE ISO_C_BINDING
191         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
192         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
193         LOGICAL  (kind = 4)                      :: data_logic
194         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
195      END SUBROUTINE cxios_get_variable_data_logic
196
197      SUBROUTINE cxios_get_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
198         USE ISO_C_BINDING
199         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
200         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
201         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
202         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
203         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
204      END SUBROUTINE cxios_get_variable_data_char
205
206      ! Binding C and Fortran interface of set_variable (icdata.cpp)
207      SUBROUTINE cxios_set_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
208         USE ISO_C_BINDING
209         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
210         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
211         REAL     (kind = C_DOUBLE), VALUE        :: data_k8
212         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
213      END SUBROUTINE cxios_set_variable_data_k8
214
215      SUBROUTINE cxios_set_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
216         USE ISO_C_BINDING
217         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
218         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
219         REAL     (kind = C_FLOAT) , VALUE        :: data_k4
220         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
221      END SUBROUTINE cxios_set_variable_data_k4
222
223      SUBROUTINE cxios_set_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
224         USE ISO_C_BINDING
225         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
226         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
227         INTEGER  (kind = C_INT)   , VALUE        :: data_int
228         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
229      END SUBROUTINE cxios_set_variable_data_int
230
231      SUBROUTINE cxios_set_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
232         USE ISO_C_BINDING
233         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
234         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
235         LOGICAL  (kind = 4)       , VALUE        :: data_logic
236         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
237      END SUBROUTINE cxios_set_variable_data_logic
238
239      SUBROUTINE cxios_set_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
240         USE ISO_C_BINDING
241         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
242         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
243         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
244         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
245         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
246      END SUBROUTINE cxios_set_variable_data_char
247
248   END INTERFACE
249
250
251   CONTAINS ! Fonctions disponibles pour les utilisateurs.
252
253   SUBROUTINE  xios(init_server)()
254   IMPLICIT NONE
255     CALL cxios_init_server()
256   END SUBROUTINE xios(init_server)
257
258   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm)
259   IMPLICIT NONE
260   INCLUDE 'mpif.h'
261   CHARACTER(LEN=*),INTENT(IN) :: client_id
262   INTEGER,INTENT(IN),OPTIONAL         :: local_comm
263   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm
264   INTEGER :: f_local_comm
265   INTEGER :: f_return_comm
266
267      IF (PRESENT(local_comm)) THEN
268        f_local_comm=local_comm
269      ELSE
270        f_local_comm = MPI_COMM_NULL
271      ENDIF
272
273      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm)
274
275      IF (PRESENT(return_comm)) return_comm=f_return_comm
276
277   END SUBROUTINE  xios(initialize)
278
279
280   SUBROUTINE  xios(context_initialize)(context_id,comm)
281   IMPLICIT NONE
282   CHARACTER(LEN=*),INTENT(IN)  :: context_id
283   INTEGER, INTENT(IN)          :: comm
284
285      CALL cxios_context_initialize(context_id,LEN(context_id),comm)
286
287    END SUBROUTINE  xios(context_initialize)
288
289
290   LOGICAL FUNCTION  xios(context_is_initialized)(context_id)
291   USE ISO_C_BINDING
292   IMPLICIT NONE
293   CHARACTER(LEN=*),INTENT(IN)  :: context_id
294   LOGICAL(KIND=C_BOOL) :: is_init
295
296      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init)
297      xios(context_is_initialized) = is_init
298
299    END FUNCTION xios(context_is_initialized)
300
301
302   SUBROUTINE  xios(finalize)
303   IMPLICIT NONE
304
305      CALL cxios_finalize
306
307    END SUBROUTINE  xios(finalize)
308
309
310   SUBROUTINE xios(close_context_definition)()
311   IMPLICIT NONE
312      CALL cxios_context_close_definition()
313   END SUBROUTINE xios(close_context_definition)
314
315
316   SUBROUTINE xios(context_finalize)()
317   IMPLICIT NONE
318      CALL cxios_context_finalize()
319   END SUBROUTINE xios(context_finalize)
320
321   SUBROUTINE xios(solve_inheritance)()
322   IMPLICIT NONE
323      CALL cxios_solve_inheritance()
324   END SUBROUTINE xios(solve_inheritance)
325
326   ! Send field functions
327   SUBROUTINE xios(send_field_r8_0d)(fieldid, data_k8)
328   IMPLICIT NONE
329      CHARACTER(len = *) , INTENT(IN) :: fieldid
330      REAL     (kind = 8), INTENT(IN) :: data_k8
331      CALL cxios_write_data_k80(fieldid, len(fieldid), data_k8, 1)
332   END SUBROUTINE xios(send_field_r8_0d)
333
334   SUBROUTINE xios(send_field_r4_0d)(fieldid, data_k4)
335   IMPLICIT NONE
336      CHARACTER(len = *) , INTENT(IN) :: fieldid
337      REAL     (kind = 4), INTENT(IN) :: data_k4
338      CALL cxios_write_data_k40(fieldid, len(fieldid), data_k4, 1)
339   END SUBROUTINE xios(send_field_r4_0d)
340
341   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
342   IMPLICIT NONE
343      CHARACTER(len = *)               , INTENT(IN) :: fieldid
344      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
345      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
346   END SUBROUTINE xios(send_field_r8_1d)
347
348   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
349   IMPLICIT NONE
350      CHARACTER(len = *)               , INTENT(IN) :: fieldid
351      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
352      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
353   END SUBROUTINE  xios(send_field_r8_2d)
354
355   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
356   IMPLICIT NONE
357      CHARACTER(len = *)               , INTENT(IN) :: fieldid
358      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
359      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
360   END SUBROUTINE  xios(send_field_r8_3d)
361
362   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
363   IMPLICIT NONE
364      CHARACTER(len = *)               , INTENT(IN) :: fieldid
365      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
366      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
367   END SUBROUTINE xios(send_field_r4_1d)
368
369   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
370   IMPLICIT NONE
371      CHARACTER(len = *)               , INTENT(IN) :: fieldid
372      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
373      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
374   END SUBROUTINE xios(send_field_r4_2d)
375
376   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
377   IMPLICIT NONE
378      CHARACTER(len = *)               , INTENT(IN) :: fieldid
379      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
380      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
381   END SUBROUTINE xios(send_field_r4_3d)
382
383   ! Receive field functions
384   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8)
385   IMPLICIT NONE
386      CHARACTER(len = *)               , INTENT(IN) :: fieldid
387      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
388      CALL cxios_read_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
389   END SUBROUTINE xios(recv_field_r8_1d)
390
391   SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8)
392   IMPLICIT NONE
393      CHARACTER(len = *)               , INTENT(IN) :: fieldid
394      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
395      CALL cxios_read_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
396   END SUBROUTINE  xios(recv_field_r8_2d)
397
398   SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8)
399   IMPLICIT NONE
400      CHARACTER(len = *)               , INTENT(IN) :: fieldid
401      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
402      CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
403   END SUBROUTINE  xios(recv_field_r8_3d)
404
405   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4)
406   IMPLICIT NONE
407      CHARACTER(len = *)               , INTENT(IN) :: fieldid
408      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
409      CALL cxios_read_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
410   END SUBROUTINE xios(recv_field_r4_1d)
411
412   SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4)
413   IMPLICIT NONE
414      CHARACTER(len = *)               , INTENT(IN) :: fieldid
415      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
416      CALL cxios_read_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
417   END SUBROUTINE xios(recv_field_r4_2d)
418
419   SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4)
420   IMPLICIT NONE
421      CHARACTER(len = *)               , INTENT(IN) :: fieldid
422      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
423      CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
424   END SUBROUTINE xios(recv_field_r4_3d)
425
426   ! Get variable functions
427   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8)
428   IMPLICIT NONE
429      LOGICAL  (kind = 1)                           :: val
430      CHARACTER(len = *)               , INTENT(IN) :: varId
431      REAL     (kind = 8)              , INTENT(OUT):: data_k8
432
433      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val)
434
435      xios(getVar_k8) = val
436   END FUNCTION xios(getVar_k8)
437
438   LOGICAL FUNCTION xios(getVar_k4)(varId, data_k4)
439   IMPLICIT NONE
440      LOGICAL  (kind = 1)                           :: val
441      CHARACTER(len = *)               , INTENT(IN) :: varId
442      REAL     (kind = 4)              , INTENT(OUT):: data_k4
443
444      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val)
445
446      xios(getVar_k4) = val
447   END FUNCTION xios(getVar_k4)
448
449   LOGICAL FUNCTION xios(getVar_int)(varId, data_int)
450   IMPLICIT NONE
451      LOGICAL  (kind = 1)                           :: val
452      CHARACTER(len = *)               , INTENT(IN) :: varId
453      INTEGER                          , INTENT(OUT):: data_int
454
455      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val)
456
457      xios(getVar_int) = val
458   END FUNCTION xios(getVar_int)
459
460   LOGICAL FUNCTION xios(getVar_logic)(varId, data_logic)
461   IMPLICIT NONE
462      LOGICAL  (kind = 1)                           :: val
463      CHARACTER(len  = *)              , INTENT(IN) :: varId
464      LOGICAL  (kind = 4)              , INTENT(OUT):: data_logic
465
466      CALL cxios_get_variable_data_logic(varId, len(varId), data_logic, val)
467
468      xios(getVar_logic) = val
469   END FUNCTION xios(getVar_logic)
470
471   LOGICAL FUNCTION xios(getVar_char)(varId, data_char)
472   IMPLICIT NONE
473      LOGICAL  (kind = 1)                           :: val
474      CHARACTER(len  = *)              , INTENT(IN) :: varId
475      CHARACTER(len  = *)              , INTENT(OUT):: data_char
476
477      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val)
478
479      xios(getVar_char) = val
480   END FUNCTION xios(getVar_char)
481
482   ! Set variable functions
483   LOGICAL FUNCTION xios(setVar_k8)(varId, data_k8)
484   IMPLICIT NONE
485      LOGICAL  (kind = 1)                           :: val
486      CHARACTER(len = *)               , INTENT(IN) :: varId
487      REAL     (kind = 8)              , INTENT(IN) :: data_k8
488
489      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val)
490
491      xios(setVar_k8) = val
492   END FUNCTION xios(setVar_k8)
493
494   LOGICAL FUNCTION xios(setVar_k4)(varId, data_k4)
495   IMPLICIT NONE
496      LOGICAL  (kind = 1)                           :: val
497      CHARACTER(len = *)               , INTENT(IN) :: varId
498      REAL     (kind = 4)              , INTENT(IN) :: data_k4
499
500      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val)
501
502      xios(setVar_k4) = val
503   END FUNCTION xios(setVar_k4)
504
505   LOGICAL FUNCTION xios(setVar_int)(varId, data_int)
506   IMPLICIT NONE
507      LOGICAL  (kind = 1)                           :: val
508      CHARACTER(len = *)               , INTENT(IN) :: varId
509      INTEGER                          , INTENT(IN) :: data_int
510
511      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val)
512
513      xios(setVar_int) = val
514   END FUNCTION xios(setVar_int)
515
516   LOGICAL FUNCTION xios(setVar_logic)(varId, data_logic)
517   IMPLICIT NONE
518      LOGICAL  (kind = 1)                           :: val
519      CHARACTER(len  = *)              , INTENT(IN) :: varId
520      LOGICAL  (kind = 4)              , INTENT(IN) :: data_logic
521
522      CALL cxios_set_variable_data_logic(varId, len(varId), data_logic, val)
523
524      xios(setVar_logic) = val
525   END FUNCTION xios(setVar_logic)
526
527   LOGICAL FUNCTION xios(setVar_char)(varId, data_char)
528   IMPLICIT NONE
529      LOGICAL  (kind = 1)                           :: val
530      CHARACTER(len  = *)              , INTENT(IN) :: varId
531      CHARACTER(len  = *)              , INTENT(IN) :: data_char
532
533      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val)
534
535      xios(setVar_char) = val
536   END FUNCTION xios(setVar_char)
537
538END MODULE IDATA
Note: See TracBrowser for help on using the repository browser.