source: XIOS/trunk/src/interface/fortran_attr/igridgroup_attr.F90 @ 569

Last change on this file since 569 was 567, checked in by mhnguyen, 9 years ago

Implementing a grid formed by only one axis or group of axis

+) Add several new attributes to axis. From now on, each axis can be distributed on client side
+) Modify mask of grid to make it more flexible to different dimension
+) Fix some bugs relating to calculation of local data index on client
+) Clean some redundant codes

Test
+) On Curie, only test_new_features.f90
+) Test cases:

  • Grid composed of: 1 domain and 1 axis, 3 axis, 1 axis
  • Mode: Attached and connected
  • No of client-server: 6-2(Connected), 2 (Attached)

+) All tests passed and results are correct

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 13.7 KB
Line 
1! * ************************************************************************** *
2! *               Interface auto generated - do not modify                     *
3! * ************************************************************************** *
4#include "xios_fortran_prefix.hpp"
5
6MODULE igridgroup_attr
7  USE, INTRINSIC :: ISO_C_BINDING
8  USE igrid
9  USE gridgroup_interface_attr
10 
11CONTAINS
12 
13  SUBROUTINE xios(set_gridgroup_attr)  &
14    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
15   
16    IMPLICIT NONE
17      TYPE(txios(gridgroup))  :: gridgroup_hdl
18      CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
19      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder(:)
20      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
21      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
22      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
23      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
24      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
25      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
26      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
27      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
28      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
29      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
30     
31      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
32      CALL xios(set_gridgroup_attr_hdl_)   &
33      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
34   
35  END SUBROUTINE xios(set_gridgroup_attr)
36 
37  SUBROUTINE xios(set_gridgroup_attr_hdl)  &
38    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
39   
40    IMPLICIT NONE
41      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
42      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder(:)
43      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
44      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
45      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
46      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
47      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
48      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
49      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
50      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
51      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
52      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
53     
54      CALL xios(set_gridgroup_attr_hdl_)  &
55      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
56   
57  END SUBROUTINE xios(set_gridgroup_attr_hdl)
58 
59  SUBROUTINE xios(set_gridgroup_attr_hdl_)   &
60    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
61   
62    IMPLICIT NONE
63      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
64      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder_(:)
65      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:)
66      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
67      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
68      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:)
69      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
70      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:)
71      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
72      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:)
73      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
74      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
75     
76      IF (PRESENT(axisDomainOrder_)) THEN
77        ALLOCATE(axisDomainOrder__tmp(size(axisDomainOrder_,1)))
78        axisDomainOrder__tmp=axisDomainOrder_
79        CALL cxios_set_gridgroup_axisDomainOrder(gridgroup_hdl%daddr, axisDomainOrder__tmp,size(axisDomainOrder_,1))
80      ENDIF
81     
82      IF (PRESENT(description_)) THEN
83        CALL cxios_set_gridgroup_description(gridgroup_hdl%daddr, description_, len(description_))
84      ENDIF
85     
86      IF (PRESENT(group_ref_)) THEN
87        CALL cxios_set_gridgroup_group_ref(gridgroup_hdl%daddr, group_ref_, len(group_ref_))
88      ENDIF
89     
90      IF (PRESENT(mask1_)) THEN
91        ALLOCATE(mask1__tmp(size(mask1_,1)))
92        mask1__tmp=mask1_
93        CALL cxios_set_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp,size(mask1_,1))
94      ENDIF
95     
96      IF (PRESENT(mask2_)) THEN
97        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2)))
98        mask2__tmp=mask2_
99        CALL cxios_set_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2))
100      ENDIF
101     
102      IF (PRESENT(mask3_)) THEN
103        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3)))
104        mask3__tmp=mask3_
105        CALL cxios_set_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3))
106      ENDIF
107     
108      IF (PRESENT(name_)) THEN
109        CALL cxios_set_gridgroup_name(gridgroup_hdl%daddr, name_, len(name_))
110      ENDIF
111     
112     
113   
114  END SUBROUTINE xios(set_gridgroup_attr_hdl_)
115 
116  SUBROUTINE xios(get_gridgroup_attr)  &
117    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
118   
119    IMPLICIT NONE
120      TYPE(txios(gridgroup))  :: gridgroup_hdl
121      CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
122      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder(:)
123      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
124      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
125      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
126      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
127      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
128      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
129      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
130      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
131      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
132      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
133     
134      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
135      CALL xios(get_gridgroup_attr_hdl_)   &
136      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
137   
138  END SUBROUTINE xios(get_gridgroup_attr)
139 
140  SUBROUTINE xios(get_gridgroup_attr_hdl)  &
141    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
142   
143    IMPLICIT NONE
144      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
145      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder(:)
146      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
147      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
148      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
149      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
150      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
151      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
152      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
153      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
154      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
155      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
156     
157      CALL xios(get_gridgroup_attr_hdl_)  &
158      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
159   
160  END SUBROUTINE xios(get_gridgroup_attr_hdl)
161 
162  SUBROUTINE xios(get_gridgroup_attr_hdl_)   &
163    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
164   
165    IMPLICIT NONE
166      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
167      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder_(:)
168      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:)
169      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
170      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
171      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:)
172      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
173      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:)
174      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
175      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:)
176      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
177      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
178     
179      IF (PRESENT(axisDomainOrder_)) THEN
180        ALLOCATE(axisDomainOrder__tmp(size(axisDomainOrder_,1)))
181        CALL cxios_get_gridgroup_axisDomainOrder(gridgroup_hdl%daddr, axisDomainOrder__tmp,size(axisDomainOrder_,1))
182        axisDomainOrder_=axisDomainOrder__tmp
183      ENDIF
184     
185      IF (PRESENT(description_)) THEN
186        CALL cxios_get_gridgroup_description(gridgroup_hdl%daddr, description_, len(description_))
187      ENDIF
188     
189      IF (PRESENT(group_ref_)) THEN
190        CALL cxios_get_gridgroup_group_ref(gridgroup_hdl%daddr, group_ref_, len(group_ref_))
191      ENDIF
192     
193      IF (PRESENT(mask1_)) THEN
194        ALLOCATE(mask1__tmp(size(mask1_,1)))
195        CALL cxios_get_gridgroup_mask1(gridgroup_hdl%daddr, mask1__tmp,size(mask1_,1))
196        mask1_=mask1__tmp
197      ENDIF
198     
199      IF (PRESENT(mask2_)) THEN
200        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2)))
201        CALL cxios_get_gridgroup_mask2(gridgroup_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2))
202        mask2_=mask2__tmp
203      ENDIF
204     
205      IF (PRESENT(mask3_)) THEN
206        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3)))
207        CALL cxios_get_gridgroup_mask3(gridgroup_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3))
208        mask3_=mask3__tmp
209      ENDIF
210     
211      IF (PRESENT(name_)) THEN
212        CALL cxios_get_gridgroup_name(gridgroup_hdl%daddr, name_, len(name_))
213      ENDIF
214     
215     
216   
217  END SUBROUTINE xios(get_gridgroup_attr_hdl_)
218 
219  SUBROUTINE xios(is_defined_gridgroup_attr)  &
220    ( gridgroup_id, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
221   
222    IMPLICIT NONE
223      TYPE(txios(gridgroup))  :: gridgroup_hdl
224      CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
225      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder
226      LOGICAL(KIND=C_BOOL) :: axisDomainOrder_tmp
227      LOGICAL, OPTIONAL, INTENT(OUT) :: description
228      LOGICAL(KIND=C_BOOL) :: description_tmp
229      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
230      LOGICAL(KIND=C_BOOL) :: group_ref_tmp
231      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
232      LOGICAL(KIND=C_BOOL) :: mask1_tmp
233      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
234      LOGICAL(KIND=C_BOOL) :: mask2_tmp
235      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
236      LOGICAL(KIND=C_BOOL) :: mask3_tmp
237      LOGICAL, OPTIONAL, INTENT(OUT) :: name
238      LOGICAL(KIND=C_BOOL) :: name_tmp
239     
240      CALL xios(get_gridgroup_handle)(gridgroup_id,gridgroup_hdl)
241      CALL xios(is_defined_gridgroup_attr_hdl_)   &
242      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
243   
244  END SUBROUTINE xios(is_defined_gridgroup_attr)
245 
246  SUBROUTINE xios(is_defined_gridgroup_attr_hdl)  &
247    ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
248   
249    IMPLICIT NONE
250      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
251      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder
252      LOGICAL(KIND=C_BOOL) :: axisDomainOrder_tmp
253      LOGICAL, OPTIONAL, INTENT(OUT) :: description
254      LOGICAL(KIND=C_BOOL) :: description_tmp
255      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
256      LOGICAL(KIND=C_BOOL) :: group_ref_tmp
257      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
258      LOGICAL(KIND=C_BOOL) :: mask1_tmp
259      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
260      LOGICAL(KIND=C_BOOL) :: mask2_tmp
261      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
262      LOGICAL(KIND=C_BOOL) :: mask3_tmp
263      LOGICAL, OPTIONAL, INTENT(OUT) :: name
264      LOGICAL(KIND=C_BOOL) :: name_tmp
265     
266      CALL xios(is_defined_gridgroup_attr_hdl_)  &
267      ( gridgroup_hdl, axisDomainOrder, description, group_ref, mask1, mask2, mask3, name )
268   
269  END SUBROUTINE xios(is_defined_gridgroup_attr_hdl)
270 
271  SUBROUTINE xios(is_defined_gridgroup_attr_hdl_)   &
272    ( gridgroup_hdl, axisDomainOrder_, description_, group_ref_, mask1_, mask2_, mask3_, name_ )
273   
274    IMPLICIT NONE
275      TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
276      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder_
277      LOGICAL(KIND=C_BOOL) :: axisDomainOrder__tmp
278      LOGICAL, OPTIONAL, INTENT(OUT) :: description_
279      LOGICAL(KIND=C_BOOL) :: description__tmp
280      LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
281      LOGICAL(KIND=C_BOOL) :: group_ref__tmp
282      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_
283      LOGICAL(KIND=C_BOOL) :: mask1__tmp
284      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_
285      LOGICAL(KIND=C_BOOL) :: mask2__tmp
286      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_
287      LOGICAL(KIND=C_BOOL) :: mask3__tmp
288      LOGICAL, OPTIONAL, INTENT(OUT) :: name_
289      LOGICAL(KIND=C_BOOL) :: name__tmp
290     
291      IF (PRESENT(axisDomainOrder_)) THEN
292        axisDomainOrder__tmp=cxios_is_defined_gridgroup_axisDomainOrder(gridgroup_hdl%daddr)
293        axisDomainOrder_=axisDomainOrder__tmp
294      ENDIF
295     
296      IF (PRESENT(description_)) THEN
297        description__tmp=cxios_is_defined_gridgroup_description(gridgroup_hdl%daddr)
298        description_=description__tmp
299      ENDIF
300     
301      IF (PRESENT(group_ref_)) THEN
302        group_ref__tmp=cxios_is_defined_gridgroup_group_ref(gridgroup_hdl%daddr)
303        group_ref_=group_ref__tmp
304      ENDIF
305     
306      IF (PRESENT(mask1_)) THEN
307        mask1__tmp=cxios_is_defined_gridgroup_mask1(gridgroup_hdl%daddr)
308        mask1_=mask1__tmp
309      ENDIF
310     
311      IF (PRESENT(mask2_)) THEN
312        mask2__tmp=cxios_is_defined_gridgroup_mask2(gridgroup_hdl%daddr)
313        mask2_=mask2__tmp
314      ENDIF
315     
316      IF (PRESENT(mask3_)) THEN
317        mask3__tmp=cxios_is_defined_gridgroup_mask3(gridgroup_hdl%daddr)
318        mask3_=mask3__tmp
319      ENDIF
320     
321      IF (PRESENT(name_)) THEN
322        name__tmp=cxios_is_defined_gridgroup_name(gridgroup_hdl%daddr)
323        name_=name__tmp
324      ENDIF
325     
326     
327   
328  END SUBROUTINE xios(is_defined_gridgroup_attr_hdl_)
329 
330END MODULE igridgroup_attr
Note: See TracBrowser for help on using the repository browser.