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

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

Fortran attribut interface are now automaticaly generated.
Add get attribut fonctionnality from fortran.

YM

File size: 2.3 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!   USE IFIELD_ATTR
8!   USE IFIELDGROUP_ATTR
9   
10   TYPE txios(field)
11      INTEGER(kind = C_INTPTR_T) :: daddr
12   END TYPE txios(field)
13   
14   TYPE txios(fieldgroup)
15      INTEGER(kind = C_INTPTR_T) :: daddr
16   END TYPE txios(fieldgroup)
17   
18   CONTAINS ! Fonctions disponibles pour les utilisateurs.
19
20   SUBROUTINE xios(get_field_handle)(idt, ret)
21      IMPLICIT NONE
22      CHARACTER(len = *), INTENT(IN)   :: idt     
23      TYPE(txios(field)), INTENT(OUT) :: ret
24      CALL cxios_field_handle_create(ret%daddr, idt, len(idt))           
25   END SUBROUTINE xios(get_field_handle)
26   
27   SUBROUTINE xios(get_fieldgroup_handle)(idt,ret)
28      IMPLICIT NONE
29      CHARACTER(len = *)     , INTENT(IN) :: idt     
30      TYPE(txios(fieldgroup)), INTENT(OUT):: ret
31
32      CALL cxios_fieldgroup_handle_create(ret%daddr, idt, len(idt))           
33
34   END SUBROUTINE xios(get_fieldgroup_handle)
35   
36
37   LOGICAL FUNCTION xios(is_valid_field)(idt)
38      IMPLICIT NONE
39      CHARACTER(len  = *)    , INTENT(IN) :: idt
40      LOGICAL  (kind = 1)                 :: val
41     
42      CALL cxios_field_valid_id(val, idt, len(idt));
43      xios(is_valid_field) = val
44
45   END FUNCTION  xios(is_valid_field)
46
47   LOGICAL FUNCTION xios(is_valid_fieldgroup)(idt)
48      IMPLICIT NONE
49      CHARACTER(len  = *)    , INTENT(IN) :: idt
50      LOGICAL  (kind = 1)                 :: val
51      CALL cxios_fieldgroup_valid_id(val, idt, len(idt));
52      xios(is_valid_fieldgroup) = val
53
54   END FUNCTION  xios(is_valid_fieldgroup)
55   
56  LOGICAL FUNCTION xios(field_is_active_id(field_id))
57      IMPLICIT NONE
58      CHARACTER(len  = *)    , INTENT(IN) :: field_id
59      LOGICAL  (kind = 1)                 :: val
60      TYPE(txios(field))                 :: field_hdl
61     
62      CALL xios(get_field_handle)(field_id,field_hdl)
63      xios(field_is_active_id)=xios(field_is_active_hdl(field_hdl))
64
65   END FUNCTION  xios(field_is_active_id)
66   
67   
68   LOGICAL FUNCTION xios(field_is_active_hdl(field_hdl))
69      IMPLICIT NONE
70      TYPE(txios(field)),INTENT(IN)       :: field_hdl
71      LOGICAL  (kind = 1)                 :: ret
72     
73      CALL cxios_field_is_active(field_hdl%daddr, ret);
74      xios(field_is_active_hdl) = ret
75     
76   END FUNCTION  xios(field_is_active_hdl) 
77 
78
79END MODULE IFIELD
Note: See TracBrowser for help on using the repository browser.