leapFFT Module

This module defines objects and methods to perform fast fourier transforms in LEAP using the FFTW library.



Uses

  • module~~leapfft~~UsesGraph module~leapfft leapFFT iso_c_binding iso_c_binding module~leapfft->iso_c_binding module~leapblock leapBlock module~leapfft->module~leapblock module~leapeulerian leapEulerian module~leapfft->module~leapeulerian module~leapkinds leapKinds module~leapfft->module~leapkinds module~leapparallel leapParallel module~leapfft->module~leapparallel module~leapblock->module~leapkinds module~leapblock->module~leapparallel iso_fortran_env iso_fortran_env module~leapblock->iso_fortran_env module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 mpi_f08 mpi_f08 module~leapblock->mpi_f08 module~leapeulerian->module~leapblock module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->iso_fortran_env module~leapio leapIO module~leapeulerian->module~leapio module~leaputils leapUtils module~leapeulerian->module~leaputils module~leapeulerian->mpi_f08 module~leapkinds->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->iso_fortran_env module~leapparallel->mpi_f08 module~leapio->module~leapio_hdf5 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_xdmf leapIO_xdmf module~leapio->module~leapio_xdmf module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leaputils->module~leapkinds module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel module~leapio_h5hut->module~leapio_hdf5 module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08 module~leapio_xdmf->module~leapkinds module~leapio_xdmf->module~leaputils

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: C_FFTW_R2R_KIND = C_INT32_T
integer(kind=C_INT), public, parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192
integer(kind=C_INT), public, parameter :: FFTW_ALLOW_PRUNING = 1048576
integer(kind=C_INT), public, parameter :: FFTW_BACKWARD = +1
integer(kind=C_INT), public, parameter :: FFTW_BELIEVE_PCOST = 256
integer(kind=C_INT), public, parameter :: FFTW_CONSERVE_MEMORY = 4
integer(kind=C_INT), public, parameter :: FFTW_DESTROY_INPUT = 1
integer(kind=C_INT), public, parameter :: FFTW_DHT = 2
integer(kind=C_INT), public, parameter :: FFTW_ESTIMATE = 64
integer(kind=C_INT), public, parameter :: FFTW_ESTIMATE_PATIENT = 128
integer(kind=C_INT), public, parameter :: FFTW_EXHAUSTIVE = 8
integer(kind=C_INT), public, parameter :: FFTW_FORWARD = -1
integer(kind=C_INT), public, parameter :: FFTW_HC2R = 1
integer(kind=C_INT), public, parameter :: FFTW_MEASURE = 0
integer(kind=C_INT), public, parameter :: FFTW_NO_BUFFERING = 2048
integer(kind=C_INT), public, parameter :: FFTW_NO_DFT_R2HC = 512
integer(kind=C_INT), public, parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288
integer(kind=C_INT), public, parameter :: FFTW_NO_INDIRECT_OP = 4096
integer(kind=C_INT), public, parameter :: FFTW_NO_NONTHREADED = 1024
integer(kind=C_INT), public, parameter :: FFTW_NO_RANK_SPLITS = 16384
integer(kind=C_INT), public, parameter :: FFTW_NO_SIMD = 131072
integer(kind=C_INT), public, parameter :: FFTW_NO_SLOW = 262144
integer(kind=C_INT), public, parameter :: FFTW_NO_VRANK_SPLITS = 32768
integer(kind=C_INT), public, parameter :: FFTW_NO_VRECURSE = 65536
integer(kind=C_INT), public, parameter :: FFTW_PATIENT = 32
integer(kind=C_INT), public, parameter :: FFTW_PRESERVE_INPUT = 16
integer(kind=C_INT), public, parameter :: FFTW_R2HC = 0
integer(kind=C_INT), public, parameter :: FFTW_REDFT00 = 3
integer(kind=C_INT), public, parameter :: FFTW_REDFT01 = 4
integer(kind=C_INT), public, parameter :: FFTW_REDFT10 = 5
integer(kind=C_INT), public, parameter :: FFTW_REDFT11 = 6
integer(kind=C_INT), public, parameter :: FFTW_RODFT00 = 7
integer(kind=C_INT), public, parameter :: FFTW_RODFT01 = 8
integer(kind=C_INT), public, parameter :: FFTW_RODFT10 = 9
integer(kind=C_INT), public, parameter :: FFTW_RODFT11 = 10
integer(kind=C_INT), public, parameter :: FFTW_UNALIGNED = 2
integer(kind=C_INT), public, parameter :: FFTW_WISDOM_ONLY = 2097152

