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