source: XIOS/trunk/src/fortran/ifield.F90 @ 312

Last change on this file since 312 was 312, checked in by ymipsl, 12 years ago

suppress old fortran interface

YM

File size: 15.1 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE IFIELD
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE FIELD_INTERFACE
6   USE FIELDGROUP_INTERFACE
7   
8   TYPE txios(field)
9      INTEGER(kind = C_INTPTR_T) :: daddr
10   END TYPE txios(field)
11   
12   TYPE txios(fieldgroup)
13      INTEGER(kind = C_INTPTR_T) :: daddr
14   END TYPE txios(fieldgroup)
15   
16   CONTAINS ! Fonctions disponibles pour les utilisateurs.
17
18
19   SUBROUTINE xios(set_fieldgroup_attr)                                             &
20   (fieldgroup_id, name, standard_name, long_name, unit, operation, freq_op, level, &
21    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
22   
23      IMPLICIT NONE
24      TYPE(txios(fieldgroup))                      :: fieldgroup_hdl
25      CHARACTER(len = *)               , INTENT(IN) :: fieldgroup_id
26      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
27      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
28      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
29      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
30      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
31      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
32      INTEGER                , OPTIONAL, INTENT(IN) :: level
33      INTEGER                , OPTIONAL, INTENT(IN) :: prec
34      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
35      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
36      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
37      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
38      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
39      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
40       
41      CALL xios(get_fieldgroup_handle)(fieldgroup_id,fieldgroup_hdl)
42      CALL xios(set_fieldgroup_attr_hdl_)                                                  &
43         (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
44          prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
45
46   END SUBROUTINE xios(set_fieldgroup_attr)
47
48   SUBROUTINE xios(set_fieldgroup_attr_hdl)                                           &
49   (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level , &
50    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
51      IMPLICIT NONE
52      TYPE(txios(fieldgroup))         , INTENT(IN) :: fieldgroup_hdl
53      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
54      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
55      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
56      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
57      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
58      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
59      INTEGER                , OPTIONAL, INTENT(IN) :: level
60      INTEGER                , OPTIONAL, INTENT(IN) :: prec
61      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
62      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
63      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
64      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
65      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
66      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
67     
68      CALL  xios(set_fieldgroup_attr_hdl_)                                            &
69   (fieldgroup_hdl, name, standard_name, long_name, unit, operation, freq_op, level , &
70    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value) 
71       
72   END SUBROUTINE xios(set_fieldgroup_attr_hdl)
73
74
75   SUBROUTINE xios(set_fieldgroup_attr_hdl_)                                                &
76   (fieldgroup_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, &
77    prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_)
78      IMPLICIT NONE
79      TYPE(txios(fieldgroup))         , INTENT(IN) :: fieldgroup_hdl
80      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
81      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name_
82      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name_
83      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit_
84      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation_
85      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op_
86      INTEGER                , OPTIONAL, INTENT(IN) :: level_
87      INTEGER                , OPTIONAL, INTENT(IN) :: prec_
88      LOGICAL(kind = 1)                             :: enabled__
89      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled_
90      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
91      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
92      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref_
93      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref_
94      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value_
95     
96      IF (PRESENT(name_))           THEN
97         CALL cxios_set_fieldgroup_name(fieldgroup_hdl%daddr, name_, len(name_))
98      END IF
99      IF (PRESENT(standard_name_))  THEN
100         CALL cxios_set_fieldgroup_standard_name(fieldgroup_hdl%daddr, standard_name_, len(standard_name_))
101      END IF
102      IF (PRESENT(long_name_))      THEN
103         CALL cxios_set_fieldgroup_long_name(fieldgroup_hdl%daddr, long_name_, len(long_name_))
104      END IF
105      IF (PRESENT(unit_))           THEN
106         CALL cxios_set_fieldgroup_unit(fieldgroup_hdl%daddr, unit_, len(unit_))
107      END IF
108      IF (PRESENT(operation_))      THEN
109         CALL cxios_set_fieldgroup_operation(fieldgroup_hdl%daddr, operation_, len(operation_))
110      END IF
111      IF (PRESENT(freq_op_))        THEN
112         CALL cxios_set_fieldgroup_freq_op(fieldgroup_hdl%daddr, freq_op_, len(freq_op_))
113      END IF
114      IF (PRESENT(level_))          THEN
115         CALL cxios_set_fieldgroup_level(fieldgroup_hdl%daddr, level_)
116      END IF
117      IF (PRESENT(prec_))           THEN
118         CALL cxios_set_fieldgroup_prec(fieldgroup_hdl%daddr, prec_)
119      END IF
120      IF (PRESENT(enabled_))        THEN
121         enabled__ = enabled_ 
122         CALL cxios_set_fieldgroup_enabled(fieldgroup_hdl%daddr, enabled__)
123      END IF
124      IF (PRESENT(domain_ref_))     THEN
125         CALL cxios_set_fieldgroup_domain_ref(fieldgroup_hdl%daddr, domain_ref_, len(domain_ref_))
126      END IF
127      IF (PRESENT(axis_ref_))       THEN
128         CALL cxios_set_fieldgroup_axis_ref(fieldgroup_hdl%daddr, axis_ref_, len(axis_ref_))
129      END IF
130      IF (PRESENT(grid_ref_))       THEN
131         CALL cxios_set_fieldgroup_grid_ref(fieldgroup_hdl%daddr, grid_ref_, len(grid_ref_))
132      END IF
133      IF (PRESENT(field_ref_))      THEN
134         CALL cxios_set_fieldgroup_field_ref(fieldgroup_hdl%daddr, field_ref_, len(field_ref_))
135      END IF
136      IF (PRESENT(default_value_))  THEN
137         CALL cxios_set_fieldgroup_default_value(fieldgroup_hdl%daddr, default_value_)
138      END IF
139
140   END SUBROUTINE xios(set_fieldgroup_attr_hdl_)
141
142   
143   SUBROUTINE xios(set_field_attr)                                             &
144   (field_id, name, standard_name, long_name, unit, operation, freq_op, level, &
145    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
146   
147      IMPLICIT NONE
148      TYPE(txios(field))                            :: field_hdl
149      CHARACTER(len = *)               , INTENT(IN) :: field_id
150      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
151      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
152      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
153      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
154      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
155      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
156      INTEGER                , OPTIONAL, INTENT(IN) :: level
157      INTEGER                , OPTIONAL, INTENT(IN) :: prec
158      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
159      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
160      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
161      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
162      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
163      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
164     
165      CALL xios(get_field_handle)(field_id,field_hdl)
166      CALL xios(set_field_attr_hdl_)                                                          &
167         (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level,  &
168          prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
169   END SUBROUTINE xios(set_field_attr)
170
171
172   SUBROUTINE xios(set_field_attr_hdl)                                          &
173   (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
174    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value)
175      IMPLICIT NONE
176      TYPE(txios(field))               , INTENT(IN):: field_hdl
177      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name
178      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name
179      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name
180      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit
181      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation
182      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op
183      INTEGER                , OPTIONAL, INTENT(IN) :: level
184      INTEGER                , OPTIONAL, INTENT(IN) :: prec
185      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled
186      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref
187      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref
188      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref
189      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref
190      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value
191
192      CALL xios(set_field_attr_hdl_)                                            &
193   (field_hdl, name, standard_name, long_name, unit, operation, freq_op, level, &
194    prec, enabled, domain_ref, axis_ref, grid_ref, field_ref, default_value) 
195       
196   END SUBROUTINE xios(set_field_attr_hdl)
197
198   SUBROUTINE xios(set_field_attr_hdl_)                                                &
199   (field_hdl, name_, standard_name_, long_name_, unit_, operation_, freq_op_, level_, &
200    prec_, enabled_, domain_ref_, axis_ref_, grid_ref_, field_ref_, default_value_)
201      IMPLICIT NONE
202      TYPE(txios(field))               , INTENT(IN):: field_hdl
203      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: name_
204      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: standard_name_
205      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: long_name_
206      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: unit_
207      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: operation_
208      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: freq_op_
209      INTEGER                , OPTIONAL, INTENT(IN) :: level_
210      INTEGER                , OPTIONAL, INTENT(IN) :: prec_
211      LOGICAL(kind = 1)                             :: enabled__
212      LOGICAL                , OPTIONAL, INTENT(IN) :: enabled_
213      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: domain_ref_
214      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: axis_ref_
215      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: grid_ref_
216      CHARACTER(len = *)     , OPTIONAL, INTENT(IN) :: field_ref_
217      REAL(kind=8)           , OPTIONAL, INTENT(IN) :: default_value_
218     
219      IF (PRESENT(name_))           THEN
220         CALL cxios_set_field_name(field_hdl%daddr, name_, len(name_))
221      END IF
222      IF (PRESENT(standard_name_))  THEN
223         CALL cxios_set_field_standard_name(field_hdl%daddr, standard_name_, len(standard_name_))
224      END IF
225      IF (PRESENT(long_name_))      THEN
226         CALL cxios_set_field_long_name(field_hdl%daddr, long_name_, len(long_name_))
227      END IF
228      IF (PRESENT(unit_))           THEN
229         CALL cxios_set_field_unit(field_hdl%daddr, unit_, len(unit_))
230      END IF
231      IF (PRESENT(operation_))      THEN
232         CALL cxios_set_field_operation(field_hdl%daddr, operation_, len(operation_))
233      END IF
234      IF (PRESENT(freq_op_))        THEN
235         CALL cxios_set_field_freq_op(field_hdl%daddr, freq_op_, len(freq_op_))
236      END IF
237      IF (PRESENT(level_))          THEN
238         CALL cxios_set_field_level(field_hdl%daddr, level_)
239      END IF
240      IF (PRESENT(prec_))           THEN
241         CALL cxios_set_field_prec(field_hdl%daddr, prec_)
242      END IF
243      IF (PRESENT(enabled_))        THEN
244         enabled__ = enabled_ 
245         CALL cxios_set_field_enabled(field_hdl%daddr, enabled__)
246      END IF
247      IF (PRESENT(domain_ref_))     THEN
248         CALL cxios_set_field_domain_ref(field_hdl%daddr, domain_ref_, len(domain_ref_))
249      END IF
250      IF (PRESENT(axis_ref_))       THEN
251         CALL cxios_set_field_axis_ref(field_hdl%daddr, axis_ref_, len(axis_ref_))
252      END IF
253      IF (PRESENT(grid_ref_))       THEN
254         CALL cxios_set_field_grid_ref(field_hdl%daddr, grid_ref_, len(grid_ref_))
255      END IF
256      IF (PRESENT(field_ref_))      THEN
257         CALL cxios_set_field_field_ref(field_hdl%daddr, field_ref_, len(field_ref_))
258      END IF
259      IF (PRESENT(default_value_))  THEN
260         CALL cxios_set_field_default_value(field_hdl%daddr, default_value_)
261      END IF
262
263   END SUBROUTINE xios(set_field_attr_hdl_)
264   
265
266   SUBROUTINE xios(get_field_handle)(idt, ret)
267      IMPLICIT NONE
268      CHARACTER(len = *), INTENT(IN)   :: idt     
269      TYPE(txios(field)), INTENT(OUT) :: ret
270      CALL cxios_field_handle_create(ret%daddr, idt, len(idt))           
271   END SUBROUTINE xios(get_field_handle)
272   
273   SUBROUTINE xios(get_fieldgroup_handle)(idt,ret)
274      IMPLICIT NONE
275      CHARACTER(len = *)     , INTENT(IN) :: idt     
276      TYPE(txios(fieldgroup)), INTENT(OUT):: ret
277
278      CALL cxios_fieldgroup_handle_create(ret%daddr, idt, len(idt))           
279
280   END SUBROUTINE xios(get_fieldgroup_handle)
281   
282
283   LOGICAL FUNCTION xios(is_valid_field)(idt)
284      IMPLICIT NONE
285      CHARACTER(len  = *)    , INTENT(IN) :: idt
286      LOGICAL  (kind = 1)                 :: val
287     
288      CALL cxios_field_valid_id(val, idt, len(idt));
289      xios(is_valid_field) = val
290
291   END FUNCTION  xios(is_valid_field)
292
293   LOGICAL FUNCTION xios(is_valid_fieldgroup)(idt)
294      IMPLICIT NONE
295      CHARACTER(len  = *)    , INTENT(IN) :: idt
296      LOGICAL  (kind = 1)                 :: val
297      CALL cxios_fieldgroup_valid_id(val, idt, len(idt));
298      xios(is_valid_fieldgroup) = val
299
300   END FUNCTION  xios(is_valid_fieldgroup)
301   
302  LOGICAL FUNCTION xios(field_is_active_id(field_id))
303      IMPLICIT NONE
304      CHARACTER(len  = *)    , INTENT(IN) :: field_id
305      LOGICAL  (kind = 1)                 :: val
306      TYPE(txios(field))                 :: field_hdl
307     
308      CALL xios(get_field_handle)(field_id,field_hdl)
309      xios(field_is_active_id)=xios(field_is_active_hdl(field_hdl))
310
311   END FUNCTION  xios(field_is_active_id)
312   
313   
314   LOGICAL FUNCTION xios(field_is_active_hdl(field_hdl))
315      IMPLICIT NONE
316      TYPE(txios(field)),INTENT(IN)       :: field_hdl
317      LOGICAL  (kind = 1)                 :: ret
318     
319      CALL cxios_field_is_active(field_hdl%daddr, ret);
320      xios(field_is_active_hdl) = ret
321     
322   END FUNCTION  xios(field_is_active_hdl) 
323 
324
325END MODULE IFIELD
Note: See TracBrowser for help on using the repository browser.