Interfaces

interface

  • public function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), intent(out), dimension(*) :: p

    Return Value integer(kind=c_int)

interface

  • public function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public subroutine fftw_cleanup() bind(C, name='fftw_cleanup')

    Arguments

    None

interface

  • public subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')

    Arguments

    None

interface

  • public function fftw_cost(p) bind(C, name='fftw_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • public subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • public subroutine fftw_execute_dft(p, in, out) bind(C, name='fftw_execute_dft')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    complex(kind=C_DOUBLE_COMPLEX), intent(inout), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out

interface

  • public subroutine fftw_execute_dft_c2r(p, in, out) bind(C, name='fftw_execute_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    complex(kind=C_DOUBLE_COMPLEX), intent(inout), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out

interface

  • public subroutine fftw_execute_dft_r2c(p, in, out) bind(C, name='fftw_execute_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out

interface

  • public subroutine fftw_execute_r2r(p, in, out) bind(C, name='fftw_execute_r2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out

interface

  • public subroutine fftw_execute_split_dft(p, ri, ii, ro, io) bind(C, name='fftw_execute_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io

interface

  • public subroutine fftw_execute_split_dft_c2r(p, ri, ii, out) bind(C, name='fftw_execute_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out

interface

  • public subroutine fftw_execute_split_dft_r2c(p, in, ro, io) bind(C, name='fftw_execute_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(inout), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io

interface

  • public subroutine fftw_export_wisdom(write_char, data) bind(C, name='fftw_export_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: write_char
    type(C_PTR), value :: data

interface

  • public subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: output_file

interface

  • public function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • public function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')

    Arguments

    None

    Return Value type(c_ptr)

interface

  • public subroutine fftw_flops(p, add, mul, fmas) bind(C, name='fftw_flops')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(out) :: add
    real(kind=C_DOUBLE), intent(out) :: mul
    real(kind=C_DOUBLE), intent(out) :: fmas

interface

  • public subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')

    Arguments

    None

interface

  • public subroutine fftw_fprint_plan(p, output_file) bind(C, name='fftw_fprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    type(C_PTR), value :: output_file

interface

  • public subroutine fftw_free(p) bind(C, name='fftw_free')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public function fftw_import_wisdom(read_char, data) bind(C, name='fftw_import_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: read_char
    type(C_PTR), value :: data

    Return Value integer(kind=c_int)

interface

  • public function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: input_file

    Return Value integer(kind=c_int)

interface

  • public function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • public function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: input_string

    Return Value integer(kind=c_int)

interface

  • public function fftw_init_threads() bind(C, name='fftw_init_threads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')

    Arguments

    None

interface

  • public function fftw_malloc(n) bind(C, name='fftw_malloc')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft(rank, n, in, out, sign, flags) bind(C, name='fftw_plan_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_1d(n, in, out, sign, flags) bind(C, name='fftw_plan_dft_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_2d(n0, n1, in, out, sign, flags) bind(C, name='fftw_plan_dft_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_3d(n0, n1, n2, in, out, sign, flags) bind(C, name='fftw_plan_dft_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_c2r(rank, n, in, out, flags) bind(C, name='fftw_plan_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_c2r_1d(n, in, out, flags) bind(C, name='fftw_plan_dft_c2r_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_c2r_2d(n0, n1, in, out, flags) bind(C, name='fftw_plan_dft_c2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_c2r_3d(n0, n1, n2, in, out, flags) bind(C, name='fftw_plan_dft_c2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_r2c(rank, n, in, out, flags) bind(C, name='fftw_plan_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_r2c_1d(n, in, out, flags) bind(C, name='fftw_plan_dft_r2c_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_r2c_2d(n0, n1, in, out, flags) bind(C, name='fftw_plan_dft_r2c_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_dft_r2c_3d(n0, n1, n2, in, out, flags) bind(C, name='fftw_plan_dft_r2c_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftw_plan_guru64_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru64_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru64_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftw_plan_guru64_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftw_plan_guru64_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftw_plan_guru64_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru64_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftw_plan_guru64_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftw_plan_guru_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftw_plan_guru_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftw_plan_guru_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftw_plan_guru_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_guru_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftw_plan_guru_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_many_dft(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, sign, flags) bind(C, name='fftw_plan_many_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_many_dft_c2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftw_plan_many_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_many_dft_r2c(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftw_plan_many_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_many_r2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, kind, flags) bind(C, name='fftw_plan_many_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_r2r(rank, n, in, out, kind, flags) bind(C, name='fftw_plan_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_r2r_1d(n, in, out, kind, flags) bind(C, name='fftw_plan_r2r_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_r2r_2d(n0, n1, in, out, kind0, kind1, flags) bind(C, name='fftw_plan_r2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftw_plan_r2r_3d(n0, n1, n2, in, out, kind0, kind1, kind2, flags) bind(C, name='fftw_plan_r2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_FFTW_R2R_KIND), value :: kind2
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: nthreads

interface

  • public function fftw_planner_nthreads() bind(C, name='fftw_planner_nthreads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), value :: t

interface

  • public function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value type(c_ptr)

interface

  • public function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_FLOAT), intent(out), dimension(*) :: p

    Return Value integer(kind=c_int)

interface

  • public function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')

    Arguments

    None

interface

  • public subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')

    Arguments

    None

interface

  • public function fftwf_cost(p) bind(C, name='fftwf_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • public subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • public subroutine fftwf_execute_dft(p, in, out) bind(C, name='fftwf_execute_dft')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    complex(kind=C_FLOAT_COMPLEX), intent(inout), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out

interface

  • public subroutine fftwf_execute_dft_c2r(p, in, out) bind(C, name='fftwf_execute_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    complex(kind=C_FLOAT_COMPLEX), intent(inout), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out

interface

  • public subroutine fftwf_execute_dft_r2c(p, in, out) bind(C, name='fftwf_execute_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out

interface

  • public subroutine fftwf_execute_r2r(p, in, out) bind(C, name='fftwf_execute_r2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out

interface

  • public subroutine fftwf_execute_split_dft(p, ri, ii, ro, io) bind(C, name='fftwf_execute_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ri
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io

interface

  • public subroutine fftwf_execute_split_dft_c2r(p, ri, ii, out) bind(C, name='fftwf_execute_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ri
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: out

interface

  • public subroutine fftwf_execute_split_dft_r2c(p, in, ro, io) bind(C, name='fftwf_execute_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io

interface

  • public subroutine fftwf_export_wisdom(write_char, data) bind(C, name='fftwf_export_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: write_char
    type(C_PTR), value :: data

interface

  • public subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: output_file

interface

  • public function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • public function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')

    Arguments

    None

    Return Value type(c_ptr)

interface

  • public subroutine fftwf_flops(p, add, mul, fmas) bind(C, name='fftwf_flops')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(out) :: add
    real(kind=C_DOUBLE), intent(out) :: mul
    real(kind=C_DOUBLE), intent(out) :: fmas

interface

  • public subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')

    Arguments

    None

interface

  • public subroutine fftwf_fprint_plan(p, output_file) bind(C, name='fftwf_fprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    type(C_PTR), value :: output_file

interface

  • public subroutine fftwf_free(p) bind(C, name='fftwf_free')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public function fftwf_import_wisdom(read_char, data) bind(C, name='fftwf_import_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: read_char
    type(C_PTR), value :: data

    Return Value integer(kind=c_int)

interface

  • public function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: input_file

    Return Value integer(kind=c_int)

interface

  • public function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • public function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: input_string

    Return Value integer(kind=c_int)

interface

  • public function fftwf_init_threads() bind(C, name='fftwf_init_threads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')

    Arguments

    None

interface

  • public function fftwf_malloc(n) bind(C, name='fftwf_malloc')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft(rank, n, in, out, sign, flags) bind(C, name='fftwf_plan_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_1d(n, in, out, sign, flags) bind(C, name='fftwf_plan_dft_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_2d(n0, n1, in, out, sign, flags) bind(C, name='fftwf_plan_dft_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_3d(n0, n1, n2, in, out, sign, flags) bind(C, name='fftwf_plan_dft_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_c2r(rank, n, in, out, flags) bind(C, name='fftwf_plan_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_c2r_1d(n, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_c2r_2d(n0, n1, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_c2r_3d(n0, n1, n2, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_r2c(rank, n, in, out, flags) bind(C, name='fftwf_plan_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_r2c_1d(n, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_r2c_2d(n0, n1, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_dft_r2c_3d(n0, n1, n2, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftwf_plan_guru64_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru64_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru64_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftwf_plan_guru64_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftwf_plan_guru64_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftwf_plan_guru64_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru64_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftwf_plan_guru64_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftwf_plan_guru_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftwf_plan_guru_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftwf_plan_guru_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftwf_plan_guru_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_guru_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftwf_plan_guru_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_many_dft(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, sign, flags) bind(C, name='fftwf_plan_many_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_many_dft_c2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftwf_plan_many_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_many_dft_r2c(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftwf_plan_many_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_many_r2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, kind, flags) bind(C, name='fftwf_plan_many_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    integer(kind=C_INT), value :: howmany
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), intent(in), dimension(*) :: onembed
    integer(kind=C_INT), value :: ostride
    integer(kind=C_INT), value :: odist
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_r2r(rank, n, in, out, kind, flags) bind(C, name='fftwf_plan_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_r2r_1d(n, in, out, kind, flags) bind(C, name='fftwf_plan_r2r_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_r2r_2d(n0, n1, in, out, kind0, kind1, flags) bind(C, name='fftwf_plan_r2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public function fftwf_plan_r2r_3d(n0, n1, n2, in, out, kind0, kind1, kind2, flags) bind(C, name='fftwf_plan_r2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_FFTW_R2R_KIND), value :: kind2
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: nthreads

interface

  • public function fftwf_planner_nthreads() bind(C, name='fftwf_planner_nthreads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • public subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • public subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), value :: t

interface

  • public function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value type(c_ptr)


Derived Types

type, public ::  fft_obj

A utility to perform Fast Fourier Transforms

Components

Type Visibility Attributes Name Initial
integer, public :: Ng(3)

Global number of grid points in each direction

type(block_obj), public, pointer :: block => null()

Associated block structure

type(fftbuf_obj), public :: buffers(3)

Input/Output buffers passed to FFTW

integer, public :: contig_dir = 0

Continguous direction

logical, public :: fft_dir(3) = .false.

Flags for FFT in each direction

integer, public :: l_dims(3)

Size of original array in each direction

integer, public :: l_offsets(3)

Offsets of the local original array in global array

type(C_PTR), public :: p_in(3) = C_NULL_PTR

Pointer to input array

type(C_PTR), public :: p_out(3) = C_NULL_PTR

Pointer to output array

type(parallel_obj), public, pointer :: parallel => null()

Associated parallel structure

type(C_PTR), public :: plan_b(3) = C_NULL_PTR

Pointer to FFTW plan for inverse transform

type(C_PTR), public :: plan_f(3) = C_NULL_PTR

Pointer to FFTW plan for forward transform

integer, private, allocatable :: r_counts(:)

Element count to be received by this MPI rank

integer, private, allocatable :: r_displs(:)

Element displacements received by this MPI rank

integer, private, allocatable :: r_ptr(:)

Pointers in received buffers

integer, private, allocatable :: s_counts(:)

Element count to be sent by this MPI rank

integer, private, allocatable :: s_displs(:)

Element displacements sent by this MPI rank

integer, private, allocatable :: s_ptr(:)

Pointers in sent buffers

Type-Bound Procedures

procedure, public :: Finalize => fft_obj_Final
procedure, public :: GetOriginalLayout => fft_obj_GetOriginalLayout
procedure, public :: GetRankFromLayout => fft_obj_GetRankFromLayout
procedure, public :: GetTransposeLayout => fft_obj_GetTransposeLayout
procedure, public :: Initialize => fft_obj_Init
procedure, public :: Inverse => fft_obj_Inverse
procedure, public :: SetContigDirection => fft_obj_SetContigDirection
procedure, public :: SetFFTDirections => fft_obj_SetFFTDirections
procedure, public :: Transform => fft_obj_Transform
procedure, public :: Transpose => fft_obj_Transpose

type, public, bind(C) ::  fftw_iodim

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT), public :: is
integer(kind=C_INT), public :: n
integer(kind=C_INT), public :: os

type, public, bind(C) ::  fftw_iodim64

Components

Type Visibility Attributes Name Initial
integer(kind=C_INTPTR_T), public :: is
integer(kind=C_INTPTR_T), public :: n
integer(kind=C_INTPTR_T), public :: os

type, public, bind(C) ::  fftwf_iodim

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT), public :: is
integer(kind=C_INT), public :: n
integer(kind=C_INT), public :: os

type, public, bind(C) ::  fftwf_iodim64

Components

Type Visibility Attributes Name Initial
integer(kind=C_INTPTR_T), public :: is
integer(kind=C_INTPTR_T), public :: n
integer(kind=C_INTPTR_T), public :: os

type, private ::  fftbuf_obj

Object containing input/output buffers passed to FFTW

Components

Type Visibility Attributes Name Initial
real(kind=C_DOUBLE), public, pointer :: in(:) => null()

Input buffer

real(kind=C_DOUBLE), public, pointer :: out(:) => null()

Output buffer


Functions

private impure function fft_obj_GetRankFromLayout(this, idx, Ng) result(rank)

Returns the rank owning a given grid index

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

integer, intent(in) :: idx(3)

Grid index

integer, intent(in) :: Ng(3)

Global grid points in each direction

Return Value integer

Rank owning this index


Subroutines

private impure subroutine fft_obj_Final(this)

Finalizes object and frees memory.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

private impure subroutine fft_obj_GetOriginalLayout(this)

Determines data layout of original array.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

private impure subroutine fft_obj_GetTransposeLayout(this, swap_1, swap_2, Ng, Ng_T, l_dims_T, l_offsets_T)

Returns the new layout and decomposition resulting from swapping two directions.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

integer, intent(in) :: swap_1

Direction to swap

integer, intent(in) :: swap_2

Direction to swap

integer, intent(in) :: Ng(3)

Global number of grid points in each direction in the original layout

integer, intent(out) :: Ng_T(3)

Global number of grid points in each direction in the transposed layout

integer, intent(out) :: l_dims_T(3)

Size of each subblock in the transposed layout

integer, intent(out) :: l_offsets_T(3)

Offsets of each subblock in the transposed layout

private impure subroutine fft_obj_Init(this, block, parallel)

Initializes the FFT object.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

type(block_obj), intent(in), target :: block

A block object

type(parallel_obj), intent(in), target :: parallel

Parallel structure to link with

private impure subroutine fft_obj_Inverse(this, field)

Computes the Inverse of a Fourier Transform and stores it back in the input field. The FFT must be given in the halfcomplex format.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

type(eulerian_obj_r), intent(inout) :: field

Field containing FFT coefficient in halfcomplex format

private impure subroutine fft_obj_SetContigDirection(this)

Ensures that there is at least one contiguous direction and selects the one with largest number of grid points since that direction will be decomposed by the transpose.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

private impure subroutine fft_obj_SetFFTDirections(this, dir_flag)

Sets the FFT directions.

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

logical, intent(in) :: dir_flag(3)

FFT directions

private impure subroutine fft_obj_Transform(this, field)

Computes the Fourier Transform of field and stores it back in the input field in the "halfcomplex" (r2r) format. E.g. if the FFT is to be carried out in the 1-dir, then field%cell(:,j,k) contains the fourier transform in the 1-dir stored as follows r_0, r_1, ..., r_(Ng(1)1/2), i_(Ng(1)+1/2-1),..., i_1 r_m is the real part of mode m2pi/L(1) and i_m is the imaginary part of mode m2pi/L(1) for points at location y(j) (or ym(j), depending on the field staggering), z(k) (or zm(k)).

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

type(eulerian_obj_r), intent(inout) :: field

Input field

private impure subroutine fft_obj_Transpose(this, swap_1, swap_2, A, Ng, l_dims, l_offsets, A_T, Ng_T, l_dims_T, l_offsets_T)

Builds the transposed array A_T by swapping directions (swap_1) and (swap_2) of input array A. Note that the MPI decomposition remains unchanged. E.g.: 1) dir1=1 and dir2=2: field_T%cell(i,j,k) = field%cell(j,i,k) 2) dir1=3 and dir2=2: field_T%cell(i,j,k) = field%cell(i,k,j)

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

integer, intent(in) :: swap_1

Direction to swap

integer, intent(in) :: swap_2

Direction to swap

real(kind=wp), intent(in) :: A(:,:,:)

Input array to transpose

integer, intent(in) :: Ng(3)

Global nbr of grid points in the original layout

integer, intent(in) :: l_dims(3)

Size of each subblock in the original layout

integer, intent(in) :: l_offsets(3)

Offsets of each subblock in the original layout

real(kind=wp), intent(out), allocatable :: A_T(:,:,:)

Transposed array

integer, intent(out) :: Ng_T(3)

Global nbr of grid points in the transposed layout

integer, intent(out) :: l_dims_T(3)

Size of each subblock in the transposed layout

integer, intent(out) :: l_offsets_T(3)

Offsets of each subblock in the transposed layout