source: XIOS/trunk/src/interface/fortran/ixios.F90 @ 489

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

Ticket 50: Implementing the getting/setting methods for Fortran interface

+) Add some C and Fortran functions to set and get data to/from CVariable with an id
+) Add method to send, receive and dispatch in CVariable
+) Add dispatch method in server class

Test
-) On Curie
-) Test data: integer, float, double, boolean, string
-) File: one and multiple, using_server: ON and OFF
+) All test cases passed and had correct results

File size: 11.5 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE XIOS
4
5
6USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context),    &
7                     xios(is_valid_context)
8
9USE icontext_attr, ONLY : xios(set_context_attr), xios(set_context_attr_hdl), &
10                          xios(get_context_attr), xios(get_context_attr_hdl), &
11                          xios(is_defined_context_attr), xios(is_defined_context_attr_hdl)
12
13USE idata, ONLY : xios(initialize),xios(init_server), xios(finalize), xios(context_initialize),  &
14                  xios(context_is_initialized), xios(close_context_definition),xios(solve_inheritance),       &
15                  xios(context_finalize), xios(send_field_r8_1d), xios(send_field_r8_2d), &
16                  xios(send_field_r8_3d), xios(send_field_r4_1d), xios(send_field_r4_2d), &
17                  xios(send_field_r4_3d), xios(getVar_k8), xios(getVar_k4), xios(getVar_int), &
18                  xios(getVar_logic), xios(getVar_char), xios(setVar_k8), xios(setVar_k4), xios(setVar_int), &
19                  xios(setVar_logic), xios(setVar_char)
20
21USE idate, ONLY : txios(date),txios(time), xios(set_timestep),xios(update_calendar)
22
23USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle),  &
24                    xios(get_domaingroup_handle),xios(is_valid_domain),     &
25                    xios(is_valid_domaingroup)
26
27USE idomain_attr, ONLY :  xios(set_domain_attr), xios(set_domain_attr_hdl),  &
28                          xios(get_domain_attr), xios(get_domain_attr_hdl), &
29                          xios(is_defined_domain_attr), xios(is_defined_domain_attr_hdl)
30
31USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr), xios(set_domaingroup_attr_hdl),  &
32                              xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl), &
33                              xios(is_defined_domaingroup_attr), xios(is_defined_domaingroup_attr_hdl)
34
35USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle),  &
36                   xios(get_fieldgroup_handle), xios(is_valid_field),        &
37                   xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl)
38
39USE ifield_attr, ONLY : xios(set_field_attr),xios(set_field_attr_hdl),    &
40                        xios(get_field_attr),xios(get_field_attr_hdl), &
41                        xios(is_defined_field_attr),xios(is_defined_field_attr_hdl)
42
43USE ifieldgroup_attr, ONLY : xios(set_fieldgroup_attr), xios(set_fieldgroup_attr_hdl),  &
44                             xios(get_fieldgroup_attr), xios(get_fieldgroup_attr_hdl), &
45                             xios(is_defined_fieldgroup_attr), xios(is_defined_fieldgroup_attr_hdl)
46
47USE ivariable, ONLY : txios(variable), txios(variablegroup), xios(get_variable_handle),  &
48                   xios(get_variablegroup_handle), xios(is_valid_variable),        &
49                   xios(is_valid_variablegroup)
50
51USE ivariable_attr, ONLY : xios(set_variable_attr),xios(set_variable_attr_hdl),    &
52                        xios(get_variable_attr),xios(get_variable_attr_hdl), &
53                        xios(is_defined_variable_attr),xios(is_defined_variable_attr_hdl)
54
55USE ivariablegroup_attr, ONLY : xios(set_variablegroup_attr), xios(set_variablegroup_attr_hdl),  &
56                             xios(get_variablegroup_attr), xios(get_variablegroup_attr_hdl), &
57                             xios(is_defined_variablegroup_attr), xios(is_defined_variablegroup_attr_hdl)
58
59USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    &
60                  xios(get_filegroup_handle), xios(is_valid_file), xios(is_valid_filegroup)
61
62USE ifile_attr, ONLY : xios(set_file_attr),xios(set_file_attr_hdl), &
63                       xios(get_file_attr),xios(get_file_attr_hdl), &
64                       xios(is_defined_file_attr),xios(is_defined_file_attr_hdl)
65
66USE ifilegroup_attr, ONLY : xios(set_filegroup_attr), xios(set_filegroup_attr_hdl), &
67                            xios(get_filegroup_attr), xios(get_filegroup_attr_hdl), &
68                            xios(is_defined_filegroup_attr), xios(is_defined_filegroup_attr_hdl)
69
70USE igrid, ONLY : txios(grid), txios(gridgroup), xios(get_grid_handle),     &
71                  xios(get_gridgroup_handle), xios(is_valid_grid), xios(is_valid_gridgroup)
72
73USE igrid_attr, ONLY : xios(set_grid_attr_hdl), xios(set_grid_attr), &
74                       xios(get_grid_attr_hdl), xios(get_grid_attr), &
75                       xios(is_defined_grid_attr_hdl), xios(is_defined_grid_attr)
76
77USE igridgroup_attr, ONLY : xios(set_gridgroup_attr), xios(set_gridgroup_attr_hdl),  &
78                            xios(get_gridgroup_attr), xios(get_gridgroup_attr_hdl), &
79                            xios(is_defined_gridgroup_attr), xios(is_defined_gridgroup_attr_hdl)
80
81USE iaxis, ONLY : txios(axis), txios(axisgroup), xios(get_axis_handle),     &
82                  xios(get_axisgroup_handle), xios(is_valid_axis), xios(is_valid_axisgroup)
83
84USE iaxis_attr, ONLY :  xios(set_axis_attr), xios(set_axis_attr_hdl), &
85                        xios(get_axis_attr), xios(get_axis_attr_hdl), &
86                        xios(is_defined_axis_attr), xios(is_defined_axis_attr_hdl)
87
88USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr), xios(set_axisgroup_attr_hdl), &
89                            xios(get_axisgroup_attr), xios(get_axisgroup_attr_hdl), &
90                            xios(is_defined_axisgroup_attr), xios(is_defined_axisgroup_attr_hdl)
91
92USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),          &
93                     xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),                  &
94                     xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup),         &
95                     xios(add_domaingroup), xios(add_fieldgrouptofile), xios(add_variablegrouptofile),            &
96                     xios(add_variablegrouptofield)
97
98PRIVATE
99
100
101INTERFACE xios(set_attr)
102  MODULE PROCEDURE xios(set_domaingroup_attr_hdl), xios(set_domain_attr_hdl), xios(set_fieldgroup_attr_hdl), &
103                   xios(set_field_attr_hdl),xios(set_variable_attr_hdl), xios(set_variablegroup_attr_hdl),   &
104                   xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),                                    &
105                   xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          &
106                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl)
107END INTERFACE xios(set_attr)
108
109INTERFACE xios(get_attr)
110  MODULE PROCEDURE xios(get_domaingroup_attr_hdl), xios(get_domain_attr_hdl), xios(get_fieldgroup_attr_hdl), &
111                   xios(get_field_attr_hdl), xios(get_variable_attr_hdl), xios(get_variablegroup_attr_hdl),  &
112                   xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),                                    &
113                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          &
114                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl)
115END INTERFACE xios(get_attr)
116
117INTERFACE xios(is_defined_attr)
118  MODULE PROCEDURE xios(is_defined_domaingroup_attr_hdl), xios(is_defined_domain_attr_hdl), xios(is_defined_fieldgroup_attr_hdl), &
119                   xios(is_defined_field_attr_hdl), xios(is_defined_variable_attr_hdl), xios(is_defined_variablegroup_attr_hdl),  &
120                   xios(is_defined_file_attr_hdl), xios(is_defined_filegroup_attr_hdl),                                           &
121                   xios(is_defined_grid_attr_hdl), xios(is_defined_gridgroup_attr_hdl), xios(is_defined_axis_attr_hdl) ,          &
122                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl)
123END INTERFACE xios(is_defined_attr)
124
125INTERFACE xios(get_handle)
126  MODULE PROCEDURE  xios(get_context_handle), xios(get_domain_handle), xios(get_domaingroup_handle),        &
127                    xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),               &
128                    xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),          &
129                    xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),          &
130                    xios(get_variablegroup_handle)
131END INTERFACE xios(get_handle)
132
133INTERFACE xios(add_child)
134  MODULE PROCEDURE xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),                &
135                   xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield), xios(add_axisgroup),  &
136                   xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), xios(add_domaingroup),            &
137                   xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield)
138END INTERFACE xios(add_child)
139
140
141INTERFACE xios(send_field)
142  MODULE PROCEDURE  xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d),              &
143                    xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d)
144END INTERFACE xios(send_field)
145
146INTERFACE xios(field_is_active)
147  MODULE PROCEDURE xios(field_is_active_id),xios(field_is_active_hdl)
148END INTERFACE
149
150INTERFACE xios(getVar)
151  MODULE PROCEDURE xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char)
152END INTERFACE xios(getVar)
153
154INTERFACE xios(setVar)
155  MODULE PROCEDURE xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char)
156END INTERFACE xios(setVar)
157
158 PUBLIC :: txios(domain), txios(domaingroup),txios(field), txios(fieldgroup),txios(file), txios(filegroup), &
159          txios(grid), txios(gridgroup), txios(axis), txios(axisgroup),txios(context), txios(date),txios(time)
160
161 PUBLIC :: xios(set_attr), xios(set_domain_attr), xios(set_domaingroup_attr), xios(set_fieldgroup_attr), &
162          xios(set_field_attr), xios(set_file_attr), xios(set_filegroup_attr),          &
163          xios(set_grid_attr), xios(set_gridgroup_attr), xios(set_axis_attr) ,          &
164          xios(set_axisgroup_attr), xios(set_context_attr)
165
166 PUBLIC :: xios(get_attr), xios(get_domain_attr), xios(get_domaingroup_attr), xios(get_fieldgroup_attr), &
167          xios(get_field_attr), xios(get_file_attr), xios(get_filegroup_attr),          &
168          xios(get_grid_attr), xios(get_gridgroup_attr), xios(get_axis_attr) ,          &
169          xios(get_axisgroup_attr), xios(get_context_attr)
170
171PUBLIC :: xios(is_defined_attr), xios(is_defined_domain_attr), xios(is_defined_domaingroup_attr), xios(is_defined_fieldgroup_attr), &
172          xios(is_defined_field_attr), xios(is_defined_file_attr), xios(is_defined_filegroup_attr),          &
173          xios(is_defined_grid_attr), xios(is_defined_gridgroup_attr), xios(is_defined_axis_attr) ,          &
174          xios(is_defined_axisgroup_attr), xios(is_defined_context_attr)
175
176 PUBLIC :: xios(get_handle)
177 PUBLIC :: xios(add_child)
178
179 PUBLIC :: xios(is_valid_context),xios(is_valid_domain), xios(is_valid_domaingroup),xios(is_valid_field),        &
180          xios(is_valid_fieldgroup), xios(is_valid_file), xios(is_valid_filegroup), xios(is_valid_grid),         &
181          xios(is_valid_gridgroup), xios(is_valid_axis), xios(is_valid_axisgroup)
182
183 PUBLIC :: xios(set_current_context)
184 PUBLIC :: xios(set_timestep),xios(update_calendar)
185 PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),xios(context_is_initialized), &
186           xios(solve_inheritance), xios(close_context_definition), xios(context_finalize), xios(send_field),          &
187           xios(field_is_active)
188
189 PUBLIC :: xios(getVar)
190 PUBLIC :: xios(setVar)
191
192END MODULE XIOS
Note: See TracBrowser for help on using the repository browser.