f2py:打印功能

时间:2015-01-04 15:53:36

标签: python fortran f2py

我尝试构建一个非常简单的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'

有人可以帮助我吗?非常感谢!

0 个答案:

没有答案