首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运用现代福特兰的FFTW智慧

如何运用现代福特兰的FFTW智慧
EN

Stack Overflow用户
提问于 2017-07-04 08:59:15
回答 1查看 270关注 0票数 1

我想用FFTW智慧系统来记住FFTW之间的工作计划。这里记录了C程序智慧的使用:2.html对于C,相关的字符串将被修改为FFTW_MEASURE | FFTW_USE_WISDOM。我试着在这里模仿:

代码语言:javascript
复制
!! to compile: gfortran -O3 --fast-math -I/usr/include -o usewisdom usewisdom.f90 -lfftw3
代码语言:javascript
复制
Module FFTW3
    use, intrinsic :: iso_c_binding
    include 'fftw3.f03'
End Module FFTW3

Program usewisdom
  use FFTW3
  integer (kind=c_int), parameter :: nx=2048,ny=2048,np=ny/2+1
  real (kind=c_double) :: omega(ny,nx)=1.d0
  complex (kind=c_double_complex) :: fftomega(np,nx)
  ier=fftw_import_wisdom_from_filename("wisdom")
  print *,"wisdom output should not be 0:",ier
  call dfftw_plan_dft_r2c_2d(fwd,ny,nx,omega,fftomega,&
       &FFTW_PATIENT | FFTW_USE_WISDOM)
  call dfftw_execute_dft_r2c(fwd,omega,fftomega) !rem clobbers omega

End Program usewisdom

但是gfortran不喜欢字符串:

代码语言:javascript
复制
gfortran -O3 --fast-math -I/usr/include -o usewisdom usewisdom.f90 -lfftw3
usewisdom.f90:16:21:

    &FFTW_PATIENT | FFTW_USE_WISDOM)
                 1
Error: Syntax error in argument list at (1)

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-04 10:05:25

根据现代Fortran接口文档

多个规划师标志与ior组合(相当于C中的‘|’)。FFTW_MEASURE | FFTW_DESTROY_INPUT变成ior(FFTW_MEASURE, FFTW_DESTROY_INPUT)。(您也可以使用“+”,只要您不尝试不止一次地包含给定的标志。)

因此,您应该将FFTW_USE_WISDOM规划者标志包括如下:

代码语言:javascript
复制
  call dfftw_plan_dft_r2c_2d(fwd,ny,nx,omega,fftomega,&
     &ior(FFTW_PATIENT, FFTW_USE_WISDOM))

代码语言:javascript
复制
  call dfftw_plan_dft_r2c_2d(fwd,ny,nx,omega,fftomega,&
     &FFTW_PATIENT + FFTW_USE_WISDOM)

注意,文件的这一节中描述的用于组合标志的类似语法也可以用于Legacy。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44901504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档