4

我想用 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的值?

4

1 回答 1

6

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

$ f2py -c -m mod nfw.f90

$ python
import mod
mod.nfw.c

array(0.0)

确保您使用 f2py 模块编译源文件。

于 2012-10-29T21:31:27.307 回答