爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8293|回复: 24

fortran混合编程的出路

[复制链接]

新浪微博达人勋

发表于 2013-7-15 10:46:26 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
    fortran的可视化效果基本上是一个世界级的难题,所以如果做一个可视化的效果,必须依赖于fortran意外的语言,比如C++、C#,VB,但是提到混合编程又没有合适的资料可以参考,不知道大家又没有值得推荐的资料或者图书呢?地址也可以。
    彭国伦版的的确讲了一些C/C++与fortran混合编程的东西,但是不够深入,不知道还有没有更合适的东西,气象上是不是多用C#,而不是C++呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-15 11:54:39 | 显示全部楼层
个人目前在做R和fortran的融合

可视化的东西  VB C#都可以吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-15 12:34:37 | 显示全部楼层
    和fortran的整合并不是想象中的那么难,关键在于多尝试  还有就是原有fortran程序的质量,用来混编的fortran程序最好要写的规范,变量尽量定义后再使用,不要用不常见的或者很旧、很新的语法。
   除了基本的语法问题,整合的关键在于参数的传递,你传过去的参数fortran要能正确识别,这就涉及到不同语言之间变量在内存中的存放顺序问题,把这个搞清楚也就不难了。不过的确不是三两句能说清楚,自己多折腾,多测试。
   fortran和c/c++的混编应该是各种混编里面比较简单的,而且两者的变量有很多相似之处,可以进行对应。彭国伦的书上直接就给出了可用的例子,所谓师傅领进门,你懂了基础的东西后,更深入的就要自己挖掘了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-15 16:05:51 | 显示全部楼层
楼上1、2、3楼都非常精彩。可惜我不懂得Fortran,只知道它擅长于科学计算。学习了。
补充:C也不懂,惭愧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-15 22:27:05 | 显示全部楼层

彭国伦的书足矣吗?还是有什么可以参考的资料呢?
哦,有没有什么好的链接或者资料可以推荐的来理解变量在内存中的存放顺序呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-15 22:27:54 | 显示全部楼层
topmad 发表于 2013-7-15 11:54
个人目前在做R和fortran的融合

可视化的东西  VB C#都可以吧

关于R还是知道的比较少,是否可以赐教下呢,我想多了解一些,或者可以放弃C++,用R来做可视化呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-15 22:28:16 | 显示全部楼层
chengxf 发表于 2013-7-15 16:05
楼上1、2、3楼都非常精彩。可惜我不懂得Fortran,只知道它擅长于科学计算。学习了。
补充:C也不懂,惭愧。 ...

自己用的是自己需要的就好了,这就足矣。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-15 22:36:39 | 显示全部楼层
topmad 发表于 2013-7-15 11:54
个人目前在做R和fortran的融合

可视化的东西  VB C#都可以吧

R原来和Matlab差不多呢,不过是开源的啊,呵呵
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-15 23:24:45 | 显示全部楼层
曾经谷歌到一篇非常精彩的文章,可惜找不到了,后来自己摸索了一些,但是一直也没有时间总结出来,你可以去万方或者cnki上搜一下,有几篇文献还是不错的,是关于fortran和c#混编的,主要问题集中在二维及其以上数组的传递,字符串的传递。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-16 09:31:58 | 显示全部楼层
haobang008 发表于 2013-7-15 22:28
自己用的是自己需要的就好了,这就足矣。

谢谢楼主的鼓励。我只学过Pascal语言,平时也用它。下面关于delphi和fortran的混合编程思路,仅供楼主参考。

    众所周知,FORTRAN强于数值计算,尤其是如果计算主要针对复数进行,则FORTRAN更有无可比拟的优势。FORTRAN是所有语言中唯一将复数定义为一种标准数据类型的语言。
    但是FORTRAN语言在可视化程序设计方面是非常欠缺的,至少目前还没有一家厂商推出具有RAD特性的FORTRAN编译集成开发环境。
    因此,当用FORTRAN实现了一种大型的科学计算以后,却难以将这种计算转变为数据输入简易、结果显示方便的WINDOWS可视化应用程序。这一点,采用Delphi很容易实现。因此,在许多情况下,使用FORTRAN和Delphi的混合编程可同时具有二者的优点。
    本文采用两种不同的方法来实现混合编程。一种是直接执行可执行文件的方式,一种是调用动态链接库中子程序的方式。在第一种方式下,在Delphi程序设计中直接执行FORTRAN程序的执行文件,通过文件来进行数据交换;
     在第二种情况下,首先将FORTRAN程序编译成动态链接库(DLL),在Delphi程序设计中,调用此动态链接库中某个子程序来完成某项计算。这两种方式各有优缺点。
     第一种方式的调试较为简单,不存在不同语言之间的数据类型的不匹配问题。但是,这种方式下,在Delphi中无法实现对程序运行的有效监督,同时,以文件进行数据交换在操作中也不太方便,效率也不高。

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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