annotate src/fftw-3.3.3/mpi/fftw3-mpi.f03.in @ 95:89f5e221ed7b

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