source: XMLIO_V2/dev/common/src/xmlio/fortran/idomain.F90 @ 286

Last change on this file since 286 was 286, checked in by ymipsl, 13 years ago

reprise en main de la version de H. Ozdoba. Correction de différentes erreurs de conception et bug.
Version NEMO operationnel en client/server, interoperabilita avec OASIS, reconstition de fichiers via netcdf4/HDF5

YM

File size: 53.9 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE IDOMAIN
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE DOMAIN_INTERFACE
6   USE DOMAINGROUP_INTERFACE
7   
8   TYPE XDomainHandle
9      INTEGER(kind = C_INTPTR_T) :: daddr
10   END TYPE XDomainHandle
11   
12   TYPE XDomainGroupHandle
13      INTEGER(kind = C_INTPTR_T) :: daddr
14   END TYPE XDomainGroupHandle
15
16   TYPE txios(domain)
17      INTEGER(kind = C_INTPTR_T) :: daddr
18   END TYPE txios(domain)
19   
20   TYPE txios(domaingroup)
21      INTEGER(kind = C_INTPTR_T) :: daddr
22   END TYPE txios(domaingroup)
23   
24   !----------------------------------------------------------------------------
25   INTERFACE set_domain_attributes
26      MODULE PROCEDURE set_domain_attributes_id,set_domain_attributes_hdl
27   END INTERFACE 
28   
29   INTERFACE set_domain_group_attributes
30      MODULE PROCEDURE set_domaingroup_attributes_id,set_domaingroup_attributes_hdl
31   END INTERFACE 
32   !----------------------------------------------------------------------------
33   
34   CONTAINS ! Fonctions disponibles pour les utilisateurs.
35
36
37   SUBROUTINE xios(set_domaingroup_attr)                                                                   &
38   ( domaingroup_id, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,       &
39     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
40     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,                &
41     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
42      IMPLICIT NONE
43      TYPE(txios(domaingroup))                              :: domaingroup_hdl
44      CHARACTER(len = *)                       , INTENT(IN) :: domaingroup_id
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) :: domain_group_ref
49      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo
50      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo
51      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin
52      INTEGER                        , OPTIONAL, INTENT(IN) :: iend
53      INTEGER                        , OPTIONAL, INTENT(IN) :: ni
54      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin
55      INTEGER                        , OPTIONAL, INTENT(IN) :: jend
56      INTEGER                        , OPTIONAL, INTENT(IN) :: nj
57      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask(:,:)
58      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim
59      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni
60      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj
61      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin
62      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin
63      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni
64      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj
65      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin
66      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin
67      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_loc
68      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_loc
69      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
70      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
71      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index
72      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index(:)
73      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index(:)
74      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue(:)
75      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue(:)
76 
77      CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
78      CALL xios(set_domaingroup_attr_hdl_)                                                                 &
79   ( domaingroup_hdl, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,      &
80     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
81     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,                &
82     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
83
84   END SUBROUTINE xios(set_domaingroup_attr)
85
86   SUBROUTINE xios(set_domaingroup_attr_hdl)                                                               &   
87   ( domaingroup_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,       &
88     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                     &
89     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,                &
90     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
91      IMPLICIT NONE
92      TYPE(txios(domaingroup))             , INTENT(IN) :: domaingroup_hdl
93      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name
94      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name
95      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name
96      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref
97      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo
98      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo
99      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin
100      INTEGER                          , OPTIONAL, INTENT(IN) :: iend
101      INTEGER                          , OPTIONAL, INTENT(IN) :: ni
102      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin
103      INTEGER                          , OPTIONAL, INTENT(IN) :: jend
104      INTEGER                          , OPTIONAL, INTENT(IN) :: nj
105      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask(:,:)
106      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim
107      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni
108      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj
109      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin
110      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin
111      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni
112      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj
113      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin
114      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin
115      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc
116      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc
117      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
118      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
119      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index
120      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index(:)
121      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index(:)
122      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue(:)
123      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue(:)   
124
125      CALL xios(set_domaingroup_attr_hdl_)                                                                  &
126   ( domaingroup_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,       &
127     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,                   &
128     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,                 &
129     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
130
131    END SUBROUTINE xios(set_domaingroup_attr_hdl)
132
133   SUBROUTINE xios(set_domaingroup_attr_hdl_)                                                                       &
134   ( domaingroup_hdl, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,       &
135     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,                   &
136     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,                 &
137     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
138      IMPLICIT NONE
139      TYPE(txios(domaingroup))             , INTENT(IN) :: domaingroup_hdl
140      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
141      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
142      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
143      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
144      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
145      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
146      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
147      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
148      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
149      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
150      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
151      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
152      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
153      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__! (size(mask_,1),size(mask,2))
154      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
155      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
156      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
157      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
158      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
159      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
160      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
161      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
162      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
163      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
164      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
165      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
166      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
167      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
168      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
169      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
170      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
171      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
172     
173      IF (PRESENT(name_))             THEN
174         CALL cxios_set_domaingroup_name(domaingroup_hdl%daddr, name_, len(name_))
175      END IF
176      IF (PRESENT(standard_name_))    THEN
177         CALL cxios_set_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_))
178      END IF
179      IF (PRESENT(long_name_))        THEN
180         CALL cxios_set_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_))
181       END IF
182      IF (PRESENT(domain_group_ref_)) THEN
183         CALL cxios_set_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
184      END IF
185      IF (PRESENT(ni_glo_))           THEN
186         CALL cxios_set_domaingroup_ni_glo(domaingroup_hdl%daddr, ni_glo_)
187      END IF
188      IF (PRESENT(nj_glo_))           THEN
189         CALL cxios_set_domaingroup_nj_glo(domaingroup_hdl%daddr, nj_glo_)
190      END IF
191      IF (PRESENT(ibegin_))           THEN
192         CALL cxios_set_domaingroup_ibegin(domaingroup_hdl%daddr, ibegin_)
193       END IF
194      IF (PRESENT(iend_))             THEN
195         CALL cxios_set_domaingroup_iend(domaingroup_hdl%daddr, iend_)
196      END IF
197      IF (PRESENT(ni_))               THEN
198         CALL cxios_set_domaingroup_ni(domaingroup_hdl%daddr, ni_)
199      END IF
200      IF (PRESENT(jbegin_))           THEN
201         CALL cxios_set_domaingroup_jbegin(domaingroup_hdl%daddr, jbegin_)
202      END IF
203      IF (PRESENT(jend_))             THEN
204         CALL cxios_set_domaingroup_jend(domaingroup_hdl%daddr, jend_)
205      END IF
206      IF (PRESENT(nj_))               THEN
207         CALL cxios_set_domaingroup_nj(domaingroup_hdl%daddr, nj_)
208      END IF
209      IF (PRESENT(mask_))             THEN
210         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
211         mask__(:,:) = mask_(:,:)
212         CALL cxios_set_domaingroup_mask(domaingroup_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
213         DEALLOCATE(mask__)
214      END IF
215      IF (PRESENT(data_dim_))         THEN
216         CALL cxios_set_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_)
217      END IF
218      IF (PRESENT(data_ni_))          THEN
219         CALL cxios_set_domaingroup_data_ni(domaingroup_hdl%daddr, data_ni_)
220      END IF
221      IF (PRESENT(data_nj_))          THEN
222         CALL cxios_set_domaingroup_data_nj(domaingroup_hdl%daddr, data_nj_)
223      END IF
224      IF (PRESENT(data_ibegin_))      THEN
225         CALL cxios_set_domaingroup_data_ibegin(domaingroup_hdl%daddr, data_ibegin_)
226      END IF
227      IF (PRESENT(data_jbegin_))      THEN
228         CALL cxios_set_domaingroup_data_jbegin(domaingroup_hdl%daddr, data_jbegin_)
229      END IF
230      IF (PRESENT(zoom_ni_))          THEN
231         CALL cxios_set_domaingroup_zoom_ni(domaingroup_hdl%daddr, zoom_ni_)
232      END IF
233      IF (PRESENT(zoom_nj_))          THEN
234       CALL cxios_set_domaingroup_zoom_nj(domaingroup_hdl%daddr, zoom_nj_)
235      END IF
236      IF (PRESENT(zoom_ibegin_))      THEN
237         CALL cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl%daddr, zoom_ibegin_)
238      END IF
239      IF (PRESENT(zoom_jbegin_))      THEN
240         CALL cxios_set_domaingroup_zoom_jbegin(domaingroup_hdl%daddr, zoom_jbegin_)
241      END IF
242      IF (PRESENT(zoom_ni_loc_))      THEN
243         CALL cxios_set_domaingroup_zoom_ni_loc(domaingroup_hdl%daddr, zoom_ni_loc_)
244      END IF   
245      IF (PRESENT(zoom_nj_loc_))      THEN
246         CALL cxios_set_domaingroup_zoom_nj_loc(domaingroup_hdl%daddr, zoom_nj_loc_)
247      END IF
248      IF (PRESENT(zoom_ibegin_loc_))  THEN
249         CALL cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_hdl%daddr, zoom_ibegin_loc_)
250      END IF
251      IF (PRESENT(zoom_jbegin_loc_))  THEN
252         CALL cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_hdl%daddr, zoom_jbegin_loc_)
253      END IF
254      IF (PRESENT(data_n_index_))     THEN
255         CALL cxios_set_domaingroup_data_n_index(domaingroup_hdl%daddr, data_n_index_)
256      END IF
257      IF (PRESENT(data_i_index_))     THEN
258         CALL cxios_set_domaingroup_data_i_index(domaingroup_hdl%daddr, data_i_index_, size(data_i_index_, 1))
259      END IF
260      IF (PRESENT(data_j_index_))     THEN
261         CALL cxios_set_domaingroup_data_j_index(domaingroup_hdl%daddr, data_j_index_, size(data_j_index_, 1))
262      END IF
263      IF (PRESENT(lonvalue_))         THEN
264         CALL cxios_set_domaingroup_lonvalue(domaingroup_hdl%daddr, lonvalue_, size(lonvalue_, 1))
265      END IF
266      IF (PRESENT(latvalue_))         THEN
267         CALL cxios_set_domaingroup_latvalue(domaingroup_hdl%daddr, latvalue_, size(latvalue_, 1))
268      END IF
269
270   END SUBROUTINE xios(set_domaingroup_attr_hdl_)
271   
272   
273   SUBROUTINE xios(set_domain_attr)                                                                &
274   ( domain_id, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
275     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,             &
276     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,        &
277     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
278      IMPLICIT NONE
279      TYPE(txios(domain))                                   :: domain_hdl
280      CHARACTER(len = *)                       , INTENT(IN) :: domain_id
281      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: name
282      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: standard_name
283      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: long_name
284      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: domain_group_ref
285      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo
286      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo
287      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin
288      INTEGER                        , OPTIONAL, INTENT(IN) :: iend
289      INTEGER                        , OPTIONAL, INTENT(IN) :: ni
290      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin
291      INTEGER                        , OPTIONAL, INTENT(IN) :: jend
292      INTEGER                        , OPTIONAL, INTENT(IN) :: nj
293      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask(:,:)
294      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim
295      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni
296      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj
297      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin
298      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin
299      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni
300      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj
301      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin
302      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin
303      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_loc
304      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_loc
305      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
306      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
307      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index
308      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index(:)
309      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index(:)
310      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue(:)
311      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue(:)
312 
313      CALL xios(get_domain_handle)(domain_id,domain_hdl)
314      CALL xios(set_domain_attr_hdl_)                                                                     &
315   ( domain_hdl, name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
316     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,              &
317     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,         &
318     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
319
320   END SUBROUTINE xios(set_domain_attr)
321
322
323   SUBROUTINE xios(set_domain_attr_hdl)                                                             &
324   ( domain_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,    &
325     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,             &
326     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,        &
327     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
328      IMPLICIT NONE
329      TYPE(txios(domain))                       , INTENT(IN) :: domain_hdl
330      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name
331      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name
332      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name
333      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref
334      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo
335      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo
336      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin
337      INTEGER                          , OPTIONAL, INTENT(IN) :: iend
338      INTEGER                          , OPTIONAL, INTENT(IN) :: ni
339      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin
340      INTEGER                          , OPTIONAL, INTENT(IN) :: jend
341      INTEGER                          , OPTIONAL, INTENT(IN) :: nj
342      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask(:,:)
343      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim
344      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni
345      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj
346      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin
347      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin
348      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni
349      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj
350      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin
351      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin
352      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc
353      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc
354      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc
355      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc
356      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index
357      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index(:)
358      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index(:)
359      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue(:)
360      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue(:)
361     
362      CALL xios(set_domain_attr_hdl_)                                                             &
363   ( domain_hdl,name, standard_name, long_name, domain_group_ref, ni_glo, nj_glo, ibegin, iend,   &
364     ni, jbegin, jend, nj, mask, data_dim, data_ni, data_nj, data_ibegin, data_jbegin,            &
365     zoom_ni, zoom_nj, zoom_ibegin, zoom_jbegin, zoom_ni_loc, zoom_nj_loc, zoom_ibegin_loc,       &
366     zoom_jbegin_loc, data_n_index, data_i_index, data_j_index, lonvalue, latvalue)
367     
368   END SUBROUTINE xios(set_domain_attr_hdl)
369       
370   SUBROUTINE xios(set_domain_attr_hdl_)                                                                  &
371   ( domain_hdl,name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,  &
372     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,         &
373     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,       &
374     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
375      IMPLICIT NONE
376      TYPE(txios(domain))                       , INTENT(IN) :: domain_hdl
377      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
378      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
379      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
380      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
381      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
382      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
383      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
384      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
385      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
386      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
387      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
388      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
389      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
390      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__
391      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
392      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
393      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
394      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
395      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
396      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
397      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
398      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
399      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
400      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
401      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
402      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
403      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
404      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
405      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
406      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
407      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
408      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
409      IF (PRESENT(name_))             THEN
410         CALL cxios_set_domain_name(domain_hdl%daddr, name_, len(name_))
411      END IF
412      IF (PRESENT(standard_name_))    THEN
413         CALL cxios_set_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_))
414      END IF
415      IF (PRESENT(long_name_))        THEN
416         CALL cxios_set_domain_long_name(domain_hdl%daddr, long_name_, len(long_name_))
417       END IF
418      IF (PRESENT(domain_group_ref_)) THEN
419         CALL cxios_set_domain_domain_group_ref(domain_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
420      END IF
421      IF (PRESENT(ni_glo_))           THEN
422         CALL cxios_set_domain_ni_glo(domain_hdl%daddr, ni_glo_)
423      END IF
424      IF (PRESENT(nj_glo_))           THEN
425         CALL cxios_set_domain_nj_glo(domain_hdl%daddr, nj_glo_)
426      END IF
427      IF (PRESENT(ibegin_))           THEN
428         CALL cxios_set_domain_ibegin(domain_hdl%daddr, ibegin_)
429       END IF
430      IF (PRESENT(iend_))             THEN
431         CALL cxios_set_domain_iend(domain_hdl%daddr, iend_)
432      END IF
433      IF (PRESENT(ni_))               THEN
434         CALL cxios_set_domain_ni(domain_hdl%daddr, ni_)
435      END IF
436      IF (PRESENT(jbegin_))           THEN
437         CALL cxios_set_domain_jbegin(domain_hdl%daddr, jbegin_)
438      END IF
439      IF (PRESENT(jend_))             THEN
440         CALL cxios_set_domain_jend(domain_hdl%daddr, jend_)
441      END IF
442      IF (PRESENT(nj_))               THEN
443         CALL cxios_set_domain_nj(domain_hdl%daddr, nj_)
444      END IF
445      IF (PRESENT(mask_))             THEN
446         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
447         mask__(:,:) = mask_(:,:)
448         CALL cxios_set_domain_mask(domain_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
449         DEALLOCATE(mask__)
450      END IF
451      IF (PRESENT(data_dim_))         THEN
452         CALL cxios_set_domain_data_dim(domain_hdl%daddr, data_dim_)
453      END IF
454      IF (PRESENT(data_ni_))          THEN
455         CALL cxios_set_domain_data_ni(domain_hdl%daddr, data_ni_)
456      END IF
457      IF (PRESENT(data_nj_))          THEN
458         CALL cxios_set_domain_data_nj(domain_hdl%daddr, data_nj_)
459      END IF
460      IF (PRESENT(data_ibegin_))      THEN
461         CALL cxios_set_domain_data_ibegin(domain_hdl%daddr, data_ibegin_)
462      END IF
463      IF (PRESENT(data_jbegin_))      THEN
464         CALL cxios_set_domain_data_jbegin(domain_hdl%daddr, data_jbegin_)
465      END IF
466      IF (PRESENT(zoom_ni_))          THEN
467         CALL cxios_set_domain_zoom_ni(domain_hdl%daddr, zoom_ni_)
468      END IF
469      IF (PRESENT(zoom_nj_))          THEN
470       CALL cxios_set_domain_zoom_nj(domain_hdl%daddr, zoom_nj_)
471      END IF
472      IF (PRESENT(zoom_ibegin_))      THEN
473         CALL cxios_set_domain_zoom_ibegin(domain_hdl%daddr, zoom_ibegin_)
474      END IF
475      IF (PRESENT(zoom_jbegin_))      THEN
476         CALL cxios_set_domain_zoom_jbegin(domain_hdl%daddr, zoom_jbegin_)
477      END IF
478      IF (PRESENT(zoom_ni_loc_))      THEN
479         CALL cxios_set_domain_zoom_ni_loc(domain_hdl%daddr, zoom_ni_loc_)
480      END IF   
481      IF (PRESENT(zoom_nj_loc_))      THEN
482         CALL cxios_set_domain_zoom_nj_loc(domain_hdl%daddr, zoom_nj_loc_)
483      END IF
484      IF (PRESENT(zoom_ibegin_loc_))  THEN
485         CALL cxios_set_domain_zoom_ibegin_loc(domain_hdl%daddr, zoom_ibegin_loc_)
486      END IF
487      IF (PRESENT(zoom_jbegin_loc_))  THEN
488         CALL cxios_set_domain_zoom_jbegin_loc(domain_hdl%daddr, zoom_jbegin_loc_)
489      END IF
490      IF (PRESENT(data_n_index_))     THEN
491         CALL cxios_set_domain_data_n_index(domain_hdl%daddr, data_n_index_)
492      END IF
493      IF (PRESENT(data_i_index_))     THEN
494         CALL cxios_set_domain_data_i_index(domain_hdl%daddr, data_i_index_, size(data_i_index_, 1))
495      END IF
496      IF (PRESENT(data_j_index_))     THEN
497         CALL cxios_set_domain_data_j_index(domain_hdl%daddr, data_j_index_, size(data_j_index_, 1))
498      END IF
499      IF (PRESENT(lonvalue_))         THEN
500         CALL cxios_set_domain_lonvalue(domain_hdl%daddr, lonvalue_, size(lonvalue_, 1))
501      END IF
502      IF (PRESENT(latvalue_))         THEN
503         CALL cxios_set_domain_latvalue(domain_hdl%daddr, latvalue_, size(latvalue_, 1))
504      END IF
505
506   END SUBROUTINE xios(set_domain_attr_hdl_)
507
508
509   
510   SUBROUTINE xios(get_domain_handle)(idt,ret)
511      IMPLICIT NONE
512      CHARACTER(len = *) , INTENT(IN) :: idt     
513      TYPE(txios(domain)), INTENT(OUT):: ret
514 
515      CALL cxios_domain_handle_create(ret%daddr, idt, len(idt))           
516
517   END SUBROUTINE xios(get_domain_handle)
518   
519   SUBROUTINE xios(get_domaingroup_handle)(idt, ret)
520      IMPLICIT NONE
521      CHARACTER(len = *)      , INTENT(IN) :: idt     
522      TYPE(txios(domaingroup)), INTENT(OUT):: ret
523
524      CALL cxios_domaingroup_handle_create(ret%daddr, idt, len(idt))           
525
526   END SUBROUTINE xios(get_domaingroup_handle)
527
528   LOGICAL FUNCTION xios(is_valid_domain)(idt)
529      IMPLICIT NONE
530      CHARACTER(len  = *)    , INTENT(IN) :: idt
531      LOGICAL  (kind = 1)                 :: val
532      CALL cxios_domain_valid_id(val, idt, len(idt));
533      xios(is_valid_domain) = val
534   END FUNCTION  xios(is_valid_domain)
535
536   LOGICAL FUNCTION xios(is_valid_domaingroup)(idt)
537      IMPLICIT NONE
538      CHARACTER(len  = *)    , INTENT(IN) :: idt
539      LOGICAL  (kind = 1)                 :: val
540      CALL cxios_domaingroup_valid_id(val, idt, len(idt));
541      xios(is_valid_domaingroup) = val
542   END FUNCTION  xios(is_valid_domaingroup)
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574!!!!!!!!!!!! Ancienne interfaces !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
575!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
576   
577   SUBROUTINE set_domaingroup_attributes_id                                                                        &
578   ( domaingroup_id, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,       &
579     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,                   &
580     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,                 &
581     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
582      IMPLICIT NONE
583      TYPE(XDomainGroupHandle)                              :: domaingroup_hdl
584      CHARACTER(len = *)                       , INTENT(IN) :: domaingroup_id
585      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: name_
586      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: standard_name_
587      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: long_name_
588      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: domain_group_ref_
589      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo_
590      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo_
591      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin_
592      INTEGER                        , OPTIONAL, INTENT(IN) :: iend_
593      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_
594      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin_
595      INTEGER                        , OPTIONAL, INTENT(IN) :: jend_
596      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_
597      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask_(:,:)
598      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim_
599      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni_
600      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj_
601      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin_
602      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin_
603      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_
604      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_
605      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_
606      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_
607      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
608      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
609      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
610      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
611      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index_
612      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index_(:)
613      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index_(:)
614      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue_(:)
615      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue_(:)
616 
617      CALL domaingroup_handle_create(domaingroup_hdl, domaingroup_id)
618      CALL set_domaingroup_attributes_hdl                                                                          &
619   ( domaingroup_hdl, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,      &
620     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,                   &
621     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,                 &
622     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
623
624   END SUBROUTINE set_domaingroup_attributes_id
625   
626   SUBROUTINE set_domaingroup_attributes_hdl                                                                       &
627   ( domaingroup_hdl,name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,       &
628     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,                   &
629     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,                 &
630     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
631      IMPLICIT NONE
632      TYPE(XDomainGroupHandle)                   , INTENT(IN) :: domaingroup_hdl
633      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
634      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
635      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
636      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
637      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
638      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
639      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
640      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
641      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
642      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
643      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
644      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
645      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
646      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__! (size(mask_,1),size(mask,2))
647      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
648      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
649      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
650      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
651      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
652      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
653      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
654      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
655      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
656      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
657      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
658      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
659      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
660      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
661      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
662      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
663      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
664      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
665     
666      IF (PRESENT(name_))             THEN
667         CALL cxios_set_domaingroup_name(domaingroup_hdl%daddr, name_, len(name_))
668      END IF
669      IF (PRESENT(standard_name_))    THEN
670         CALL cxios_set_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_))
671      END IF
672      IF (PRESENT(long_name_))        THEN
673         CALL cxios_set_domaingroup_long_name(domaingroup_hdl%daddr, long_name_, len(long_name_))
674       END IF
675      IF (PRESENT(domain_group_ref_)) THEN
676         CALL cxios_set_domaingroup_domain_group_ref(domaingroup_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
677      END IF
678      IF (PRESENT(ni_glo_))           THEN
679         CALL cxios_set_domaingroup_ni_glo(domaingroup_hdl%daddr, ni_glo_)
680      END IF
681      IF (PRESENT(nj_glo_))           THEN
682         CALL cxios_set_domaingroup_nj_glo(domaingroup_hdl%daddr, nj_glo_)
683      END IF
684      IF (PRESENT(ibegin_))           THEN
685         CALL cxios_set_domaingroup_ibegin(domaingroup_hdl%daddr, ibegin_)
686       END IF
687      IF (PRESENT(iend_))             THEN
688         CALL cxios_set_domaingroup_iend(domaingroup_hdl%daddr, iend_)
689      END IF
690      IF (PRESENT(ni_))               THEN
691         CALL cxios_set_domaingroup_ni(domaingroup_hdl%daddr, ni_)
692      END IF
693      IF (PRESENT(jbegin_))           THEN
694         CALL cxios_set_domaingroup_jbegin(domaingroup_hdl%daddr, jbegin_)
695      END IF
696      IF (PRESENT(jend_))             THEN
697         CALL cxios_set_domaingroup_jend(domaingroup_hdl%daddr, jend_)
698      END IF
699      IF (PRESENT(nj_))               THEN
700         CALL cxios_set_domaingroup_nj(domaingroup_hdl%daddr, nj_)
701      END IF
702      IF (PRESENT(mask_))             THEN
703         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
704         mask__(:,:) = mask_(:,:)
705         CALL cxios_set_domaingroup_mask(domaingroup_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
706         DEALLOCATE(mask__)
707      END IF
708      IF (PRESENT(data_dim_))         THEN
709         CALL cxios_set_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_)
710      END IF
711      IF (PRESENT(data_ni_))          THEN
712         CALL cxios_set_domaingroup_data_ni(domaingroup_hdl%daddr, data_ni_)
713      END IF
714      IF (PRESENT(data_nj_))          THEN
715         CALL cxios_set_domaingroup_data_nj(domaingroup_hdl%daddr, data_nj_)
716      END IF
717      IF (PRESENT(data_ibegin_))      THEN
718         CALL cxios_set_domaingroup_data_ibegin(domaingroup_hdl%daddr, data_ibegin_)
719      END IF
720      IF (PRESENT(data_jbegin_))      THEN
721         CALL cxios_set_domaingroup_data_jbegin(domaingroup_hdl%daddr, data_jbegin_)
722      END IF
723      IF (PRESENT(zoom_ni_))          THEN
724         CALL cxios_set_domaingroup_zoom_ni(domaingroup_hdl%daddr, zoom_ni_)
725      END IF
726      IF (PRESENT(zoom_nj_))          THEN
727       CALL cxios_set_domaingroup_zoom_nj(domaingroup_hdl%daddr, zoom_nj_)
728      END IF
729      IF (PRESENT(zoom_ibegin_))      THEN
730         CALL cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl%daddr, zoom_ibegin_)
731      END IF
732      IF (PRESENT(zoom_jbegin_))      THEN
733         CALL cxios_set_domaingroup_zoom_jbegin(domaingroup_hdl%daddr, zoom_jbegin_)
734      END IF
735      IF (PRESENT(zoom_ni_loc_))      THEN
736         CALL cxios_set_domaingroup_zoom_ni_loc(domaingroup_hdl%daddr, zoom_ni_loc_)
737      END IF   
738      IF (PRESENT(zoom_nj_loc_))      THEN
739         CALL cxios_set_domaingroup_zoom_nj_loc(domaingroup_hdl%daddr, zoom_nj_loc_)
740      END IF
741      IF (PRESENT(zoom_ibegin_loc_))  THEN
742         CALL cxios_set_domaingroup_zoom_ibegin_loc(domaingroup_hdl%daddr, zoom_ibegin_loc_)
743      END IF
744      IF (PRESENT(zoom_jbegin_loc_))  THEN
745         CALL cxios_set_domaingroup_zoom_jbegin_loc(domaingroup_hdl%daddr, zoom_jbegin_loc_)
746      END IF
747      IF (PRESENT(data_n_index_))     THEN
748         CALL cxios_set_domaingroup_data_n_index(domaingroup_hdl%daddr, data_n_index_)
749      END IF
750      IF (PRESENT(data_i_index_))     THEN
751         CALL cxios_set_domaingroup_data_i_index(domaingroup_hdl%daddr, data_i_index_, size(data_i_index_, 1))
752      END IF
753      IF (PRESENT(data_j_index_))     THEN
754         CALL cxios_set_domaingroup_data_j_index(domaingroup_hdl%daddr, data_j_index_, size(data_j_index_, 1))
755      END IF
756      IF (PRESENT(lonvalue_))         THEN
757         CALL cxios_set_domaingroup_lonvalue(domaingroup_hdl%daddr, lonvalue_, size(lonvalue_, 1))
758      END IF
759      IF (PRESENT(latvalue_))         THEN
760         CALL cxios_set_domaingroup_latvalue(domaingroup_hdl%daddr, latvalue_, size(latvalue_, 1))
761      END IF
762
763   END SUBROUTINE set_domaingroup_attributes_hdl
764   
765   SUBROUTINE set_domain_attributes_id                                                                   &
766   ( domain_id, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,  &
767     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,         &
768     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,       &
769     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
770      IMPLICIT NONE
771      TYPE(XDomainHandle)                                   :: domain_hdl
772      CHARACTER(len = *)                       , INTENT(IN) :: domain_id
773      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: name_
774      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: standard_name_
775      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: long_name_
776      CHARACTER(len = *)             , OPTIONAL, INTENT(IN) :: domain_group_ref_
777      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_glo_
778      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_glo_
779      INTEGER                        , OPTIONAL, INTENT(IN) :: ibegin_
780      INTEGER                        , OPTIONAL, INTENT(IN) :: iend_
781      INTEGER                        , OPTIONAL, INTENT(IN) :: ni_
782      INTEGER                        , OPTIONAL, INTENT(IN) :: jbegin_
783      INTEGER                        , OPTIONAL, INTENT(IN) :: jend_
784      INTEGER                        , OPTIONAL, INTENT(IN) :: nj_
785      LOGICAL          , dimension(*), OPTIONAL, INTENT(IN) :: mask_(:,:)
786      INTEGER                        , OPTIONAL, INTENT(IN) :: data_dim_
787      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ni_
788      INTEGER                        , OPTIONAL, INTENT(IN) :: data_nj_
789      INTEGER                        , OPTIONAL, INTENT(IN) :: data_ibegin_
790      INTEGER                        , OPTIONAL, INTENT(IN) :: data_jbegin_
791      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_
792      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_
793      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_
794      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_
795      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
796      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
797      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
798      INTEGER                        , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
799      INTEGER                        , OPTIONAL, INTENT(IN) :: data_n_index_
800      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_i_index_(:)
801      INTEGER       , dimension(*)   , OPTIONAL, INTENT(IN) :: data_j_index_(:)
802      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: lonvalue_(:)
803      REAL(kind = 8), dimension(*)   , OPTIONAL, INTENT(IN) :: latvalue_(:)
804 
805      CALL domain_handle_create(domain_hdl, domain_id)
806      CALL set_domain_attributes_hdl                                                                     &
807   ( domain_hdl, name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_, &
808     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,         &
809     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,       &
810     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
811
812   END SUBROUTINE set_domain_attributes_id
813   
814   SUBROUTINE set_domain_attributes_hdl                                                                  &
815   ( domain_hdl,name_, standard_name_, long_name_, domain_group_ref_, ni_glo_, nj_glo_, ibegin_, iend_,  &
816     ni_, jbegin_, jend_, nj_, mask_, data_dim_, data_ni_, data_nj_, data_ibegin_, data_jbegin_,         &
817     zoom_ni_, zoom_nj_, zoom_ibegin_, zoom_jbegin_, zoom_ni_loc_, zoom_nj_loc_, zoom_ibegin_loc_,       &
818     zoom_jbegin_loc_, data_n_index_, data_i_index_, data_j_index_, lonvalue_, latvalue_)
819      IMPLICIT NONE
820      TYPE(XDomainHandle)                        , INTENT(IN) :: domain_hdl
821      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: name_
822      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: standard_name_
823      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: long_name_
824      CHARACTER(len = *)               , OPTIONAL, INTENT(IN) :: domain_group_ref_
825      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_glo_
826      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_glo_
827      INTEGER                          , OPTIONAL, INTENT(IN) :: ibegin_
828      INTEGER                          , OPTIONAL, INTENT(IN) :: iend_
829      INTEGER                          , OPTIONAL, INTENT(IN) :: ni_
830      INTEGER                          , OPTIONAL, INTENT(IN) :: jbegin_
831      INTEGER                          , OPTIONAL, INTENT(IN) :: jend_
832      INTEGER                          , OPTIONAL, INTENT(IN) :: nj_
833      LOGICAL          , dimension(*)  , OPTIONAL, INTENT(IN) :: mask_(:,:)
834      LOGICAL(kind = 1), dimension(:,:), ALLOCATABLE          :: mask__
835      INTEGER                          , OPTIONAL, INTENT(IN) :: data_dim_
836      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ni_
837      INTEGER                          , OPTIONAL, INTENT(IN) :: data_nj_
838      INTEGER                          , OPTIONAL, INTENT(IN) :: data_ibegin_
839      INTEGER                          , OPTIONAL, INTENT(IN) :: data_jbegin_
840      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_
841      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_
842      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_
843      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_
844      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ni_loc_
845      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
846      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_
847      INTEGER                          , OPTIONAL, INTENT(IN) :: zoom_jbegin_loc_
848      INTEGER                          , OPTIONAL, INTENT(IN) :: data_n_index_
849      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_i_index_(:)
850      INTEGER       , dimension(*)     , OPTIONAL, INTENT(IN) :: data_j_index_(:)
851      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: lonvalue_(:)
852      REAL(kind = 8), dimension(*)     , OPTIONAL, INTENT(IN) :: latvalue_(:)
853      IF (PRESENT(name_))             THEN
854         CALL cxios_set_domain_name(domain_hdl%daddr, name_, len(name_))
855      END IF
856      IF (PRESENT(standard_name_))    THEN
857         CALL cxios_set_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_))
858      END IF
859      IF (PRESENT(long_name_))        THEN
860         CALL cxios_set_domain_long_name(domain_hdl%daddr, long_name_, len(long_name_))
861       END IF
862      IF (PRESENT(domain_group_ref_)) THEN
863         CALL cxios_set_domain_domain_group_ref(domain_hdl%daddr, domain_group_ref_, len(domain_group_ref_))
864      END IF
865      IF (PRESENT(ni_glo_))           THEN
866         CALL cxios_set_domain_ni_glo(domain_hdl%daddr, ni_glo_)
867      END IF
868      IF (PRESENT(nj_glo_))           THEN
869         CALL cxios_set_domain_nj_glo(domain_hdl%daddr, nj_glo_)
870      END IF
871      IF (PRESENT(ibegin_))           THEN
872         CALL cxios_set_domain_ibegin(domain_hdl%daddr, ibegin_)
873       END IF
874      IF (PRESENT(iend_))             THEN
875         CALL cxios_set_domain_iend(domain_hdl%daddr, iend_)
876      END IF
877      IF (PRESENT(ni_))               THEN
878         CALL cxios_set_domain_ni(domain_hdl%daddr, ni_)
879      END IF
880      IF (PRESENT(jbegin_))           THEN
881         CALL cxios_set_domain_jbegin(domain_hdl%daddr, jbegin_)
882      END IF
883      IF (PRESENT(jend_))             THEN
884         CALL cxios_set_domain_jend(domain_hdl%daddr, jend_)
885      END IF
886      IF (PRESENT(nj_))               THEN
887         CALL cxios_set_domain_nj(domain_hdl%daddr, nj_)
888      END IF
889      IF (PRESENT(mask_))             THEN
890         ALLOCATE(mask__(size(mask_, 1), size(mask_, 2)))
891         mask__(:,:) = mask_(:,:)
892         CALL cxios_set_domain_mask(domain_hdl%daddr, mask__, size(mask_, 1), size(mask_, 2))         
893         DEALLOCATE(mask__)
894      END IF
895      IF (PRESENT(data_dim_))         THEN
896         CALL cxios_set_domain_data_dim(domain_hdl%daddr, data_dim_)
897      END IF
898      IF (PRESENT(data_ni_))          THEN
899         CALL cxios_set_domain_data_ni(domain_hdl%daddr, data_ni_)
900      END IF
901      IF (PRESENT(data_nj_))          THEN
902         CALL cxios_set_domain_data_nj(domain_hdl%daddr, data_nj_)
903      END IF
904      IF (PRESENT(data_ibegin_))      THEN
905         CALL cxios_set_domain_data_ibegin(domain_hdl%daddr, data_ibegin_)
906      END IF
907      IF (PRESENT(data_jbegin_))      THEN
908         CALL cxios_set_domain_data_jbegin(domain_hdl%daddr, data_jbegin_)
909      END IF
910      IF (PRESENT(zoom_ni_))          THEN
911         CALL cxios_set_domain_zoom_ni(domain_hdl%daddr, zoom_ni_)
912      END IF
913      IF (PRESENT(zoom_nj_))          THEN
914       CALL cxios_set_domain_zoom_nj(domain_hdl%daddr, zoom_nj_)
915      END IF
916      IF (PRESENT(zoom_ibegin_))      THEN
917         CALL cxios_set_domain_zoom_ibegin(domain_hdl%daddr, zoom_ibegin_)
918      END IF
919      IF (PRESENT(zoom_jbegin_))      THEN
920         CALL cxios_set_domain_zoom_jbegin(domain_hdl%daddr, zoom_jbegin_)
921      END IF
922      IF (PRESENT(zoom_ni_loc_))      THEN
923         CALL cxios_set_domain_zoom_ni_loc(domain_hdl%daddr, zoom_ni_loc_)
924      END IF   
925      IF (PRESENT(zoom_nj_loc_))      THEN
926         CALL cxios_set_domain_zoom_nj_loc(domain_hdl%daddr, zoom_nj_loc_)
927      END IF
928      IF (PRESENT(zoom_ibegin_loc_))  THEN
929         CALL cxios_set_domain_zoom_ibegin_loc(domain_hdl%daddr, zoom_ibegin_loc_)
930      END IF
931      IF (PRESENT(zoom_jbegin_loc_))  THEN
932         CALL cxios_set_domain_zoom_jbegin_loc(domain_hdl%daddr, zoom_jbegin_loc_)
933      END IF
934      IF (PRESENT(data_n_index_))     THEN
935         CALL cxios_set_domain_data_n_index(domain_hdl%daddr, data_n_index_)
936      END IF
937      IF (PRESENT(data_i_index_))     THEN
938         CALL cxios_set_domain_data_i_index(domain_hdl%daddr, data_i_index_, size(data_i_index_, 1))
939      END IF
940      IF (PRESENT(data_j_index_))     THEN
941         CALL cxios_set_domain_data_j_index(domain_hdl%daddr, data_j_index_, size(data_j_index_, 1))
942      END IF
943      IF (PRESENT(lonvalue_))         THEN
944         CALL cxios_set_domain_lonvalue(domain_hdl%daddr, lonvalue_, size(lonvalue_, 1))
945      END IF
946      IF (PRESENT(latvalue_))         THEN
947         CALL cxios_set_domain_latvalue(domain_hdl%daddr, latvalue_, size(latvalue_, 1))
948      END IF
949
950   END SUBROUTINE set_domain_attributes_hdl
951   
952   SUBROUTINE domain_handle_create(ret, idt)
953      IMPLICIT NONE
954      TYPE(XDomainHandle), INTENT(OUT):: ret
955      CHARACTER(len = *) , INTENT(IN) :: idt     
956      CALL cxios_domain_handle_create(ret%daddr, idt, len(idt))           
957   END SUBROUTINE domain_handle_create
958   
959   SUBROUTINE domaingroup_handle_create(ret, idt)
960      IMPLICIT NONE
961      TYPE(XDomainGroupHandle), INTENT(OUT):: ret
962      CHARACTER(len = *)      , INTENT(IN) :: idt     
963      CALL cxios_domaingroup_handle_create(ret%daddr, idt, len(idt))           
964   END SUBROUTINE domaingroup_handle_create
965
966   LOGICAL FUNCTION domain_valid_id(idt)
967      IMPLICIT NONE
968      CHARACTER(len  = *)    , INTENT(IN) :: idt
969      LOGICAL  (kind = 1)                 :: val
970      CALL cxios_domain_valid_id(val, idt, len(idt));
971      domain_valid_id = val
972   END FUNCTION  domain_valid_id
973
974   LOGICAL FUNCTION domaingroup_valid_id(idt)
975      IMPLICIT NONE
976      CHARACTER(len  = *)    , INTENT(IN) :: idt
977      LOGICAL  (kind = 1)                 :: val
978      CALL cxios_domaingroup_valid_id(val, idt, len(idt));
979      domaingroup_valid_id = val
980   END FUNCTION  domaingroup_valid_id
981   
982END MODULE IDOMAIN
Note: See TracBrowser for help on using the repository browser.