Fortran 子例程可以将另一个子例程作为参数。
subroutine mst(yht)
..
..
call yht(..)
但是来自 python 的对象数组呢?我该如何发送说
arr=[yht,yht,yht]
到 Fortran。我试过了,但失败了。有没有办法做到这一点?
这可能是一个扩展的评论,而不是一个答案......
据我了解,f2py
它将 Fortran 过程(即函数和子例程)签名转换为 Python。我认为这f2py
不会将 Fortran 派生类型定义转换为 Python 对象定义。我已经f2py
好几年没用了,所以我可能错了。用 Fortran 派生类型的实例识别 Python 对象的明显途径可能难以实现。
如果您可以说服您的 Python 代码创建 Fortran 编译器识别为 C 结构的东西,并使用 Fortran 的与 C 的互操作性特性来读写它们,您可能会取得更大的成功。 梅特卡夫、里德和科恩州 (p246)
这些限制允许该类型与具有相同数量组件的 C 结构类型互操作。组件在其定义中按位置对应。每个 Fortran 组件必须与相应的 C 组件可互操作。