在python中调用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的值?

解决方法:

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

$f2py -c -m mod nfw.f90

$python
import mod
mod.nfw.c

array(0.0)

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

上一篇:Android Jetpack系列——ViewModel源码分析


下一篇:linux – 在现代编译器中编译狡猾的Fortran 77代码