Fortran Coder

楼主: sharpcoder
打印 上一主题 下一主题

[混编] Fortran和C/C++混编

[复制链接]

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

楼主
发表于 2016-1-13 08:20:14 | 显示全部楼层
1、成熟代码的话,不用重写,直接加个interface按照iso c binding的要求,给出C的接口,方便C或C++调用
2、混合编译的话,为啥不用cmake呢?

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2016-1-13 10:31:24 | 显示全部楼层
sharpcoder 发表于 2016-1-13 09:08
非常感谢您!

1. 因为最终是要做成商业计算软件发布,我们的只是其中一小部分,牵扯到发布要求以及平台的 ...

若是fortran代码技术状态冻结,那么iso c bing写interface,本质上与打包动态链接库一个路数
反之,甭纠结,勿留恋,C++推倒重来
btw,为啥fortran代码打包动态链接库的办法被否决呢?好多商业软件照样用得很欢快

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

板凳
发表于 2016-1-13 10:33:50 | 显示全部楼层
sharpcoder 发表于 2016-1-13 09:10
好的,我先去看看。非常感谢您~

主要还是完全没有思路,感觉无从下手~我先找找有没有类似的例子,这样可 ...

“之前我们都是把fortran打包成dll或者so文件直接调用”
  -------------都是一个路数,iso c binding就是把各家fortran编译器混合编程标准给规范统一了

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

地板
发表于 2016-1-13 17:55:33 | 显示全部楼层
本帖最后由 pasuka 于 2016-1-13 17:56 编辑
sharpcoder 发表于 2016-1-13 15:50
理论上是想完全推倒重来,但是考虑到代码量太大了,所以打算一个一个子程序的改,改完一个测试一个,以免 ...

1、fortran代码对编译器的依赖性言真得很低了;
2、一个一个改,搞得不伦不类,只会事倍功半,不如另开一个C++项目,这边的fortran代码只做维护
熟悉有限元软件的话,abaqus的内核就是下决心用C++重写,ANSYS的mechanical classical内核不变,重心转移到workbench平台,nastran的内核抱着fortran不放,93版的nastran源代码现在github上面就有,也没见几个人去玩,虽然有老外说编译无大问题
github和sf上面科学计算的开源程序,要么C\C++,要么python、matlab,还在坚守fortran的寥寥无几

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

5#
发表于 2016-1-14 08:30:46 | 显示全部楼层
sharpcoder 发表于 2016-1-13 22:05
我们的代码确实比较长,仅有效行数就超十万了,所以完全重新成本会非常高,混编也有很多不好处理的问题, ...

时代在进步,不能抱残守缺,以前十万行的fortran77代码,用C++重写可能二万行足矣,换成matlab或许5000就行,因为数值计算领域有很多现成饭可以吃
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-5 21:11

Powered by Tencent X3.4

© 2013-2024 Tencent

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