source: XIOS/trunk/src/interface/fortran/ixios_interfaces.F90 @ 835

Last change on this file since 835 was 835, checked in by mhnguyen, 8 years ago

Exposing some functions to Fortran interface

+) Allow add axis and domain into grid with Fortran interface
+) Remove some redundant code

Test
+) On Curie
+) test_client passes

File size: 10.3 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE XIOS_INTERFACES
4
5USE icontext, ONLY : xios(get_context_handle)
6
7USE icontext_attr, ONLY : xios(set_context_attr_hdl), xios(get_context_attr_hdl), xios(is_defined_context_attr_hdl)
8
9USE idata, ONLY : xios(send_scalar_r8), xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d), &
10                  xios(send_scalar_r4), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d), &
11                  xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d),                       &
12                  xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d),                       &
13                  xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char),    &
14                  xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char)
15
16USE idomain, ONLY : xios(get_domain_handle), xios(get_domaingroup_handle)
17
18USE idomain_attr, ONLY : xios(set_domain_attr_hdl), xios(get_domain_attr_hdl), xios(is_defined_domain_attr_hdl)
19
20USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr_hdl), xios(get_domaingroup_attr_hdl), xios(is_defined_domaingroup_attr_hdl)
21
22USE ifield, ONLY : xios(get_field_handle), xios(get_fieldgroup_handle), xios(field_is_active_id), xios(field_is_active_hdl)
23
24USE ifield_attr, ONLY : xios(set_field_attr_hdl), xios(get_field_attr_hdl), xios(is_defined_field_attr_hdl)
25
26USE ifieldgroup_attr, ONLY : xios(set_fieldgroup_attr_hdl), xios(get_fieldgroup_attr_hdl), xios(is_defined_fieldgroup_attr_hdl)
27
28USE ivariable, ONLY : xios(get_variable_handle), xios(get_variablegroup_handle)
29
30USE ivariable_attr, ONLY : xios(set_variable_attr_hdl), xios(get_variable_attr_hdl), xios(is_defined_variable_attr_hdl)
31
32USE ivariablegroup_attr, ONLY : xios(set_variablegroup_attr_hdl), xios(get_variablegroup_attr_hdl), &
33                                xios(is_defined_variablegroup_attr_hdl)
34
35USE ifile, ONLY : xios(get_file_handle), xios(get_filegroup_handle)
36
37USE ifile_attr, ONLY : xios(set_file_attr_hdl), xios(get_file_attr_hdl), xios(is_defined_file_attr_hdl)
38
39USE ifilegroup_attr, ONLY : xios(set_filegroup_attr_hdl), xios(get_filegroup_attr_hdl), xios(is_defined_filegroup_attr_hdl)
40
41USE igrid, ONLY : xios(get_grid_handle), xios(get_gridgroup_handle)
42
43USE igrid_attr, ONLY : xios(set_grid_attr_hdl), xios(get_grid_attr_hdl), xios(is_defined_grid_attr_hdl)
44
45USE igridgroup_attr, ONLY : xios(set_gridgroup_attr_hdl), xios(get_gridgroup_attr_hdl), xios(is_defined_gridgroup_attr_hdl)
46
47USE iaxis, ONLY : xios(get_axis_handle), xios(get_axisgroup_handle)
48
49USE iaxis_attr, ONLY : xios(set_axis_attr_hdl), xios(get_axis_attr_hdl), xios(is_defined_axis_attr_hdl)
50
51USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr_hdl), xios(get_axisgroup_attr_hdl), xios(is_defined_axisgroup_attr_hdl)
52
53USE izoom_axis, ONLY : xios(get_zoom_axis_handle)
54
55USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr_hdl), xios(get_zoom_axis_attr_hdl), xios(is_defined_zoom_axis_attr_hdl)
56
57USE izoom_domain, ONLY : xios(get_zoom_domain_handle)
58
59USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr_hdl), xios(get_zoom_domain_attr_hdl), xios(is_defined_zoom_domain_attr_hdl)
60
61USE iinterpolate_axis, ONLY : xios(get_interpolate_axis_handle)
62
63USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr_hdl), xios(get_interpolate_axis_attr_hdl), &
64                                   xios(is_defined_interpolate_axis_attr_hdl)
65
66USE iinterpolate_domain, ONLY : xios(get_interpolate_domain_handle)
67
68USE iinterpolate_domain_attr, ONLY : xios(set_interpolate_domain_attr_hdl), xios(get_interpolate_domain_attr_hdl), &
69                                     xios(is_defined_interpolate_domain_attr_hdl)
70
71USE iinverse_axis, ONLY : xios(get_inverse_axis_handle)
72
73USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr_hdl), xios(get_inverse_axis_attr_hdl), xios(is_defined_inverse_axis_attr_hdl)
74
75USE igenerate_rectilinear_domain, ONLY : xios(get_generate_rectilinear_domain_handle)
76
77USE igenerate_rectilinear_domain_attr, ONLY : xios(set_generate_rectilinear_domain_attr_hdl), &
78                                              xios(get_generate_rectilinear_domain_attr_hdl), &
79                                              xios(is_defined_generate_rectilinear_domain_attr_hdl)
80
81USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),   &
82                      xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),          &
83                      xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), &
84                      xios(add_domaingroup), xios(add_fieldgrouptofile), xios(add_variablegrouptofile),    &
85                      xios(add_variablegrouptofield), xios(add_axistogrid), xios(add_domaintogrid)
86
87PRIVATE
88
89INTERFACE xios(set_attr)
90  MODULE PROCEDURE xios(set_domaingroup_attr_hdl), xios(set_domain_attr_hdl), xios(set_fieldgroup_attr_hdl), &
91                   xios(set_field_attr_hdl),xios(set_variable_attr_hdl), xios(set_variablegroup_attr_hdl),   &
92                   xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),                                    &
93                   xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          &
94                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl), xios(set_zoom_axis_attr_hdl),   &
95                   xios(set_zoom_domain_attr_hdl), xios(set_interpolate_axis_attr_hdl),                      &
96                   xios(set_interpolate_domain_attr_hdl), xios(set_inverse_axis_attr_hdl),                   &
97                   xios(set_generate_rectilinear_domain_attr_hdl)
98END INTERFACE xios(set_attr)
99
100INTERFACE xios(get_attr)
101  MODULE PROCEDURE xios(get_domaingroup_attr_hdl), xios(get_domain_attr_hdl), xios(get_fieldgroup_attr_hdl), &
102                   xios(get_field_attr_hdl), xios(get_variable_attr_hdl), xios(get_variablegroup_attr_hdl),  &
103                   xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),                                    &
104                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          &
105                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl), xios(get_zoom_axis_attr_hdl),   &
106                   xios(get_zoom_domain_attr_hdl), xios(get_interpolate_axis_attr_hdl),                      &
107                   xios(get_interpolate_domain_attr_hdl), xios(get_inverse_axis_attr_hdl),                   &
108                   xios(get_generate_rectilinear_domain_attr_hdl)
109END INTERFACE xios(get_attr)
110
111INTERFACE xios(is_defined_attr)
112  MODULE PROCEDURE xios(is_defined_domaingroup_attr_hdl), xios(is_defined_domain_attr_hdl), xios(is_defined_fieldgroup_attr_hdl), &
113                   xios(is_defined_field_attr_hdl), xios(is_defined_variable_attr_hdl), xios(is_defined_variablegroup_attr_hdl),  &
114                   xios(is_defined_file_attr_hdl), xios(is_defined_filegroup_attr_hdl),                                           &
115                   xios(is_defined_grid_attr_hdl), xios(is_defined_gridgroup_attr_hdl), xios(is_defined_axis_attr_hdl) ,          &
116                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl),                                        &
117                   xios(is_defined_zoom_axis_attr_hdl), xios(is_defined_zoom_domain_attr_hdl),                                    &
118                   xios(is_defined_interpolate_axis_attr_hdl), xios(is_defined_interpolate_domain_attr_hdl),                      &
119                   xios(is_defined_inverse_axis_attr_hdl), xios(is_defined_generate_rectilinear_domain_attr_hdl)
120END INTERFACE xios(is_defined_attr)
121
122INTERFACE xios(get_handle)
123  MODULE PROCEDURE xios(get_context_handle), xios(get_domain_handle), xios(get_domaingroup_handle), &
124                   xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),        &
125                   xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),   &
126                   xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),   &
127                   xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                      &
128                   xios(get_zoom_domain_handle), xios(get_interpolate_axis_handle),                 &
129                   xios(get_interpolate_domain_handle), xios(get_inverse_axis_handle),              &
130                   xios(get_generate_rectilinear_domain_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),         &
138                   xios(add_axistogrid), xios(add_domaintogrid)
139END INTERFACE xios(add_child)
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(send_scalar)
147  MODULE PROCEDURE xios(send_scalar_r8), xios(send_scalar_r4)
148END INTERFACE xios(send_scalar)
149
150INTERFACE xios(recv_field)
151  MODULE PROCEDURE xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), &
152                   xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d)
153END INTERFACE xios(recv_field)
154
155INTERFACE xios(field_is_active)
156  MODULE PROCEDURE xios(field_is_active_id),xios(field_is_active_hdl)
157END INTERFACE xios(field_is_active)
158
159INTERFACE xios(getVar)
160  MODULE PROCEDURE xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char)
161END INTERFACE xios(getVar)
162
163INTERFACE xios(setVar)
164  MODULE PROCEDURE xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char)
165END INTERFACE xios(setVar)
166
167PUBLIC :: xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), &
168          xios(send_scalar), xios(send_field), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar)
169
170END MODULE XIOS_INTERFACES
Note: See TracBrowser for help on using the repository browser.