comparison src/fftw-3.3.3/mpi/fftw3-mpi.f03.in @ 10:37bf6b4a2645

Add FFTW3
author Chris Cannam
date Wed, 20 Mar 2013 15:35:50 +0000
parents
children
comparison
equal deleted inserted replaced
9:c0fb53affa76 10:37bf6b4a2645
1 ! Generated automatically. DO NOT EDIT!
2
3 include 'fftw3.f03'
4
5 integer(C_INTPTR_T), parameter :: FFTW_MPI_DEFAULT_BLOCK = 0
6 integer(C_INT), parameter :: FFTW_MPI_SCRAMBLED_IN = 134217728
7 integer(C_INT), parameter :: FFTW_MPI_SCRAMBLED_OUT = 268435456
8 integer(C_INT), parameter :: FFTW_MPI_TRANSPOSED_IN = 536870912
9 integer(C_INT), parameter :: FFTW_MPI_TRANSPOSED_OUT = 1073741824
10
11 type, bind(C) :: fftw_mpi_ddim
12 integer(C_INTPTR_T) n, ib, ob
13 end type fftw_mpi_ddim
14
15 interface
16 subroutine fftw_mpi_init() bind(C, name='fftw_mpi_init')
17 import
18 end subroutine fftw_mpi_init
19
20 subroutine fftw_mpi_cleanup() bind(C, name='fftw_mpi_cleanup')
21 import
22 end subroutine fftw_mpi_cleanup
23
24 integer(C_INTPTR_T) function fftw_mpi_local_size_many_transposed(rnk,n,howmany,block0,block1,comm,local_n0,local_0_start, &
25 local_n1,local_1_start) &
26 bind(C, name='fftw_mpi_local_size_many_transposed_f03')
27 import
28 integer(C_INT), value :: rnk
29 integer(C_INTPTR_T), dimension(*), intent(in) :: n
30 integer(C_INTPTR_T), value :: howmany
31 integer(C_INTPTR_T), value :: block0
32 integer(C_INTPTR_T), value :: block1
33 integer(C_MPI_FINT), value :: comm
34 integer(C_INTPTR_T), intent(out) :: local_n0
35 integer(C_INTPTR_T), intent(out) :: local_0_start
36 integer(C_INTPTR_T), intent(out) :: local_n1
37 integer(C_INTPTR_T), intent(out) :: local_1_start
38 end function fftw_mpi_local_size_many_transposed
39
40 integer(C_INTPTR_T) function fftw_mpi_local_size_many(rnk,n,howmany,block0,comm,local_n0,local_0_start) &
41 bind(C, name='fftw_mpi_local_size_many_f03')
42 import
43 integer(C_INT), value :: rnk
44 integer(C_INTPTR_T), dimension(*), intent(in) :: n
45 integer(C_INTPTR_T), value :: howmany
46 integer(C_INTPTR_T), value :: block0
47 integer(C_MPI_FINT), value :: comm
48 integer(C_INTPTR_T), intent(out) :: local_n0
49 integer(C_INTPTR_T), intent(out) :: local_0_start
50 end function fftw_mpi_local_size_many
51
52 integer(C_INTPTR_T) function fftw_mpi_local_size_transposed(rnk,n,comm,local_n0,local_0_start,local_n1,local_1_start) &
53 bind(C, name='fftw_mpi_local_size_transposed_f03')
54 import
55 integer(C_INT), value :: rnk
56 integer(C_INTPTR_T), dimension(*), intent(in) :: n
57 integer(C_MPI_FINT), value :: comm
58 integer(C_INTPTR_T), intent(out) :: local_n0
59 integer(C_INTPTR_T), intent(out) :: local_0_start
60 integer(C_INTPTR_T), intent(out) :: local_n1
61 integer(C_INTPTR_T), intent(out) :: local_1_start
62 end function fftw_mpi_local_size_transposed
63
64 integer(C_INTPTR_T) function fftw_mpi_local_size(rnk,n,comm,local_n0,local_0_start) bind(C, name='fftw_mpi_local_size_f03')
65 import
66 integer(C_INT), value :: rnk
67 integer(C_INTPTR_T), dimension(*), intent(in) :: n
68 integer(C_MPI_FINT), value :: comm
69 integer(C_INTPTR_T), intent(out) :: local_n0
70 integer(C_INTPTR_T), intent(out) :: local_0_start
71 end function fftw_mpi_local_size
72
73 integer(C_INTPTR_T) function fftw_mpi_local_size_many_1d(n0,howmany,comm,sign,flags,local_ni,local_i_start,local_no, &
74 local_o_start) bind(C, name='fftw_mpi_local_size_many_1d_f03')
75 import
76 integer(C_INTPTR_T), value :: n0
77 integer(C_INTPTR_T), value :: howmany
78 integer(C_MPI_FINT), value :: comm
79 integer(C_INT), value :: sign
80 integer(C_INT), value :: flags
81 integer(C_INTPTR_T), intent(out) :: local_ni
82 integer(C_INTPTR_T), intent(out) :: local_i_start
83 integer(C_INTPTR_T), intent(out) :: local_no
84 integer(C_INTPTR_T), intent(out) :: local_o_start
85 end function fftw_mpi_local_size_many_1d
86
87 integer(C_INTPTR_T) function fftw_mpi_local_size_1d(n0,comm,sign,flags,local_ni,local_i_start,local_no,local_o_start) &
88 bind(C, name='fftw_mpi_local_size_1d_f03')
89 import
90 integer(C_INTPTR_T), value :: n0
91 integer(C_MPI_FINT), value :: comm
92 integer(C_INT), value :: sign
93 integer(C_INT), value :: flags
94 integer(C_INTPTR_T), intent(out) :: local_ni
95 integer(C_INTPTR_T), intent(out) :: local_i_start
96 integer(C_INTPTR_T), intent(out) :: local_no
97 integer(C_INTPTR_T), intent(out) :: local_o_start
98 end function fftw_mpi_local_size_1d
99
100 integer(C_INTPTR_T) function fftw_mpi_local_size_2d(n0,n1,comm,local_n0,local_0_start) &
101 bind(C, name='fftw_mpi_local_size_2d_f03')
102 import
103 integer(C_INTPTR_T), value :: n0
104 integer(C_INTPTR_T), value :: n1
105 integer(C_MPI_FINT), value :: comm
106 integer(C_INTPTR_T), intent(out) :: local_n0
107 integer(C_INTPTR_T), intent(out) :: local_0_start
108 end function fftw_mpi_local_size_2d
109
110 integer(C_INTPTR_T) function fftw_mpi_local_size_2d_transposed(n0,n1,comm,local_n0,local_0_start,local_n1,local_1_start) &
111 bind(C, name='fftw_mpi_local_size_2d_transposed_f03')
112 import
113 integer(C_INTPTR_T), value :: n0
114 integer(C_INTPTR_T), value :: n1
115 integer(C_MPI_FINT), value :: comm
116 integer(C_INTPTR_T), intent(out) :: local_n0
117 integer(C_INTPTR_T), intent(out) :: local_0_start
118 integer(C_INTPTR_T), intent(out) :: local_n1
119 integer(C_INTPTR_T), intent(out) :: local_1_start
120 end function fftw_mpi_local_size_2d_transposed
121
122 integer(C_INTPTR_T) function fftw_mpi_local_size_3d(n0,n1,n2,comm,local_n0,local_0_start) &
123 bind(C, name='fftw_mpi_local_size_3d_f03')
124 import
125 integer(C_INTPTR_T), value :: n0
126 integer(C_INTPTR_T), value :: n1
127 integer(C_INTPTR_T), value :: n2
128 integer(C_MPI_FINT), value :: comm
129 integer(C_INTPTR_T), intent(out) :: local_n0
130 integer(C_INTPTR_T), intent(out) :: local_0_start
131 end function fftw_mpi_local_size_3d
132
133 integer(C_INTPTR_T) function fftw_mpi_local_size_3d_transposed(n0,n1,n2,comm,local_n0,local_0_start,local_n1,local_1_start) &
134 bind(C, name='fftw_mpi_local_size_3d_transposed_f03')
135 import
136 integer(C_INTPTR_T), value :: n0
137 integer(C_INTPTR_T), value :: n1
138 integer(C_INTPTR_T), value :: n2
139 integer(C_MPI_FINT), value :: comm
140 integer(C_INTPTR_T), intent(out) :: local_n0
141 integer(C_INTPTR_T), intent(out) :: local_0_start
142 integer(C_INTPTR_T), intent(out) :: local_n1
143 integer(C_INTPTR_T), intent(out) :: local_1_start
144 end function fftw_mpi_local_size_3d_transposed
145
146 type(C_PTR) function fftw_mpi_plan_many_transpose(n0,n1,howmany,block0,block1,in,out,comm,flags) &
147 bind(C, name='fftw_mpi_plan_many_transpose_f03')
148 import
149 integer(C_INTPTR_T), value :: n0
150 integer(C_INTPTR_T), value :: n1
151 integer(C_INTPTR_T), value :: howmany
152 integer(C_INTPTR_T), value :: block0
153 integer(C_INTPTR_T), value :: block1
154 real(C_DOUBLE), dimension(*), intent(out) :: in
155 real(C_DOUBLE), dimension(*), intent(out) :: out
156 integer(C_MPI_FINT), value :: comm
157 integer(C_INT), value :: flags
158 end function fftw_mpi_plan_many_transpose
159
160 type(C_PTR) function fftw_mpi_plan_transpose(n0,n1,in,out,comm,flags) bind(C, name='fftw_mpi_plan_transpose_f03')
161 import
162 integer(C_INTPTR_T), value :: n0
163 integer(C_INTPTR_T), value :: n1
164 real(C_DOUBLE), dimension(*), intent(out) :: in
165 real(C_DOUBLE), dimension(*), intent(out) :: out
166 integer(C_MPI_FINT), value :: comm
167 integer(C_INT), value :: flags
168 end function fftw_mpi_plan_transpose
169
170 type(C_PTR) function fftw_mpi_plan_many_dft(rnk,n,howmany,block,tblock,in,out,comm,sign,flags) &
171 bind(C, name='fftw_mpi_plan_many_dft_f03')
172 import
173 integer(C_INT), value :: rnk
174 integer(C_INTPTR_T), dimension(*), intent(in) :: n
175 integer(C_INTPTR_T), value :: howmany
176 integer(C_INTPTR_T), value :: block
177 integer(C_INTPTR_T), value :: tblock
178 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
179 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
180 integer(C_MPI_FINT), value :: comm
181 integer(C_INT), value :: sign
182 integer(C_INT), value :: flags
183 end function fftw_mpi_plan_many_dft
184
185 type(C_PTR) function fftw_mpi_plan_dft(rnk,n,in,out,comm,sign,flags) bind(C, name='fftw_mpi_plan_dft_f03')
186 import
187 integer(C_INT), value :: rnk
188 integer(C_INTPTR_T), dimension(*), intent(in) :: n
189 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
190 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
191 integer(C_MPI_FINT), value :: comm
192 integer(C_INT), value :: sign
193 integer(C_INT), value :: flags
194 end function fftw_mpi_plan_dft
195
196 type(C_PTR) function fftw_mpi_plan_dft_1d(n0,in,out,comm,sign,flags) bind(C, name='fftw_mpi_plan_dft_1d_f03')
197 import
198 integer(C_INTPTR_T), value :: n0
199 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
200 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
201 integer(C_MPI_FINT), value :: comm
202 integer(C_INT), value :: sign
203 integer(C_INT), value :: flags
204 end function fftw_mpi_plan_dft_1d
205
206 type(C_PTR) function fftw_mpi_plan_dft_2d(n0,n1,in,out,comm,sign,flags) bind(C, name='fftw_mpi_plan_dft_2d_f03')
207 import
208 integer(C_INTPTR_T), value :: n0
209 integer(C_INTPTR_T), value :: n1
210 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
211 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
212 integer(C_MPI_FINT), value :: comm
213 integer(C_INT), value :: sign
214 integer(C_INT), value :: flags
215 end function fftw_mpi_plan_dft_2d
216
217 type(C_PTR) function fftw_mpi_plan_dft_3d(n0,n1,n2,in,out,comm,sign,flags) bind(C, name='fftw_mpi_plan_dft_3d_f03')
218 import
219 integer(C_INTPTR_T), value :: n0
220 integer(C_INTPTR_T), value :: n1
221 integer(C_INTPTR_T), value :: n2
222 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
223 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
224 integer(C_MPI_FINT), value :: comm
225 integer(C_INT), value :: sign
226 integer(C_INT), value :: flags
227 end function fftw_mpi_plan_dft_3d
228
229 type(C_PTR) function fftw_mpi_plan_many_r2r(rnk,n,howmany,iblock,oblock,in,out,comm,kind,flags) &
230 bind(C, name='fftw_mpi_plan_many_r2r_f03')
231 import
232 integer(C_INT), value :: rnk
233 integer(C_INTPTR_T), dimension(*), intent(in) :: n
234 integer(C_INTPTR_T), value :: howmany
235 integer(C_INTPTR_T), value :: iblock
236 integer(C_INTPTR_T), value :: oblock
237 real(C_DOUBLE), dimension(*), intent(out) :: in
238 real(C_DOUBLE), dimension(*), intent(out) :: out
239 integer(C_MPI_FINT), value :: comm
240 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
241 integer(C_INT), value :: flags
242 end function fftw_mpi_plan_many_r2r
243
244 type(C_PTR) function fftw_mpi_plan_r2r(rnk,n,in,out,comm,kind,flags) bind(C, name='fftw_mpi_plan_r2r_f03')
245 import
246 integer(C_INT), value :: rnk
247 integer(C_INTPTR_T), dimension(*), intent(in) :: n
248 real(C_DOUBLE), dimension(*), intent(out) :: in
249 real(C_DOUBLE), dimension(*), intent(out) :: out
250 integer(C_MPI_FINT), value :: comm
251 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
252 integer(C_INT), value :: flags
253 end function fftw_mpi_plan_r2r
254
255 type(C_PTR) function fftw_mpi_plan_r2r_2d(n0,n1,in,out,comm,kind0,kind1,flags) bind(C, name='fftw_mpi_plan_r2r_2d_f03')
256 import
257 integer(C_INTPTR_T), value :: n0
258 integer(C_INTPTR_T), value :: n1
259 real(C_DOUBLE), dimension(*), intent(out) :: in
260 real(C_DOUBLE), dimension(*), intent(out) :: out
261 integer(C_MPI_FINT), value :: comm
262 integer(C_FFTW_R2R_KIND), value :: kind0
263 integer(C_FFTW_R2R_KIND), value :: kind1
264 integer(C_INT), value :: flags
265 end function fftw_mpi_plan_r2r_2d
266
267 type(C_PTR) function fftw_mpi_plan_r2r_3d(n0,n1,n2,in,out,comm,kind0,kind1,kind2,flags) bind(C, name='fftw_mpi_plan_r2r_3d_f03')
268 import
269 integer(C_INTPTR_T), value :: n0
270 integer(C_INTPTR_T), value :: n1
271 integer(C_INTPTR_T), value :: n2
272 real(C_DOUBLE), dimension(*), intent(out) :: in
273 real(C_DOUBLE), dimension(*), intent(out) :: out
274 integer(C_MPI_FINT), value :: comm
275 integer(C_FFTW_R2R_KIND), value :: kind0
276 integer(C_FFTW_R2R_KIND), value :: kind1
277 integer(C_FFTW_R2R_KIND), value :: kind2
278 integer(C_INT), value :: flags
279 end function fftw_mpi_plan_r2r_3d
280
281 type(C_PTR) function fftw_mpi_plan_many_dft_r2c(rnk,n,howmany,iblock,oblock,in,out,comm,flags) &
282 bind(C, name='fftw_mpi_plan_many_dft_r2c_f03')
283 import
284 integer(C_INT), value :: rnk
285 integer(C_INTPTR_T), dimension(*), intent(in) :: n
286 integer(C_INTPTR_T), value :: howmany
287 integer(C_INTPTR_T), value :: iblock
288 integer(C_INTPTR_T), value :: oblock
289 real(C_DOUBLE), dimension(*), intent(out) :: in
290 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
291 integer(C_MPI_FINT), value :: comm
292 integer(C_INT), value :: flags
293 end function fftw_mpi_plan_many_dft_r2c
294
295 type(C_PTR) function fftw_mpi_plan_dft_r2c(rnk,n,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_r2c_f03')
296 import
297 integer(C_INT), value :: rnk
298 integer(C_INTPTR_T), dimension(*), intent(in) :: n
299 real(C_DOUBLE), dimension(*), intent(out) :: in
300 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
301 integer(C_MPI_FINT), value :: comm
302 integer(C_INT), value :: flags
303 end function fftw_mpi_plan_dft_r2c
304
305 type(C_PTR) function fftw_mpi_plan_dft_r2c_2d(n0,n1,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_r2c_2d_f03')
306 import
307 integer(C_INTPTR_T), value :: n0
308 integer(C_INTPTR_T), value :: n1
309 real(C_DOUBLE), dimension(*), intent(out) :: in
310 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
311 integer(C_MPI_FINT), value :: comm
312 integer(C_INT), value :: flags
313 end function fftw_mpi_plan_dft_r2c_2d
314
315 type(C_PTR) function fftw_mpi_plan_dft_r2c_3d(n0,n1,n2,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_r2c_3d_f03')
316 import
317 integer(C_INTPTR_T), value :: n0
318 integer(C_INTPTR_T), value :: n1
319 integer(C_INTPTR_T), value :: n2
320 real(C_DOUBLE), dimension(*), intent(out) :: in
321 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
322 integer(C_MPI_FINT), value :: comm
323 integer(C_INT), value :: flags
324 end function fftw_mpi_plan_dft_r2c_3d
325
326 type(C_PTR) function fftw_mpi_plan_many_dft_c2r(rnk,n,howmany,iblock,oblock,in,out,comm,flags) &
327 bind(C, name='fftw_mpi_plan_many_dft_c2r_f03')
328 import
329 integer(C_INT), value :: rnk
330 integer(C_INTPTR_T), dimension(*), intent(in) :: n
331 integer(C_INTPTR_T), value :: howmany
332 integer(C_INTPTR_T), value :: iblock
333 integer(C_INTPTR_T), value :: oblock
334 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
335 real(C_DOUBLE), dimension(*), intent(out) :: out
336 integer(C_MPI_FINT), value :: comm
337 integer(C_INT), value :: flags
338 end function fftw_mpi_plan_many_dft_c2r
339
340 type(C_PTR) function fftw_mpi_plan_dft_c2r(rnk,n,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_c2r_f03')
341 import
342 integer(C_INT), value :: rnk
343 integer(C_INTPTR_T), dimension(*), intent(in) :: n
344 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
345 real(C_DOUBLE), dimension(*), intent(out) :: out
346 integer(C_MPI_FINT), value :: comm
347 integer(C_INT), value :: flags
348 end function fftw_mpi_plan_dft_c2r
349
350 type(C_PTR) function fftw_mpi_plan_dft_c2r_2d(n0,n1,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_c2r_2d_f03')
351 import
352 integer(C_INTPTR_T), value :: n0
353 integer(C_INTPTR_T), value :: n1
354 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
355 real(C_DOUBLE), dimension(*), intent(out) :: out
356 integer(C_MPI_FINT), value :: comm
357 integer(C_INT), value :: flags
358 end function fftw_mpi_plan_dft_c2r_2d
359
360 type(C_PTR) function fftw_mpi_plan_dft_c2r_3d(n0,n1,n2,in,out,comm,flags) bind(C, name='fftw_mpi_plan_dft_c2r_3d_f03')
361 import
362 integer(C_INTPTR_T), value :: n0
363 integer(C_INTPTR_T), value :: n1
364 integer(C_INTPTR_T), value :: n2
365 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
366 real(C_DOUBLE), dimension(*), intent(out) :: out
367 integer(C_MPI_FINT), value :: comm
368 integer(C_INT), value :: flags
369 end function fftw_mpi_plan_dft_c2r_3d
370
371 subroutine fftw_mpi_gather_wisdom(comm_) bind(C, name='fftw_mpi_gather_wisdom_f03')
372 import
373 integer(C_MPI_FINT), value :: comm_
374 end subroutine fftw_mpi_gather_wisdom
375
376 subroutine fftw_mpi_broadcast_wisdom(comm_) bind(C, name='fftw_mpi_broadcast_wisdom_f03')
377 import
378 integer(C_MPI_FINT), value :: comm_
379 end subroutine fftw_mpi_broadcast_wisdom
380
381 subroutine fftw_mpi_execute_dft(p,in,out) bind(C, name='fftw_mpi_execute_dft')
382 import
383 type(C_PTR), value :: p
384 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
385 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
386 end subroutine fftw_mpi_execute_dft
387
388 subroutine fftw_mpi_execute_dft_r2c(p,in,out) bind(C, name='fftw_mpi_execute_dft_r2c')
389 import
390 type(C_PTR), value :: p
391 real(C_DOUBLE), dimension(*), intent(inout) :: in
392 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
393 end subroutine fftw_mpi_execute_dft_r2c
394
395 subroutine fftw_mpi_execute_dft_c2r(p,in,out) bind(C, name='fftw_mpi_execute_dft_c2r')
396 import
397 type(C_PTR), value :: p
398 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
399 real(C_DOUBLE), dimension(*), intent(out) :: out
400 end subroutine fftw_mpi_execute_dft_c2r
401
402 subroutine fftw_mpi_execute_r2r(p,in,out) bind(C, name='fftw_mpi_execute_r2r')
403 import
404 type(C_PTR), value :: p
405 real(C_DOUBLE), dimension(*), intent(inout) :: in
406 real(C_DOUBLE), dimension(*), intent(out) :: out
407 end subroutine fftw_mpi_execute_r2r
408
409 end interface
410
411 type, bind(C) :: fftwf_mpi_ddim
412 integer(C_INTPTR_T) n, ib, ob
413 end type fftwf_mpi_ddim
414
415 interface
416 subroutine fftwf_mpi_init() bind(C, name='fftwf_mpi_init')
417 import
418 end subroutine fftwf_mpi_init
419
420 subroutine fftwf_mpi_cleanup() bind(C, name='fftwf_mpi_cleanup')
421 import
422 end subroutine fftwf_mpi_cleanup
423
424 integer(C_INTPTR_T) function fftwf_mpi_local_size_many_transposed(rnk,n,howmany,block0,block1,comm,local_n0,local_0_start, &
425 local_n1,local_1_start) &
426 bind(C, name='fftwf_mpi_local_size_many_transposed_f03')
427 import
428 integer(C_INT), value :: rnk
429 integer(C_INTPTR_T), dimension(*), intent(in) :: n
430 integer(C_INTPTR_T), value :: howmany
431 integer(C_INTPTR_T), value :: block0
432 integer(C_INTPTR_T), value :: block1
433 integer(C_MPI_FINT), value :: comm
434 integer(C_INTPTR_T), intent(out) :: local_n0
435 integer(C_INTPTR_T), intent(out) :: local_0_start
436 integer(C_INTPTR_T), intent(out) :: local_n1
437 integer(C_INTPTR_T), intent(out) :: local_1_start
438 end function fftwf_mpi_local_size_many_transposed
439
440 integer(C_INTPTR_T) function fftwf_mpi_local_size_many(rnk,n,howmany,block0,comm,local_n0,local_0_start) &
441 bind(C, name='fftwf_mpi_local_size_many_f03')
442 import
443 integer(C_INT), value :: rnk
444 integer(C_INTPTR_T), dimension(*), intent(in) :: n
445 integer(C_INTPTR_T), value :: howmany
446 integer(C_INTPTR_T), value :: block0
447 integer(C_MPI_FINT), value :: comm
448 integer(C_INTPTR_T), intent(out) :: local_n0
449 integer(C_INTPTR_T), intent(out) :: local_0_start
450 end function fftwf_mpi_local_size_many
451
452 integer(C_INTPTR_T) function fftwf_mpi_local_size_transposed(rnk,n,comm,local_n0,local_0_start,local_n1,local_1_start) &
453 bind(C, name='fftwf_mpi_local_size_transposed_f03')
454 import
455 integer(C_INT), value :: rnk
456 integer(C_INTPTR_T), dimension(*), intent(in) :: n
457 integer(C_MPI_FINT), value :: comm
458 integer(C_INTPTR_T), intent(out) :: local_n0
459 integer(C_INTPTR_T), intent(out) :: local_0_start
460 integer(C_INTPTR_T), intent(out) :: local_n1
461 integer(C_INTPTR_T), intent(out) :: local_1_start
462 end function fftwf_mpi_local_size_transposed
463
464 integer(C_INTPTR_T) function fftwf_mpi_local_size(rnk,n,comm,local_n0,local_0_start) bind(C, name='fftwf_mpi_local_size_f03')
465 import
466 integer(C_INT), value :: rnk
467 integer(C_INTPTR_T), dimension(*), intent(in) :: n
468 integer(C_MPI_FINT), value :: comm
469 integer(C_INTPTR_T), intent(out) :: local_n0
470 integer(C_INTPTR_T), intent(out) :: local_0_start
471 end function fftwf_mpi_local_size
472
473 integer(C_INTPTR_T) function fftwf_mpi_local_size_many_1d(n0,howmany,comm,sign,flags,local_ni,local_i_start,local_no, &
474 local_o_start) bind(C, name='fftwf_mpi_local_size_many_1d_f03')
475 import
476 integer(C_INTPTR_T), value :: n0
477 integer(C_INTPTR_T), value :: howmany
478 integer(C_MPI_FINT), value :: comm
479 integer(C_INT), value :: sign
480 integer(C_INT), value :: flags
481 integer(C_INTPTR_T), intent(out) :: local_ni
482 integer(C_INTPTR_T), intent(out) :: local_i_start
483 integer(C_INTPTR_T), intent(out) :: local_no
484 integer(C_INTPTR_T), intent(out) :: local_o_start
485 end function fftwf_mpi_local_size_many_1d
486
487 integer(C_INTPTR_T) function fftwf_mpi_local_size_1d(n0,comm,sign,flags,local_ni,local_i_start,local_no,local_o_start) &
488 bind(C, name='fftwf_mpi_local_size_1d_f03')
489 import
490 integer(C_INTPTR_T), value :: n0
491 integer(C_MPI_FINT), value :: comm
492 integer(C_INT), value :: sign
493 integer(C_INT), value :: flags
494 integer(C_INTPTR_T), intent(out) :: local_ni
495 integer(C_INTPTR_T), intent(out) :: local_i_start
496 integer(C_INTPTR_T), intent(out) :: local_no
497 integer(C_INTPTR_T), intent(out) :: local_o_start
498 end function fftwf_mpi_local_size_1d
499
500 integer(C_INTPTR_T) function fftwf_mpi_local_size_2d(n0,n1,comm,local_n0,local_0_start) &
501 bind(C, name='fftwf_mpi_local_size_2d_f03')
502 import
503 integer(C_INTPTR_T), value :: n0
504 integer(C_INTPTR_T), value :: n1
505 integer(C_MPI_FINT), value :: comm
506 integer(C_INTPTR_T), intent(out) :: local_n0
507 integer(C_INTPTR_T), intent(out) :: local_0_start
508 end function fftwf_mpi_local_size_2d
509
510 integer(C_INTPTR_T) function fftwf_mpi_local_size_2d_transposed(n0,n1,comm,local_n0,local_0_start,local_n1,local_1_start) &
511 bind(C, name='fftwf_mpi_local_size_2d_transposed_f03')
512 import
513 integer(C_INTPTR_T), value :: n0
514 integer(C_INTPTR_T), value :: n1
515 integer(C_MPI_FINT), value :: comm
516 integer(C_INTPTR_T), intent(out) :: local_n0
517 integer(C_INTPTR_T), intent(out) :: local_0_start
518 integer(C_INTPTR_T), intent(out) :: local_n1
519 integer(C_INTPTR_T), intent(out) :: local_1_start
520 end function fftwf_mpi_local_size_2d_transposed
521
522 integer(C_INTPTR_T) function fftwf_mpi_local_size_3d(n0,n1,n2,comm,local_n0,local_0_start) &
523 bind(C, name='fftwf_mpi_local_size_3d_f03')
524 import
525 integer(C_INTPTR_T), value :: n0
526 integer(C_INTPTR_T), value :: n1
527 integer(C_INTPTR_T), value :: n2
528 integer(C_MPI_FINT), value :: comm
529 integer(C_INTPTR_T), intent(out) :: local_n0
530 integer(C_INTPTR_T), intent(out) :: local_0_start
531 end function fftwf_mpi_local_size_3d
532
533 integer(C_INTPTR_T) function fftwf_mpi_local_size_3d_transposed(n0,n1,n2,comm,local_n0,local_0_start,local_n1,local_1_start) &
534 bind(C, name='fftwf_mpi_local_size_3d_transposed_f03')
535 import
536 integer(C_INTPTR_T), value :: n0
537 integer(C_INTPTR_T), value :: n1
538 integer(C_INTPTR_T), value :: n2
539 integer(C_MPI_FINT), value :: comm
540 integer(C_INTPTR_T), intent(out) :: local_n0
541 integer(C_INTPTR_T), intent(out) :: local_0_start
542 integer(C_INTPTR_T), intent(out) :: local_n1
543 integer(C_INTPTR_T), intent(out) :: local_1_start
544 end function fftwf_mpi_local_size_3d_transposed
545
546 type(C_PTR) function fftwf_mpi_plan_many_transpose(n0,n1,howmany,block0,block1,in,out,comm,flags) &
547 bind(C, name='fftwf_mpi_plan_many_transpose_f03')
548 import
549 integer(C_INTPTR_T), value :: n0
550 integer(C_INTPTR_T), value :: n1
551 integer(C_INTPTR_T), value :: howmany
552 integer(C_INTPTR_T), value :: block0
553 integer(C_INTPTR_T), value :: block1
554 real(C_FLOAT), dimension(*), intent(out) :: in
555 real(C_FLOAT), dimension(*), intent(out) :: out
556 integer(C_MPI_FINT), value :: comm
557 integer(C_INT), value :: flags
558 end function fftwf_mpi_plan_many_transpose
559
560 type(C_PTR) function fftwf_mpi_plan_transpose(n0,n1,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_transpose_f03')
561 import
562 integer(C_INTPTR_T), value :: n0
563 integer(C_INTPTR_T), value :: n1
564 real(C_FLOAT), dimension(*), intent(out) :: in
565 real(C_FLOAT), dimension(*), intent(out) :: out
566 integer(C_MPI_FINT), value :: comm
567 integer(C_INT), value :: flags
568 end function fftwf_mpi_plan_transpose
569
570 type(C_PTR) function fftwf_mpi_plan_many_dft(rnk,n,howmany,block,tblock,in,out,comm,sign,flags) &
571 bind(C, name='fftwf_mpi_plan_many_dft_f03')
572 import
573 integer(C_INT), value :: rnk
574 integer(C_INTPTR_T), dimension(*), intent(in) :: n
575 integer(C_INTPTR_T), value :: howmany
576 integer(C_INTPTR_T), value :: block
577 integer(C_INTPTR_T), value :: tblock
578 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
579 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
580 integer(C_MPI_FINT), value :: comm
581 integer(C_INT), value :: sign
582 integer(C_INT), value :: flags
583 end function fftwf_mpi_plan_many_dft
584
585 type(C_PTR) function fftwf_mpi_plan_dft(rnk,n,in,out,comm,sign,flags) bind(C, name='fftwf_mpi_plan_dft_f03')
586 import
587 integer(C_INT), value :: rnk
588 integer(C_INTPTR_T), dimension(*), intent(in) :: n
589 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
590 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
591 integer(C_MPI_FINT), value :: comm
592 integer(C_INT), value :: sign
593 integer(C_INT), value :: flags
594 end function fftwf_mpi_plan_dft
595
596 type(C_PTR) function fftwf_mpi_plan_dft_1d(n0,in,out,comm,sign,flags) bind(C, name='fftwf_mpi_plan_dft_1d_f03')
597 import
598 integer(C_INTPTR_T), value :: n0
599 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
600 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
601 integer(C_MPI_FINT), value :: comm
602 integer(C_INT), value :: sign
603 integer(C_INT), value :: flags
604 end function fftwf_mpi_plan_dft_1d
605
606 type(C_PTR) function fftwf_mpi_plan_dft_2d(n0,n1,in,out,comm,sign,flags) bind(C, name='fftwf_mpi_plan_dft_2d_f03')
607 import
608 integer(C_INTPTR_T), value :: n0
609 integer(C_INTPTR_T), value :: n1
610 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
611 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
612 integer(C_MPI_FINT), value :: comm
613 integer(C_INT), value :: sign
614 integer(C_INT), value :: flags
615 end function fftwf_mpi_plan_dft_2d
616
617 type(C_PTR) function fftwf_mpi_plan_dft_3d(n0,n1,n2,in,out,comm,sign,flags) bind(C, name='fftwf_mpi_plan_dft_3d_f03')
618 import
619 integer(C_INTPTR_T), value :: n0
620 integer(C_INTPTR_T), value :: n1
621 integer(C_INTPTR_T), value :: n2
622 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
623 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
624 integer(C_MPI_FINT), value :: comm
625 integer(C_INT), value :: sign
626 integer(C_INT), value :: flags
627 end function fftwf_mpi_plan_dft_3d
628
629 type(C_PTR) function fftwf_mpi_plan_many_r2r(rnk,n,howmany,iblock,oblock,in,out,comm,kind,flags) &
630 bind(C, name='fftwf_mpi_plan_many_r2r_f03')
631 import
632 integer(C_INT), value :: rnk
633 integer(C_INTPTR_T), dimension(*), intent(in) :: n
634 integer(C_INTPTR_T), value :: howmany
635 integer(C_INTPTR_T), value :: iblock
636 integer(C_INTPTR_T), value :: oblock
637 real(C_FLOAT), dimension(*), intent(out) :: in
638 real(C_FLOAT), dimension(*), intent(out) :: out
639 integer(C_MPI_FINT), value :: comm
640 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
641 integer(C_INT), value :: flags
642 end function fftwf_mpi_plan_many_r2r
643
644 type(C_PTR) function fftwf_mpi_plan_r2r(rnk,n,in,out,comm,kind,flags) bind(C, name='fftwf_mpi_plan_r2r_f03')
645 import
646 integer(C_INT), value :: rnk
647 integer(C_INTPTR_T), dimension(*), intent(in) :: n
648 real(C_FLOAT), dimension(*), intent(out) :: in
649 real(C_FLOAT), dimension(*), intent(out) :: out
650 integer(C_MPI_FINT), value :: comm
651 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
652 integer(C_INT), value :: flags
653 end function fftwf_mpi_plan_r2r
654
655 type(C_PTR) function fftwf_mpi_plan_r2r_2d(n0,n1,in,out,comm,kind0,kind1,flags) bind(C, name='fftwf_mpi_plan_r2r_2d_f03')
656 import
657 integer(C_INTPTR_T), value :: n0
658 integer(C_INTPTR_T), value :: n1
659 real(C_FLOAT), dimension(*), intent(out) :: in
660 real(C_FLOAT), dimension(*), intent(out) :: out
661 integer(C_MPI_FINT), value :: comm
662 integer(C_FFTW_R2R_KIND), value :: kind0
663 integer(C_FFTW_R2R_KIND), value :: kind1
664 integer(C_INT), value :: flags
665 end function fftwf_mpi_plan_r2r_2d
666
667 type(C_PTR) function fftwf_mpi_plan_r2r_3d(n0,n1,n2,in,out,comm,kind0,kind1,kind2,flags) &
668 bind(C, name='fftwf_mpi_plan_r2r_3d_f03')
669 import
670 integer(C_INTPTR_T), value :: n0
671 integer(C_INTPTR_T), value :: n1
672 integer(C_INTPTR_T), value :: n2
673 real(C_FLOAT), dimension(*), intent(out) :: in
674 real(C_FLOAT), dimension(*), intent(out) :: out
675 integer(C_MPI_FINT), value :: comm
676 integer(C_FFTW_R2R_KIND), value :: kind0
677 integer(C_FFTW_R2R_KIND), value :: kind1
678 integer(C_FFTW_R2R_KIND), value :: kind2
679 integer(C_INT), value :: flags
680 end function fftwf_mpi_plan_r2r_3d
681
682 type(C_PTR) function fftwf_mpi_plan_many_dft_r2c(rnk,n,howmany,iblock,oblock,in,out,comm,flags) &
683 bind(C, name='fftwf_mpi_plan_many_dft_r2c_f03')
684 import
685 integer(C_INT), value :: rnk
686 integer(C_INTPTR_T), dimension(*), intent(in) :: n
687 integer(C_INTPTR_T), value :: howmany
688 integer(C_INTPTR_T), value :: iblock
689 integer(C_INTPTR_T), value :: oblock
690 real(C_FLOAT), dimension(*), intent(out) :: in
691 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
692 integer(C_MPI_FINT), value :: comm
693 integer(C_INT), value :: flags
694 end function fftwf_mpi_plan_many_dft_r2c
695
696 type(C_PTR) function fftwf_mpi_plan_dft_r2c(rnk,n,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_r2c_f03')
697 import
698 integer(C_INT), value :: rnk
699 integer(C_INTPTR_T), dimension(*), intent(in) :: n
700 real(C_FLOAT), dimension(*), intent(out) :: in
701 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
702 integer(C_MPI_FINT), value :: comm
703 integer(C_INT), value :: flags
704 end function fftwf_mpi_plan_dft_r2c
705
706 type(C_PTR) function fftwf_mpi_plan_dft_r2c_2d(n0,n1,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_r2c_2d_f03')
707 import
708 integer(C_INTPTR_T), value :: n0
709 integer(C_INTPTR_T), value :: n1
710 real(C_FLOAT), dimension(*), intent(out) :: in
711 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
712 integer(C_MPI_FINT), value :: comm
713 integer(C_INT), value :: flags
714 end function fftwf_mpi_plan_dft_r2c_2d
715
716 type(C_PTR) function fftwf_mpi_plan_dft_r2c_3d(n0,n1,n2,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_r2c_3d_f03')
717 import
718 integer(C_INTPTR_T), value :: n0
719 integer(C_INTPTR_T), value :: n1
720 integer(C_INTPTR_T), value :: n2
721 real(C_FLOAT), dimension(*), intent(out) :: in
722 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
723 integer(C_MPI_FINT), value :: comm
724 integer(C_INT), value :: flags
725 end function fftwf_mpi_plan_dft_r2c_3d
726
727 type(C_PTR) function fftwf_mpi_plan_many_dft_c2r(rnk,n,howmany,iblock,oblock,in,out,comm,flags) &
728 bind(C, name='fftwf_mpi_plan_many_dft_c2r_f03')
729 import
730 integer(C_INT), value :: rnk
731 integer(C_INTPTR_T), dimension(*), intent(in) :: n
732 integer(C_INTPTR_T), value :: howmany
733 integer(C_INTPTR_T), value :: iblock
734 integer(C_INTPTR_T), value :: oblock
735 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
736 real(C_FLOAT), dimension(*), intent(out) :: out
737 integer(C_MPI_FINT), value :: comm
738 integer(C_INT), value :: flags
739 end function fftwf_mpi_plan_many_dft_c2r
740
741 type(C_PTR) function fftwf_mpi_plan_dft_c2r(rnk,n,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_c2r_f03')
742 import
743 integer(C_INT), value :: rnk
744 integer(C_INTPTR_T), dimension(*), intent(in) :: n
745 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
746 real(C_FLOAT), dimension(*), intent(out) :: out
747 integer(C_MPI_FINT), value :: comm
748 integer(C_INT), value :: flags
749 end function fftwf_mpi_plan_dft_c2r
750
751 type(C_PTR) function fftwf_mpi_plan_dft_c2r_2d(n0,n1,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_c2r_2d_f03')
752 import
753 integer(C_INTPTR_T), value :: n0
754 integer(C_INTPTR_T), value :: n1
755 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
756 real(C_FLOAT), dimension(*), intent(out) :: out
757 integer(C_MPI_FINT), value :: comm
758 integer(C_INT), value :: flags
759 end function fftwf_mpi_plan_dft_c2r_2d
760
761 type(C_PTR) function fftwf_mpi_plan_dft_c2r_3d(n0,n1,n2,in,out,comm,flags) bind(C, name='fftwf_mpi_plan_dft_c2r_3d_f03')
762 import
763 integer(C_INTPTR_T), value :: n0
764 integer(C_INTPTR_T), value :: n1
765 integer(C_INTPTR_T), value :: n2
766 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
767 real(C_FLOAT), dimension(*), intent(out) :: out
768 integer(C_MPI_FINT), value :: comm
769 integer(C_INT), value :: flags
770 end function fftwf_mpi_plan_dft_c2r_3d
771
772 subroutine fftwf_mpi_gather_wisdom(comm_) bind(C, name='fftwf_mpi_gather_wisdom_f03')
773 import
774 integer(C_MPI_FINT), value :: comm_
775 end subroutine fftwf_mpi_gather_wisdom
776
777 subroutine fftwf_mpi_broadcast_wisdom(comm_) bind(C, name='fftwf_mpi_broadcast_wisdom_f03')
778 import
779 integer(C_MPI_FINT), value :: comm_
780 end subroutine fftwf_mpi_broadcast_wisdom
781
782 subroutine fftwf_mpi_execute_dft(p,in,out) bind(C, name='fftwf_mpi_execute_dft')
783 import
784 type(C_PTR), value :: p
785 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
786 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
787 end subroutine fftwf_mpi_execute_dft
788
789 subroutine fftwf_mpi_execute_dft_r2c(p,in,out) bind(C, name='fftwf_mpi_execute_dft_r2c')
790 import
791 type(C_PTR), value :: p
792 real(C_FLOAT), dimension(*), intent(inout) :: in
793 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
794 end subroutine fftwf_mpi_execute_dft_r2c
795
796 subroutine fftwf_mpi_execute_dft_c2r(p,in,out) bind(C, name='fftwf_mpi_execute_dft_c2r')
797 import
798 type(C_PTR), value :: p
799 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
800 real(C_FLOAT), dimension(*), intent(out) :: out
801 end subroutine fftwf_mpi_execute_dft_c2r
802
803 subroutine fftwf_mpi_execute_r2r(p,in,out) bind(C, name='fftwf_mpi_execute_r2r')
804 import
805 type(C_PTR), value :: p
806 real(C_FLOAT), dimension(*), intent(inout) :: in
807 real(C_FLOAT), dimension(*), intent(out) :: out
808 end subroutine fftwf_mpi_execute_r2r
809
810 end interface