【发布时间】:2015-01-27 03:50:37
【问题描述】:
很抱歉对 Fortran 90 和 f2py 都是新手。
我正在使用 Windows 64 位、Python 3.4 64 位、gfortran。 Numpy 版本是 1.9.1,我 评论了“引发 NotImplementedError(”仅支持 MS 编译器 在 gnu.py 中使用 gfortran on win64")",按照此链接的说明: http://scientificcomputingco.blogspot.com.au/2013/02/f2py-on-64bit-windows-python27.html
我有一个fortran模块,写法如下,模块范围变量dp:
! testf2py.f90
module testf2py
implicit none
private
public dp, i1
integer, parameter :: dp=kind(0.d0)
contains
real(dp) function i1(m)
real(dp), intent(in) :: m(3, 3)
i1 = m(1, 1) + m(2, 2) + m(3, 3)
return
end function i1
end module testf2py
那么,如果我运行f2py -c testf2py.f90 -m testf2py
它会报错,说明dp没有被声明。
如果我将模块范围复制到函数范围,它会起作用。
! testf2py.f90
module testf2py
implicit none
private
public i1
integer, parameter :: dp=kind(0.d0)
contains
real(dp) function i1(m)
integer, parameter :: dp=kind(0.d0)
real(dp), intent(in) :: m(3, 3)
i1 = m(1, 1) + m(2, 2) + m(3, 3)
return
end function i1
end module testf2py
不过,这看起来并不是最好的编码实践,因为 它很“湿”。
有什么想法吗?
【问题讨论】:
标签: python numpy fortran fortran90 f2py