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 に答える