金曜日, 8月 28, 2009

f2pyを使ってf90のサブルーチンに配列を渡す

f2pyを使ってPythonで使えるモジュールをFortran90で書いていたのですが、例えば、

subroutine foo(a,n)
   integer,intent(in),dimension(n) :: a
   integer,intent(in) :: n
みたいなサブルーチンからf2pyでモジュールbarを作成して、
import bar
a = numpy.array([1,2,3,4])
bar.foo(a,a.size)
みたいに呼び出す所を間違えて"bar.foo(a)"としても、サブルーチン側にはちゃんと配列の大きさが渡っているのに気が付いて不思議に思っていました。

こちら(*1)を見てモジュールbarの__doc__を確認すると、

This module 'bar' is auto-generated with f2py (version:2_5972).
Functions:
  foo(a,n=len(a))
という風なインターフェースが作られていることが判ったのです。

ちょっと安心。

*1 Writing fast Fortran routines for Python

0 件のコメント: