【问题标题】:Current best method for wrapping Modern Fortran code with Python当前使用 Python 包装现代 Fortran 代码的最佳方法
【发布时间】:2012-05-19 13:48:24
【问题描述】:

我知道并且已经使用f2py2e 来包装一些旧的 Fortran 77 代码,但我的理解是它不适用于较新的 Fortran 95 代码。我研究了我应该使用什么,并且遇到了fwrapG3 f2py,它们似乎都没有对它们的当前状态或如何使用它们给出任何解释。我看到f2py的版本有使用第三代f2py的选项,但被评论为没有功能。鉴于此,我不知道我应该使用哪个项目。我应该使用哪一个?

这个问题现在已经交叉发布到(并在)计算科学堆栈交换站点作为 Which package should I use to wrap Modern Fortran Code with Python?

【问题讨论】:

  • 也许可以选择通过ctypes 调用fortran 库?
  • f2py(包含在 scipy 中)似乎 claim 支持 Fortan95。你试过了吗?
  • 您也可以尝试在 scicomp.stackexchange 上询问,因为那里有很多人使用 Python 和 Fortran。
  • 您可能会通过使用现代 Fortran 的“与 C 的互操作性”功能并让您编译的 Fortran 向外界呈现类似 C 的界面来取得进步。
  • f2py2e(numpy/scipy 中的那个)对 Fortran 95 的支持有限(它的设计理念是包装旧的 Fortran 77 代码),因此编写了 fwrap 和 G3 f2py。但是,两者似乎都部分处于非活动状态,并且文档,特别是 G3 f2py 的文档不清楚。

标签: python numpy fortran fortran95 fortran2003


【解决方案1】:

我之前使用SWIG 包装了一些 C/C++ 代码,但它们不支持 Fortran。但是,它们链接到以下内容

至少 FortWrap 声明它们支持 Fortran95,但您可能必须使用 FortWrap 来获取 C/C++ 包装器和用于 Python 包装器的 SWIG。 f90wrap 将根据 f90 源自动生成 Python 包装器(并支持派生类型)。

【讨论】:

  • 我提到了 F2PY,我宁愿避免使用 SWIG。此外,pyfortran 是旧代码,可能不适用于 numpy(它是为 Numeric 设计的),而 FortWrap 是为 C++ 设计的,同样缺乏与 numpy 的集成。
  • 感谢这个答案,我刚刚发现了 f90wrap。你拯救了我的一天!
猜你喜欢
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 2015-02-20
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多