annotate src/fftw-3.3.8/mpi/fftw3-mpi.f03.in @ 169:223a55898ab9 tip default

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