Yet Another eXchange Tool  DO_NOT_EDIT_HERE
xt_redist_int_i2.f90
Go to the documentation of this file.
1 
13 
14 !
15 ! Keywords:
16 ! Maintainer: Jörg Behrens <behrens@dkrz.de>
17 ! Moritz Hanke <hanke@dkrz.de>
18 ! Thomas Jahns <jahns@dkrz.de>
19 ! URL: https://redmine.dkrz.de/doc/yaxt/html/index.html
20 !
21 ! Redistribution and use in source and binary forms, with or without
22 ! modification, are permitted provided that the following conditions are
23 ! met:
24 !
25 ! Redistributions of source code must retain the above copyright notice,
26 ! this list of conditions and the following disclaimer.
27 !
28 ! Redistributions in binary form must reproduce the above copyright
29 ! notice, this list of conditions and the following disclaimer in the
30 ! documentation and/or other materials provided with the distribution.
31 !
32 ! Neither the name of the DKRZ GmbH nor the names of its contributors
33 ! may be used to endorse or promote products derived from this software
34 ! without specific prior written permission.
35 !
36 ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
37 ! IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
38 ! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
39 ! PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
40 ! OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
41 ! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
42 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
43 ! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
44 ! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
45 ! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46 ! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49  USE iso_c_binding, ONLY: c_ptr, c_loc
50  IMPLICIT NONE
51  PRIVATE
52  INTEGER, PARAMETER :: pi2 = 4
53  INTEGER, PARAMETER :: i2 = selected_int_kind(pi2)
54  PUBLIC :: i2
55  INTERFACE xt_redist_s_exchange
56  MODULE PROCEDURE xt_redist_s_exchange_i2_1d
57  MODULE PROCEDURE xt_redist_s_exchange_i2_2d
58  MODULE PROCEDURE xt_redist_s_exchange_i2_3d
59  MODULE PROCEDURE xt_redist_s_exchange_i2_4d
60  MODULE PROCEDURE xt_redist_s_exchange_i2_5d
61  MODULE PROCEDURE xt_redist_s_exchange_i2_6d
62  MODULE PROCEDURE xt_redist_s_exchange_i2_7d
63  END INTERFACE xt_redist_s_exchange
64  PUBLIC :: xt_redist_s_exchange
65 CONTAINS
66 
67  ! see @ref xt_redist_s_exchange
68  SUBROUTINE xt_redist_s_exchange_i2_1d_as(redist, src_size, src_data, &
69  dst_size, dst_data)
70  TYPE(xt_redist), INTENT(in) :: redist
71  INTEGER, INTENT(in) :: src_size, dst_size
72  INTEGER(i2), TARGET, INTENT(in) :: src_data(src_size)
73  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(dst_size)
74  TYPE(c_ptr) :: src_data_cptr, dst_data_cptr
75  src_data_cptr = c_loc(src_data)
76  dst_data_cptr = c_loc(dst_data)
77  CALL xt_redist_s_exchange1(redist, src_data_cptr, dst_data_cptr)
78  END SUBROUTINE xt_redist_s_exchange_i2_1d_as
79 
80  ! see @ref xt_redist_s_exchange
81  SUBROUTINE xt_redist_s_exchange_i2_1d(redist, src_data, dst_data)
82  TYPE(xt_redist), INTENT(in) :: redist
83  INTEGER(i2), TARGET, INTENT(in) :: src_data(:)
84  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:)
85 
86  INTEGER(i2), POINTER :: src_p(:), dst_p(:)
87  INTEGER(i2), TARGET :: dummy(1)
88  INTEGER :: src_size, dst_size
89  src_size = SIZE(src_data)
90  dst_size = SIZE(dst_data)
91  IF (src_size > 0) THEN
92  src_p => src_data
93  ELSE
94  src_p => dummy
95  src_size = 1
96  END IF
97  IF (dst_size > 0) THEN
98  dst_p => dst_data
99  ELSE
100  dst_p => dummy
101  dst_size = 1
102  END IF
103  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
104  END SUBROUTINE xt_redist_s_exchange_i2_1d
105 
106  ! see @ref xt_redist_s_exchange
107  SUBROUTINE xt_redist_s_exchange_i2_2d(redist, src_data, dst_data)
108  TYPE(xt_redist), INTENT(in) :: redist
109  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:)
110  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:)
111 
112  INTEGER(i2), POINTER :: src_p(:,:), dst_p(:,:)
113  INTEGER(i2), TARGET :: dummy(1,1)
114  INTEGER :: src_size, dst_size
115  src_size = SIZE(src_data)
116  dst_size = SIZE(dst_data)
117  IF (src_size > 0) THEN
118  src_p => src_data
119  ELSE
120  src_p => dummy
121  src_size = 1
122  END IF
123  IF (dst_size > 0) THEN
124  dst_p => dst_data
125  ELSE
126  dst_p => dummy
127  dst_size = 1
128  END IF
129  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
130  END SUBROUTINE xt_redist_s_exchange_i2_2d
131 
132  ! see @ref xt_redist_s_exchange
133  SUBROUTINE xt_redist_s_exchange_i2_3d(redist, src_data, dst_data)
134  TYPE(xt_redist), INTENT(in) :: redist
135  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:,:)
136  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:,:)
137 
138  INTEGER(i2), POINTER :: src_p(:,:,:), dst_p(:,:,:)
139  INTEGER(i2), TARGET :: dummy(1,1,1)
140  INTEGER :: src_size, dst_size
141  src_size = SIZE(src_data)
142  dst_size = SIZE(dst_data)
143  IF (src_size > 0) THEN
144  src_p => src_data
145  ELSE
146  src_p => dummy
147  src_size = 1
148  END IF
149  IF (dst_size > 0) THEN
150  dst_p => dst_data
151  ELSE
152  dst_p => dummy
153  dst_size = 1
154  END IF
155  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
156  END SUBROUTINE xt_redist_s_exchange_i2_3d
157 
158  ! see @ref xt_redist_s_exchange
159  SUBROUTINE xt_redist_s_exchange_i2_4d(redist, src_data, dst_data)
160  TYPE(xt_redist), INTENT(in) :: redist
161  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:,:,:)
162  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:,:,:)
163 
164  INTEGER(i2), POINTER :: src_p(:,:,:,:), dst_p(:,:,:,:)
165  INTEGER(i2), TARGET :: dummy(1,1,1,1)
166  INTEGER :: src_size, dst_size
167  src_size = SIZE(src_data)
168  dst_size = SIZE(dst_data)
169  IF (src_size > 0) THEN
170  src_p => src_data
171  ELSE
172  src_p => dummy
173  src_size = 1
174  END IF
175  IF (dst_size > 0) THEN
176  dst_p => dst_data
177  ELSE
178  dst_p => dummy
179  dst_size = 1
180  END IF
181  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
182  END SUBROUTINE xt_redist_s_exchange_i2_4d
183 
184  ! see @ref xt_redist_s_exchange
185  SUBROUTINE xt_redist_s_exchange_i2_5d(redist, src_data, dst_data)
186  TYPE(xt_redist), INTENT(in) :: redist
187  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:,:,:,:)
188  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:,:,:,:)
189 
190  INTEGER(i2), POINTER :: src_p(:,:,:,:,:), dst_p(:,:,:,:,:)
191  INTEGER(i2), TARGET :: dummy(1,1,1,1,1)
192  INTEGER :: src_size, dst_size
193  src_size = SIZE(src_data)
194  dst_size = SIZE(dst_data)
195  IF (src_size > 0) THEN
196  src_p => src_data
197  ELSE
198  src_p => dummy
199  src_size = 1
200  END IF
201  IF (dst_size > 0) THEN
202  dst_p => dst_data
203  ELSE
204  dst_p => dummy
205  dst_size = 1
206  END IF
207  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
208  END SUBROUTINE xt_redist_s_exchange_i2_5d
209 
210  ! see @ref xt_redist_s_exchange
211  SUBROUTINE xt_redist_s_exchange_i2_6d(redist, src_data, dst_data)
212  TYPE(xt_redist), INTENT(in) :: redist
213  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:,:,:,:,:)
214  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:,:,:,:,:)
215 
216  INTEGER(i2), POINTER :: src_p(:,:,:,:,:,:), dst_p(:,:,:,:,:,:)
217  INTEGER(i2), TARGET :: dummy(1,1,1,1,1,1)
218  INTEGER :: src_size, dst_size
219  src_size = SIZE(src_data)
220  dst_size = SIZE(dst_data)
221  IF (src_size > 0) THEN
222  src_p => src_data
223  ELSE
224  src_p => dummy
225  src_size = 1
226  END IF
227  IF (dst_size > 0) THEN
228  dst_p => dst_data
229  ELSE
230  dst_p => dummy
231  dst_size = 1
232  END IF
233  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
234  END SUBROUTINE xt_redist_s_exchange_i2_6d
235 
236  ! see @ref xt_redist_s_exchange
237  SUBROUTINE xt_redist_s_exchange_i2_7d(redist, src_data, dst_data)
238  TYPE(xt_redist), INTENT(in) :: redist
239  INTEGER(i2), TARGET, INTENT(in) :: src_data(:,:,:,:,:,:,:)
240  INTEGER(i2), TARGET, INTENT(inout) :: dst_data(:,:,:,:,:,:,:)
241 
242  INTEGER(i2), POINTER :: src_p(:,:,:,:,:,:,:), dst_p(:,:,:,:,:,:,:)
243  INTEGER(i2), TARGET :: dummy(1,1,1,1,1,1,1)
244  INTEGER :: src_size, dst_size
245  src_size = SIZE(src_data)
246  dst_size = SIZE(dst_data)
247  IF (src_size > 0) THEN
248  src_p => src_data
249  ELSE
250  src_p => dummy
251  src_size = 1
252  END IF
253  IF (dst_size > 0) THEN
254  dst_p => dst_data
255  ELSE
256  dst_p => dummy
257  dst_size = 1
258  END IF
259  CALL xt_redist_s_exchange_i2_1d_as(redist, src_size, src_p, dst_size, dst_p)
260  END SUBROUTINE xt_redist_s_exchange_i2_7d
261 END MODULE xt_redist_int_i2
262 !
263 ! Local Variables:
264 ! f90-continuation-indent: 5
265 ! coding: utf-8
266 ! mode: f90
267 ! indent-tabs-mode: nil
268 ! show-trailing-whitespace: t
269 ! require-trailing-newline: t
270 ! End:
271 !
void xt_redist_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
Definition: xt_redist.c:71
integer, parameter, public i2
Definition: xt_core_f.f90:58
void xt_redist_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)
Definition: xt_redist.c:77