Fortran Coder

查看: 195|回复: 3

[混编] Forpy:借用Python的轮子

[复制链接]

49

帖子

12

主题

1

精华

专家

F 币
471 元
贡献
293 点
发表于 2019-5-27 02:24:13 | 显示全部楼层 |阅读模式
有人会报怨,Fortran的库太少了
没关系,借助iso_c_binding,可以拥抱粗大腿Python


Forpy: A library for Fortran-Python interoperability
网址:https://github.com/ylikx/forpy


Python造的轮子:list, dict, tuple, numpy可以统统拿来直接用


以下是一个例子:
[Fortran] 纯文本查看 复制代码
program intro_to_forpy
  use forpy_mod
  implicit none

  integer :: ierror
  type(list) :: my_list

  ierror = forpy_initialize()
  ierror = list_create(my_list)

  ierror = my_list%append(19)
  ierror = my_list%append("Hello world!")
  ierror = my_list%append(3.14d0)
  ierror = print_py(my_list)

  call my_list%destroy
  call forpy_finalize

end program

回复

使用道具 举报

685

帖子

0

主题

0

精华

大师

F 币
638 元
贡献
357 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-5-27 10:46:20 | 显示全部楼层
这个工程的工作量也是浩大了。

个人觉得,就算你能使用python提供的一些数据结构,也不能很畅快的使用。
操作符、intrinsic的函数等配套的不支持。

如果确实需要这些动态的数据结构,不如直接用python重写。

49

帖子

12

主题

1

精华

专家

F 币
471 元
贡献
293 点
 楼主| 发表于 2019-5-27 12:04:18 | 显示全部楼层
本帖最后由 weixing1531 于 2019-5-27 12:05 编辑

看了一下forpy_mod.F90的代码量有1.1万多行
核心思想就把借助iso_c_binding把Python的C接口转换成Fortran接口
有免费轮子用就很不错了

685

帖子

0

主题

0

精华

大师

F 币
638 元
贡献
357 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-5-27 14:45:55 | 显示全部楼层
如果有一个自动转换 C/C++ 的 h 文件为 ISO_C_Binding 的 mod 文件就好了。
可以省很多功夫~~利国利民
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-6-27 09:56

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表