我尝试构建一个非常简单的f2py程序示例来打印函数的结果。该计划的构建如下:
1)我称之为函数的主程序:
subroutine function_main
use parameters
implicit none
!-------------------------------------!
integer, PARAMETER :: n = 2 ! dimension of the function ( = num. of variables)
real*8, parameter :: a = 0.001d0
!-------------------------------------!
real*8, DIMENSION(n) :: x ! this is the vector
integer :: m
m = n
! DECLARE THE variables !
x(1) = 0.d0
x(2) = 0.001d0
print*, 'chi2(x,m)'
print*, chi2(x,m)
end subroutine function_main
2)我定义函数的模块:
MODULE parameters
contains
real*8 function chi2(x,m)
implicit none
!-------------------------------------!
integer, PARAMETER :: n = 2 ! dimension of the function ( = num. of variables)
real*8, parameter :: a = 0.001d0
!-------------------------------------!
real*8, dimension(n) :: var
real*8, DIMENSION(n) :: x ! defined in the main program
integer :: m
var(1)=x(1)
var(2)=x(2)-asin(x(2))
chi2 = 1.d0 + (var(2)-a)**2.d0
end function
end module parameters
我发布了程序的修改版本,应该与f2py一起使用(http://websrv.cs.umt.edu/isis/index.php/F2py_example我遵循本指南)。我使用以下命令编译并启动程序:
f2py -m function_main -h function_main.pyf function_module.f90 function_main.f90
和
f2py -c --fcompiler=gnu95 test_basic.pyf function_module.f90 function_main.f90
它创建了以下function_main.pyf文件(我链接文件here),并使用Ipython脚本启动它:
import function_main
def run():
n = 2
m = 2
a = 0.001
funtion_main.function_main()
if __name__=='__main__':
print function_main.chi2
我认为唯一的问题是在这个脚本中,因为我能够创建 function_main.so需要通过python启动程序。事实上,我收到的错误如下:
AttributeError: 'module' object has no attribute 'chi2'
有人可以帮助我吗?非常感谢!