cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: FFTW 3.3.8: Wisdom of Fortran? cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:
cannam@167:

cannam@167: Previous: , Up: Calling FFTW from Legacy Fortran   [Contents][Index]

cannam@167:
cannam@167:
cannam@167: cannam@167:

8.5 Wisdom of Fortran?

cannam@167: cannam@167:

In this section, we discuss how one can import/export FFTW wisdom cannam@167: (saved plans) to/from a Fortran program; we assume that the reader is cannam@167: already familiar with wisdom, as described in Words of Wisdom-Saving Plans. cannam@167:

cannam@167: cannam@167:

The basic problem is that is difficult to (portably) pass files and cannam@167: strings between Fortran and C, so we cannot provide a direct Fortran cannam@167: equivalent to the fftw_export_wisdom_to_file, etcetera, cannam@167: functions. Fortran interfaces are provided for the functions cannam@167: that do not take file/string arguments, however: cannam@167: dfftw_import_system_wisdom, dfftw_import_wisdom, cannam@167: dfftw_export_wisdom, and dfftw_forget_wisdom. cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:

cannam@167: cannam@167:

So, for example, to import the system-wide wisdom, you would do: cannam@167:

cannam@167:
cannam@167:
        integer isuccess
cannam@167:         call dfftw_import_system_wisdom(isuccess)
cannam@167: 
cannam@167: cannam@167:

As usual, the C return value is turned into a first parameter; cannam@167: isuccess is non-zero on success and zero on failure (e.g. if cannam@167: there is no system wisdom installed). cannam@167:

cannam@167:

If you want to import/export wisdom from/to an arbitrary file or cannam@167: elsewhere, you can employ the generic dfftw_import_wisdom and cannam@167: dfftw_export_wisdom functions, for which you must supply a cannam@167: subroutine to read/write one character at a time. The FFTW package cannam@167: contains an example file doc/f77_wisdom.f demonstrating how to cannam@167: implement import_wisdom_from_file and cannam@167: export_wisdom_to_file subroutines in this way. (These routines cannam@167: cannot be compiled into the FFTW library itself, lest all FFTW-using cannam@167: programs be required to link with the Fortran I/O library.) cannam@167:

cannam@167: cannam@167: cannam@167: cannam@167: