source: XMLIO_V2/dev/common/src/xmlio/fortran/idata.f90 @ 274

Last change on this file since 274 was 274, checked in by hozdoba, 10 years ago

nouvelle interface fortran et corrections

File size: 6.6 KB
Line 
1MODULE IDATA
2   USE, INTRINSIC :: ISO_C_BINDING
3   USE ICONTEXT
4   
5   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
6
7      SUBROUTINE  xios_init_ioserver(comm_client) BIND(C)
8         USE ISO_C_BINDING
9         INTEGER  (kind = C_INT) :: comm_client
10      END SUBROUTINE xios_init_ioserver
11
12      SUBROUTINE xios_dtreatment_start(context_hdl, filetype, comm_client_server, comm_server) BIND(C)
13         USE ISO_C_BINDING
14         INTEGER (kind = C_INTPTR_T), VALUE :: context_hdl
15         INTEGER (kind = C_INT)     , VALUE :: filetype, comm_client_server, comm_server
16      END SUBROUTINE xios_dtreatment_start
17
18      SUBROUTINE xios_dtreatment_end() BIND(C)
19         ! Sans argument
20      END SUBROUTINE xios_dtreatment_end
21
22      SUBROUTINE xios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
23         USE ISO_C_BINDING
24         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
25         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
26         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
27         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
28      END SUBROUTINE xios_write_data_k81
29     
30      SUBROUTINE xios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
31         USE ISO_C_BINDING
32         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
33         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
34         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
35         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
36      END SUBROUTINE xios_write_data_k82
37     
38      SUBROUTINE xios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
39         USE ISO_C_BINDING
40         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
41         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
42         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
43         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
44      END SUBROUTINE xios_write_data_k83
45     
46      SUBROUTINE xios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
47         USE ISO_C_BINDING
48         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
49         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
50         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
51         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
52      END SUBROUTINE xios_write_data_k41
53     
54      SUBROUTINE xios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
55         USE ISO_C_BINDING
56         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
57         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
58         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
59         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
60      END SUBROUTINE xios_write_data_k42
61     
62      SUBROUTINE xios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
63         USE ISO_C_BINDING
64         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
65         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
66         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
67         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
68      END SUBROUTINE xios_write_data_k43
69     
70   END INTERFACE
71   
72   CONTAINS ! Fonctions disponibles pour les utilisateurs.
73
74   SUBROUTINE  init_ioserver(comm_client)
75      INTEGER, INTENT(INOUT) :: comm_client
76      CALL xios_init_ioserver(comm_client)
77   END SUBROUTINE init_ioserver
78   
79   SUBROUTINE dtreatment_start(context_hdl, filetype, comm_client_server, comm_server)
80      TYPE(XContextHandle), INTENT(IN), VALUE    :: context_hdl
81      INTEGER             , INTENT(IN), OPTIONAL :: filetype , comm_client_server , comm_server
82      INTEGER                                    :: filetype_, comm_client_server_, comm_server_
83      IF (PRESENT(filetype)) THEN
84         filetype_ = filetype
85      ELSE
86         filetype_ = NETCDF4
87      END IF
88      IF (PRESENT(comm_client_server)) THEN
89         comm_client_server_ = comm_client_server
90      ELSE
91         comm_client_server_ = -1
92      END IF
93      IF (PRESENT(comm_server)) THEN
94         comm_server_ = comm_server
95      ELSE
96         comm_server_ = -1
97      END IF
98      CALL context_set_current(context_hdl)
99      CALL xios_dtreatment_start(context_hdl%daddr, filetype_, comm_client_server_, comm_server_)
100   END SUBROUTINE dtreatment_start
101   
102   SUBROUTINE dtreatment_end(context_hdl)
103      TYPE(XContextHandle), INTENT(IN), VALUE :: context_hdl
104      CALL context_set_current(context_hdl)
105      CALL xios_dtreatment_end()
106   END SUBROUTINE dtreatment_end
107   
108   SUBROUTINE write_data_k81(fieldid, data1d_k8)
109      CHARACTER(len = *)               , INTENT(IN) :: fieldid
110      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
111      CALL xios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
112   END SUBROUTINE write_data_k81
113   
114   SUBROUTINE write_data_k82(fieldid, data2d_k8)
115      CHARACTER(len = *)               , INTENT(IN) :: fieldid
116      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
117      CALL xios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
118   END SUBROUTINE write_data_k82
119   
120   SUBROUTINE write_data_k83(fieldid, data3d_k8)
121      CHARACTER(len = *)               , INTENT(IN) :: fieldid
122      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
123      CALL xios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
124   END SUBROUTINE write_data_k83
125   
126   SUBROUTINE write_data_k41(fieldid, data1d_k4)
127      CHARACTER(len = *)               , INTENT(IN) :: fieldid
128      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
129      CALL xios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
130   END SUBROUTINE write_data_k41
131   
132   SUBROUTINE write_data_k42(fieldid, data2d_k4)
133      CHARACTER(len = *)               , INTENT(IN) :: fieldid
134      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
135      CALL xios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
136   END SUBROUTINE write_data_k42
137   
138   SUBROUTINE write_data_k43(fieldid, data3d_k4)
139      CHARACTER(len = *)               , INTENT(IN) :: fieldid
140      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
141      CALL xios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
142   END SUBROUTINE write_data_k43
143   
144END MODULE IDATA
Note: See TracBrowser for help on using the repository browser.