source: XMLIO_V2/dev/dev_rv/src/xmlio/fortran/iaxis.f90 @ 285

Last change on this file since 285 was 285, checked in by hozdoba, 13 years ago
File size: 6.6 KB
Line 
1MODULE IAXIS
2   USE, INTRINSIC :: ISO_C_BINDING
3   USE AXIS_INTERFACE
4   USE AXISGROUP_INTERFACE
5   
6   TYPE XAxisHandle
7      INTEGER(kind = C_INTPTR_T) :: daddr
8   END TYPE XAxisHandle
9   
10   TYPE XAxisGroupHandle
11      INTEGER(kind = C_INTPTR_T) :: daddr
12   END TYPE XAxisGroupHandle
13   
14   !----------------------------------------------------------------------------
15   INTERFACE set_axis_attributes
16      MODULE PROCEDURE set_axis_attributes_id,set_axis_attributes_hdl
17   END INTERFACE 
18   
19   INTERFACE set_axis_group_attributes
20      MODULE PROCEDURE set_axisgroup_attributes_id,set_axisgroup_attributes_hdl
21   END INTERFACE 
22   !----------------------------------------------------------------------------
23     
24   CONTAINS ! Fonctions disponibles pour les utilisateurs.
25
26   SUBROUTINE set_axis_attributes_id(axis_id, name_, standard_name_, long_name_, unit_, size_, zvalue_)
27      IMPLICIT NONE
28      TYPE(XAxisHandle)                                      :: axis_hdl
29      CHARACTER(len = *)                        , INTENT(IN) :: axis_id
30      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
31      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
32      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
33      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
34      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
35      REAL    (kind = 8), dimension(*), OPTIONAL, INTENT(IN) :: zvalue_(:)
36     
37      CALL axis_handle_create(axis_hdl, axis_id)
38      CALL set_axis_attributes_hdl(axis_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
39
40   END SUBROUTINE set_axis_attributes_id
41
42   SUBROUTINE set_axis_attributes_hdl(axis_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
43      IMPLICIT NONE
44      TYPE(XAxisHandle)                         , INTENT(IN) :: axis_hdl
45      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
46      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
47      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
48      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
49      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
50      REAL    (kind = 8), dimension(*), OPTIONAL, INTENT(IN) :: zvalue_(:)
51     
52      IF (PRESENT(name_))           THEN
53         CALL xios_set_axis_name(axis_hdl%daddr, name_, len(name_))
54      END IF
55      IF (PRESENT(standard_name_))  THEN
56         CALL xios_set_axis_standard_name(axis_hdl%daddr, standard_name_, len(standard_name_))
57      END IF
58      IF (PRESENT(long_name_))      THEN
59         CALL xios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
60      END IF
61      IF (PRESENT(unit_))           THEN
62         CALL xios_set_axis_unit(axis_hdl%daddr, unit_, len(unit_))
63      END IF
64      IF (PRESENT(size_))           THEN
65         CALL xios_set_axis_size(axis_hdl%daddr, size_)
66      END IF
67      IF (PRESENT(zvalue_))         THEN
68         CALL xios_set_axis_zvalue(axis_hdl%daddr, zvalue_, size(zvalue_, 1))
69      END IF
70   END SUBROUTINE set_axis_attributes_hdl
71   
72   SUBROUTINE set_axisgroup_attributes_id(axisgroup_id, name_, standard_name_, long_name_, unit_, size_, zvalue_)
73      IMPLICIT NONE
74      TYPE(XAxisGroupHandle)                                 :: axisgroup_hdl
75      CHARACTER(len = *)                        , INTENT(IN) :: axisgroup_id
76      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
77      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
78      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
79      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
80      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
81      REAL    (kind = 8), dimension(*), OPTIONAL, INTENT(IN) :: zvalue_(:)
82     
83      CALL axisgroup_handle_create(axisgroup_hdl, axisgroup_id)
84      CALL set_axisgroup_attributes_hdl(axisgroup_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
85
86   END SUBROUTINE set_axisgroup_attributes_id
87   
88   SUBROUTINE set_axisgroup_attributes_hdl(axisgroup_hdl, name_, standard_name_, long_name_, unit_, size_, zvalue_)
89      IMPLICIT NONE
90      TYPE(XAxisGroupHandle)                    , INTENT(IN) :: axisgroup_hdl
91      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: name_
92      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: standard_name_
93      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: long_name_
94      CHARACTER(len = *)              , OPTIONAL, INTENT(IN) :: unit_
95      INTEGER                         , OPTIONAL, INTENT(IN) :: size_
96      REAL    (kind = 8), dimension(*), OPTIONAL, INTENT(IN) :: zvalue_(:)
97     
98      IF (PRESENT(name_))           THEN
99         CALL xios_set_axisgroup_name(axisgroup_hdl%daddr, name_, len(name_))
100      END IF
101      IF (PRESENT(standard_name_))  THEN
102         CALL xios_set_axisgroup_standard_name(axisgroup_hdl%daddr, standard_name_, len(standard_name_))
103      END IF
104      IF (PRESENT(long_name_))      THEN
105         CALL xios_set_axisgroup_long_name(axisgroup_hdl%daddr, long_name_, len(long_name_))
106      END IF
107      IF (PRESENT(unit_))           THEN
108         CALL xios_set_axisgroup_unit(axisgroup_hdl%daddr, unit_, len(unit_))
109      END IF
110      IF (PRESENT(size_))           THEN
111         CALL xios_set_axisgroup_size(axisgroup_hdl%daddr, size_)
112      END IF
113      IF (PRESENT(zvalue_))         THEN
114         CALL xios_set_axisgroup_zvalue(axisgroup_hdl%daddr, zvalue_, size(zvalue_, 1))
115      END IF
116   END SUBROUTINE set_axisgroup_attributes_hdl
117
118   SUBROUTINE axis_handle_create(ret, idt)
119      IMPLICIT NONE
120      TYPE(XAxisHandle) , INTENT(OUT):: ret
121      CHARACTER(len = *), INTENT(IN) :: idt     
122      CALL xios_axis_handle_create(ret%daddr, idt, len(idt))           
123   END SUBROUTINE axis_handle_create
124   
125   SUBROUTINE axisgroup_handle_create(ret, idt)
126      IMPLICIT NONE
127      TYPE(XAxisGroupHandle), INTENT(OUT):: ret
128      CHARACTER(len = *)    , INTENT(IN) :: idt     
129      CALL xios_axisgroup_handle_create(ret%daddr, idt, len(idt))           
130   END SUBROUTINE axisgroup_handle_create
131
132   LOGICAL FUNCTION axis_valid_id(idt)
133      IMPLICIT NONE
134      CHARACTER(len  = *)    , INTENT(IN) :: idt
135      LOGICAL  (kind = 1)                 :: val
136      CALL xios_axis_valid_id(val, idt, len(idt));
137      axis_valid_id = val
138   END FUNCTION  axis_valid_id
139
140   LOGICAL FUNCTION axisgroup_valid_id(idt)
141      IMPLICIT NONE
142      CHARACTER(len  = *)    , INTENT(IN) :: idt
143      LOGICAL  (kind = 1)                 :: val
144      CALL xios_axisgroup_valid_id(val, idt, len(idt));
145      axisgroup_valid_id = val
146   END FUNCTION  axisgroup_valid_id
147
148END MODULE IAXIS
Note: See TracBrowser for help on using the repository browser.