【发布时间】:2012-07-11 09:01:23
【问题描述】:
Fortran 子例程可以将另一个子例程作为参数。
subroutine mst(yht)
..
..
call yht(..)
但是来自 python 的对象数组呢?我该如何发送说
arr=[yht,yht,yht]
到 Fortran。我试过了,但失败了。有什么办法吗?
【问题讨论】:
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 的互操作性特性来读写它们,那么您可能会取得更大的成功。 Metcalf, Reid and Cohen 状态 (p246)
这些限制允许类型与 C 结构类型互操作 具有相同数量的组件。组件对应于 在他们的定义中的位置。每个 Fortran 组件必须是 可与相应的 C 组件互操作。
【讨论】: