在python中调用fortran代码时如何处理全局变量(例如使用f2py)?

时间:2012-10-29 20:53:56

标签: python global-variables fortran f2py

我想用python运行一些fortran代码,并使用 f2py -c -m 。但是,似乎只有 FUNCTION 打包到 .so 文件中,而不是 PROGRAM 。那我怎么处理全局变量呢?例如,变量 c 放在模块

MODULE nfw
  double precision :: c
END MODULE nfw

,在PROGRAM中被修改,并由隐含的同一文件中的FUNCTION使用

PROGRAM Compute_Profile
  USE nfw
  c = 5.0
END PROGRAM Compute_Profile

DOUBLE PRECISION FUNCTION y(x)
  USE nfw
  double precision :: x
  y = c * x
  return
END FUNCTION y

如何调用函数 y(x)了解python中 c 的值?

1 个答案:

答案 0 :(得分:6)

在你的f2py模块下应该是另一个模块,Fortran一个名为nfw。它应该在那里。

$ f2py -c -m mod nfw.f90

$ python
import mod
mod.nfw.c

array(0.0)

确保使用带有f2py的模块编译源文件。