source: XIOS/trunk/src/interface/fortran_attr/igrid_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: 11.9 KB
Line 
1! * ************************************************************************** *
2! *               Interface auto generated - do not modify                     *
3! * ************************************************************************** *
4#include "xios_fortran_prefix.hpp"
5
6MODULE igrid_attr
7  USE, INTRINSIC :: ISO_C_BINDING
8  USE igrid
9  USE grid_interface_attr
10 
11CONTAINS
12 
13  SUBROUTINE xios(set_grid_attr)  &
14    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name )
15   
16    IMPLICIT NONE
17      TYPE(txios(grid))  :: grid_hdl
18      CHARACTER(LEN=*), INTENT(IN) ::grid_id
19      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder(:)
20      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
21      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
22      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
23      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
24      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
25      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
26      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
27      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
28      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
29     
30      CALL xios(get_grid_handle)(grid_id,grid_hdl)
31      CALL xios(set_grid_attr_hdl_)   &
32      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
33   
34  END SUBROUTINE xios(set_grid_attr)
35 
36  SUBROUTINE xios(set_grid_attr_hdl)  &
37    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
38   
39    IMPLICIT NONE
40      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
41      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder(:)
42      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
43      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
44      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1(:)
45      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
46      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2(:,:)
47      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
48      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3(:,:,:)
49      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
50      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
51     
52      CALL xios(set_grid_attr_hdl_)  &
53      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
54   
55  END SUBROUTINE xios(set_grid_attr_hdl)
56 
57  SUBROUTINE xios(set_grid_attr_hdl_)   &
58    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ )
59   
60    IMPLICIT NONE
61      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
62      LOGICAL  , OPTIONAL, INTENT(IN) :: axisDomainOrder_(:)
63      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:)
64      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
65      LOGICAL  , OPTIONAL, INTENT(IN) :: mask1_(:)
66      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
67      LOGICAL  , OPTIONAL, INTENT(IN) :: mask2_(:,:)
68      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
69      LOGICAL  , OPTIONAL, INTENT(IN) :: mask3_(:,:,:)
70      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
71      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
72     
73      IF (PRESENT(axisDomainOrder_)) THEN
74        ALLOCATE(axisDomainOrder__tmp(size(axisDomainOrder_,1)))
75        axisDomainOrder__tmp=axisDomainOrder_
76        CALL cxios_set_grid_axisDomainOrder(grid_hdl%daddr, axisDomainOrder__tmp,size(axisDomainOrder_,1))
77      ENDIF
78     
79      IF (PRESENT(description_)) THEN
80        CALL cxios_set_grid_description(grid_hdl%daddr, description_, len(description_))
81      ENDIF
82     
83      IF (PRESENT(mask1_)) THEN
84        ALLOCATE(mask1__tmp(size(mask1_,1)))
85        mask1__tmp=mask1_
86        CALL cxios_set_grid_mask1(grid_hdl%daddr, mask1__tmp,size(mask1_,1))
87      ENDIF
88     
89      IF (PRESENT(mask2_)) THEN
90        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2)))
91        mask2__tmp=mask2_
92        CALL cxios_set_grid_mask2(grid_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2))
93      ENDIF
94     
95      IF (PRESENT(mask3_)) THEN
96        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3)))
97        mask3__tmp=mask3_
98        CALL cxios_set_grid_mask3(grid_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3))
99      ENDIF
100     
101      IF (PRESENT(name_)) THEN
102        CALL cxios_set_grid_name(grid_hdl%daddr, name_, len(name_))
103      ENDIF
104     
105     
106   
107  END SUBROUTINE xios(set_grid_attr_hdl_)
108 
109  SUBROUTINE xios(get_grid_attr)  &
110    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name )
111   
112    IMPLICIT NONE
113      TYPE(txios(grid))  :: grid_hdl
114      CHARACTER(LEN=*), INTENT(IN) ::grid_id
115      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder(:)
116      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
117      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
118      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
119      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
120      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
121      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
122      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
123      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
124      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
125     
126      CALL xios(get_grid_handle)(grid_id,grid_hdl)
127      CALL xios(get_grid_attr_hdl_)   &
128      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
129   
130  END SUBROUTINE xios(get_grid_attr)
131 
132  SUBROUTINE xios(get_grid_attr_hdl)  &
133    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
134   
135    IMPLICIT NONE
136      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
137      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder(:)
138      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder_tmp(:)
139      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
140      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1(:)
141      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1_tmp(:)
142      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2(:,:)
143      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2_tmp(:,:)
144      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3(:,:,:)
145      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3_tmp(:,:,:)
146      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
147     
148      CALL xios(get_grid_attr_hdl_)  &
149      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
150   
151  END SUBROUTINE xios(get_grid_attr_hdl)
152 
153  SUBROUTINE xios(get_grid_attr_hdl_)   &
154    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ )
155   
156    IMPLICIT NONE
157      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
158      LOGICAL  , OPTIONAL, INTENT(OUT) :: axisDomainOrder_(:)
159      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: axisDomainOrder__tmp(:)
160      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
161      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask1_(:)
162      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask1__tmp(:)
163      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask2_(:,:)
164      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask2__tmp(:,:)
165      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask3_(:,:,:)
166      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask3__tmp(:,:,:)
167      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
168     
169      IF (PRESENT(axisDomainOrder_)) THEN
170        ALLOCATE(axisDomainOrder__tmp(size(axisDomainOrder_,1)))
171        CALL cxios_get_grid_axisDomainOrder(grid_hdl%daddr, axisDomainOrder__tmp,size(axisDomainOrder_,1))
172        axisDomainOrder_=axisDomainOrder__tmp
173      ENDIF
174     
175      IF (PRESENT(description_)) THEN
176        CALL cxios_get_grid_description(grid_hdl%daddr, description_, len(description_))
177      ENDIF
178     
179      IF (PRESENT(mask1_)) THEN
180        ALLOCATE(mask1__tmp(size(mask1_,1)))
181        CALL cxios_get_grid_mask1(grid_hdl%daddr, mask1__tmp,size(mask1_,1))
182        mask1_=mask1__tmp
183      ENDIF
184     
185      IF (PRESENT(mask2_)) THEN
186        ALLOCATE(mask2__tmp(size(mask2_,1),size(mask2_,2)))
187        CALL cxios_get_grid_mask2(grid_hdl%daddr, mask2__tmp,size(mask2_,1),size(mask2_,2))
188        mask2_=mask2__tmp
189      ENDIF
190     
191      IF (PRESENT(mask3_)) THEN
192        ALLOCATE(mask3__tmp(size(mask3_,1),size(mask3_,2),size(mask3_,3)))
193        CALL cxios_get_grid_mask3(grid_hdl%daddr, mask3__tmp,size(mask3_,1),size(mask3_,2),size(mask3_,3))
194        mask3_=mask3__tmp
195      ENDIF
196     
197      IF (PRESENT(name_)) THEN
198        CALL cxios_get_grid_name(grid_hdl%daddr, name_, len(name_))
199      ENDIF
200     
201     
202   
203  END SUBROUTINE xios(get_grid_attr_hdl_)
204 
205  SUBROUTINE xios(is_defined_grid_attr)  &
206    ( grid_id, axisDomainOrder, description, mask1, mask2, mask3, name )
207   
208    IMPLICIT NONE
209      TYPE(txios(grid))  :: grid_hdl
210      CHARACTER(LEN=*), INTENT(IN) ::grid_id
211      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder
212      LOGICAL(KIND=C_BOOL) :: axisDomainOrder_tmp
213      LOGICAL, OPTIONAL, INTENT(OUT) :: description
214      LOGICAL(KIND=C_BOOL) :: description_tmp
215      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
216      LOGICAL(KIND=C_BOOL) :: mask1_tmp
217      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
218      LOGICAL(KIND=C_BOOL) :: mask2_tmp
219      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
220      LOGICAL(KIND=C_BOOL) :: mask3_tmp
221      LOGICAL, OPTIONAL, INTENT(OUT) :: name
222      LOGICAL(KIND=C_BOOL) :: name_tmp
223     
224      CALL xios(get_grid_handle)(grid_id,grid_hdl)
225      CALL xios(is_defined_grid_attr_hdl_)   &
226      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
227   
228  END SUBROUTINE xios(is_defined_grid_attr)
229 
230  SUBROUTINE xios(is_defined_grid_attr_hdl)  &
231    ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
232   
233    IMPLICIT NONE
234      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
235      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder
236      LOGICAL(KIND=C_BOOL) :: axisDomainOrder_tmp
237      LOGICAL, OPTIONAL, INTENT(OUT) :: description
238      LOGICAL(KIND=C_BOOL) :: description_tmp
239      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1
240      LOGICAL(KIND=C_BOOL) :: mask1_tmp
241      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2
242      LOGICAL(KIND=C_BOOL) :: mask2_tmp
243      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3
244      LOGICAL(KIND=C_BOOL) :: mask3_tmp
245      LOGICAL, OPTIONAL, INTENT(OUT) :: name
246      LOGICAL(KIND=C_BOOL) :: name_tmp
247     
248      CALL xios(is_defined_grid_attr_hdl_)  &
249      ( grid_hdl, axisDomainOrder, description, mask1, mask2, mask3, name )
250   
251  END SUBROUTINE xios(is_defined_grid_attr_hdl)
252 
253  SUBROUTINE xios(is_defined_grid_attr_hdl_)   &
254    ( grid_hdl, axisDomainOrder_, description_, mask1_, mask2_, mask3_, name_ )
255   
256    IMPLICIT NONE
257      TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
258      LOGICAL, OPTIONAL, INTENT(OUT) :: axisDomainOrder_
259      LOGICAL(KIND=C_BOOL) :: axisDomainOrder__tmp
260      LOGICAL, OPTIONAL, INTENT(OUT) :: description_
261      LOGICAL(KIND=C_BOOL) :: description__tmp
262      LOGICAL, OPTIONAL, INTENT(OUT) :: mask1_
263      LOGICAL(KIND=C_BOOL) :: mask1__tmp
264      LOGICAL, OPTIONAL, INTENT(OUT) :: mask2_
265      LOGICAL(KIND=C_BOOL) :: mask2__tmp
266      LOGICAL, OPTIONAL, INTENT(OUT) :: mask3_
267      LOGICAL(KIND=C_BOOL) :: mask3__tmp
268      LOGICAL, OPTIONAL, INTENT(OUT) :: name_
269      LOGICAL(KIND=C_BOOL) :: name__tmp
270     
271      IF (PRESENT(axisDomainOrder_)) THEN
272        axisDomainOrder__tmp=cxios_is_defined_grid_axisDomainOrder(grid_hdl%daddr)
273        axisDomainOrder_=axisDomainOrder__tmp
274      ENDIF
275     
276      IF (PRESENT(description_)) THEN
277        description__tmp=cxios_is_defined_grid_description(grid_hdl%daddr)
278        description_=description__tmp
279      ENDIF
280     
281      IF (PRESENT(mask1_)) THEN
282        mask1__tmp=cxios_is_defined_grid_mask1(grid_hdl%daddr)
283        mask1_=mask1__tmp
284      ENDIF
285     
286      IF (PRESENT(mask2_)) THEN
287        mask2__tmp=cxios_is_defined_grid_mask2(grid_hdl%daddr)
288        mask2_=mask2__tmp
289      ENDIF
290     
291      IF (PRESENT(mask3_)) THEN
292        mask3__tmp=cxios_is_defined_grid_mask3(grid_hdl%daddr)
293        mask3_=mask3__tmp
294      ENDIF
295     
296      IF (PRESENT(name_)) THEN
297        name__tmp=cxios_is_defined_grid_name(grid_hdl%daddr)
298        name_=name__tmp
299      ENDIF
300     
301     
302   
303  END SUBROUTINE xios(is_defined_grid_attr_hdl_)
304 
305END MODULE igrid_attr
Note: See TracBrowser for help on using the repository browser.