2

Fortran 子例程可以将另一个子例程作为参数。

subroutine mst(yht)
 ..
 ..
 call yht(..)

但是来自 python 的对象数组呢?我该如何发送说

arr=[yht,yht,yht]

到 Fortran。我试过了,但失败了。有没有办法做到这一点?

4

1 回答 1

1

这可能是一个扩展的评论,而不是一个答案......

据我了解,f2py它将 Fortran 过程(即函数和子例程)签名转换为 Python。我认为这f2py不会将 Fortran 派生类型定义转换为 Python 对象定义。我已经f2py好几年没用了,所以我可能错了。用 Fortran 派生类型的实例识别 Python 对象的明显途径可能难以实现。

如果您可以说服您的 Python 代码创建 Fortran 编译器识别为 C 结构的东西,并使用 Fortran 的与 C 的互操作性特性来读写它们,您可能会取得更大的成功。 梅特卡夫、里德和科恩州 (p246)

这些限制允许该类型与具有相同数量组件的 C 结构类型互操作。组件在其定义中按位置对应。每个 Fortran 组件必须与相应的 C 组件可互操作。

于 2012-07-11T10:01:31.900 回答