annotate src/fftw-3.3.5/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 7867fa7e1b6b
children
rev   line source
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