Chris@10: Chris@10: Chris@10: Overview of Fortran interface - FFTW 3.3.3 Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: Chris@10:
Chris@10: Chris@10:

Chris@10: Next: , Chris@10: Previous: Calling FFTW from Modern Fortran, Chris@10: Up: Calling FFTW from Modern Fortran Chris@10:


Chris@10:
Chris@10: Chris@10:

7.1 Overview of Fortran interface

Chris@10: Chris@10:

FFTW provides a file fftw3.f03 that defines Fortran 2003 Chris@10: interfaces for all of its C routines, except for the MPI routines Chris@10: described elsewhere, which can be found in the same directory as Chris@10: fftw3.h (the C header file). In any Fortran subroutine where Chris@10: you want to use FFTW functions, you should begin with: Chris@10: Chris@10:

Chris@10:

       use, intrinsic :: iso_c_binding
Chris@10:        include 'fftw3.f03'
Chris@10: 
Chris@10:

This includes the interface definitions and the standard Chris@10: iso_c_binding module (which defines the equivalents of C Chris@10: types). You can also put the FFTW functions into a module if you Chris@10: prefer (see Defining an FFTW module). Chris@10: Chris@10:

At this point, you can now call anything in the FFTW C interface Chris@10: directly, almost exactly as in C other than minor changes in syntax. Chris@10: For example: Chris@10: Chris@10:

Chris@10:

       type(C_PTR) :: plan
Chris@10:        complex(C_DOUBLE_COMPLEX), dimension(1024,1000) :: in, out
Chris@10:        plan = fftw_plan_dft_2d(1000,1024, in,out, FFTW_FORWARD,FFTW_ESTIMATE)
Chris@10:        ...
Chris@10:        call fftw_execute_dft(plan, in, out)
Chris@10:        ...
Chris@10:        call fftw_destroy_plan(plan)
Chris@10: 
Chris@10:

A few important things to keep in mind are: Chris@10: Chris@10:

Chris@10: Chris@10: Chris@10: Chris@10: Chris@10: