cannam@95: cannam@95:
cannam@95:cannam@95: Next: Wisdom String Export/Import from Fortran, cannam@95: Previous: Accessing the wisdom API from Fortran, cannam@95: Up: Accessing the wisdom API from Fortran cannam@95:
The easiest way to export and import wisdom is to do so using
cannam@95: fftw_export_wisdom_to_filename and
cannam@95: fftw_wisdom_from_filename.  The only trick is that these
cannam@95: require you to pass a C string, which is an array of type
cannam@95: CHARACTER(C_CHAR) that is terminated by C_NULL_CHAR. 
cannam@95: You can call them like this:
cannam@95: 
cannam@95: 
integer(C_INT) :: ret cannam@95: ret = fftw_export_wisdom_to_filename(C_CHAR_'my_wisdom.dat' // C_NULL_CHAR) cannam@95: if (ret .eq. 0) stop 'error exporting wisdom to file' cannam@95: ret = fftw_import_wisdom_from_filename(C_CHAR_'my_wisdom.dat' // C_NULL_CHAR) cannam@95: if (ret .eq. 0) stop 'error importing wisdom from file' cannam@95:cannam@95:
Note that prepending ‘C_CHAR_’ is needed to specify that the
cannam@95: literal string is of kind C_CHAR, and we null-terminate the
cannam@95: string by appending ‘// C_NULL_CHAR’.  These functions return an
cannam@95: integer(C_INT) (ret) which is 0 if an error
cannam@95: occurred during export/import and nonzero otherwise.
cannam@95: 
cannam@95:    
It is also possible to use the lower-level routines
cannam@95: fftw_export_wisdom_to_file and
cannam@95: fftw_import_wisdom_from_file, which accept parameters of the C
cannam@95: type FILE*, expressed in Fortran as type(C_PTR). 
cannam@95: However, you are then responsible for creating the FILE*
cannam@95: yourself.  You can do this by using iso_c_binding to define
cannam@95: Fortran intefaces for the C library functions fopen and
cannam@95: fclose, which is a bit strange in Fortran but workable.
cannam@95: 
cannam@95: 
cannam@95:    
cannam@95: