Fortran Coder

查看: 7864|回复: 4
打印 上一主题 下一主题

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

[复制链接]

146

帖子

42

主题

1

精华

宗师

F 币
1273 元
贡献
629 点
跳转到指定楼层
楼主
发表于 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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
沙发
发表于 2019-5-27 10:46:20 | 只看该作者
这个工程的工作量也是浩大了。

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

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

146

帖子

42

主题

1

精华

宗师

F 币
1273 元
贡献
629 点
板凳
 楼主| 发表于 2019-5-27 12:04:18 | 只看该作者
本帖最后由 weixing1531 于 2019-5-27 12:05 编辑

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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

QQ
地板
发表于 2019-5-27 14:45:55 | 只看该作者
如果有一个自动转换 C/C++ 的 h 文件为 ISO_C_Binding 的 mod 文件就好了。
可以省很多功夫~~利国利民

1

帖子

0

主题

0

精华

入门

F 币
50 元
贡献
21 点
5#
发表于 2019-7-17 20:29:32 | 只看该作者
请问楼主forpy在IVF上怎么配置,想在Fotran程序中调用python的库,但是使用测试代码测试时总报错无法解析外部符号
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 16:32

Powered by Tencent X3.4

© 2013-2024 Tencent

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