如何使用f2py来调用大型fortran包

时间:2015-12-14 07:50:21

标签: python numpy fortran f2py

我需要使用完全用Fortran编写的数学包。该包不在单个文件中,而是编译为存档文件(.a文件)。

我有完整的源代码。我不了解Fortran。

我在这里快速阅读了f2py文件:

http://docs.scipy.org/doc/numpy-dev/f2py/

它对我不起作用。是否有更好的文档或指南来解决这个问题?

修改

根据评论的要求。我不确定我是否正确使用它(我不了解Fortran),有一些功能可能对我有用:

  SUBROUTINE QP_initialize( data, control, inform )
  TYPE ( QP_data_type ), INTENT( INOUT ) :: data
  TYPE ( QP_control_type ), INTENT( OUT ) :: control
  TYPE ( QP_inform_type ), INTENT( OUT ) :: inform

  SUBROUTINE QP_solve( prob, data, control, inform, C_stat, B_stat )
  TYPE ( QPT_problem_type ), INTENT( INOUT ) :: prob
  TYPE ( QP_data_type ), INTENT( INOUT ) :: data
  TYPE ( QP_control_type ), INTENT( IN ) :: control
  TYPE ( QP_inform_type ), INTENT( OUT ) :: inform
  INTEGER, INTENT( OUT ), OPTIONAL, DIMENSION( prob%m ) :: C_stat
  INTEGER, INTENT( OUT ), OPTIONAL, DIMENSION( prob%n ) :: B_stat

1 个答案:

答案 0 :(得分:0)

由于您说您只需要调用3-5种不同的功能,因此一种简单的方法是使用ctypes。它包含在Python中,虽然乍一看似乎是为了调用C函数,但在许多系统上,Fortran大部分都与C兼容。

见这里:https://docs.python.org/2/library/ctypes.html

或者,您可以使用SciPy进行二次程序优化:http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.minimize.html