Fortran Coder

标题: 关于C语言转换成fortran 90 [打印本页]

作者: 阿兰    时间: 2014-5-19 20:49
标题: 关于C语言转换成fortran 90
求大神进入。因为论文是关于一个土木岩土软件编程 现在我自己根据C语言编了一个fortran, 但是两个输出结果不一样,现在也找不出哪里出现错误,因为学的是土木,都是自己自学编的!!
作者: 楚香饭    时间: 2014-5-19 21:11
请提供有效的信息,否则只有神仙才能帮助你。
作者: 阿兰    时间: 2014-5-19 21:20
就是这两个程序 我编的fortran就是基于这个easymesh的c编写的

easymesh.txt

2.75 KB, 下载次数: 10

easymesh.f90

42.63 KB, 下载次数: 15


作者: 阿兰    时间: 2014-5-19 21:22
chuxf 发表于 2014-5-19 21:11
请提供有效的信息,否则只有神仙才能帮助你。

或者您可不可以推荐关于C语言转换成Fortran之类的书 谢谢您了
作者: 楚香饭    时间: 2014-5-19 21:26
1700行的程序,你能写出来,而且代码风格还可以,证明你不是新手了。
稍长一点的代码,计算结果不正确,确实是很头疼的时间,而且其他人往往无法帮助你。(况且,还需要一些输入文件)

我给你的建议是:
1.分段地测试程序,每个子程序单独测试,确保没问题了,再测试下一个程序,最后再串接起来。(这在中型,大型程序里非常重要)
2.学习 Debug 单步调试。
作者: 楚香饭    时间: 2014-5-19 21:28
阿兰 发表于 2014-5-19 21:22
或者您可不可以推荐关于C语言转换成Fortran之类的书 谢谢您了

据我所知,两种语言之间转换的书,好像都没有。不管是C转Fortran,还是C转Java或是其他转其他。

其实,只要你都掌握了,转换就很简单了。
作者: 阿兰    时间: 2014-5-19 21:31
chuxf 发表于 2014-5-19 21:26
1700行的程序,你能写出来,而且代码风格还可以,证明你不是新手了。
稍长一点的代码,计算结果不正确,确 ...

嗯 好吧 谢了哈
作者: 魔啸天龙    时间: 2014-5-19 21:43
你有必要把这么长的代码改成Fortran代码吗?现在C的执行效率并不低,与Fortran的混合编程也很容易。
作者: 山大克鲁士    时间: 2014-5-20 12:30
F2C是摆设?
不过即使用了F2C,好多地方也要修改的,建议还是用标准的Fortran风格来写代码~
这也是我正在做的一件事情,虽然工作量确实挺大的,不过可以养成一个标准码农的程序风格~
作者: fcode    时间: 2014-5-20 12:45
一切机器改的都不靠谱。

人工改太累。

其实,应该考虑一下长代码改成其他语言,是否有必要?改的目的是什么?

混编挺好~~
作者: 阿兰    时间: 2014-5-20 21:10
山大克鲁士 发表于 2014-5-20 12:30
F2C是摆设?
不过即使用了F2C,好多地方也要修改的,建议还是用标准的Fortran风格来写代码~
这也是我正在 ...

那你知道C语言ej!=-1 转换成fortran语言是ej /=-1吗?
作者: vvt    时间: 2014-5-20 21:21
阿兰 发表于 2014-5-20 21:10
那你知道C语言ej!=-1 转换成fortran语言是ej /=-1吗?

是的
作者: 阿兰    时间: 2014-5-20 21:29
fcode 发表于 2014-5-20 12:45
一切机器改的都不靠谱。

人工改太累。

但是老师就是需要我把C语言转换成fortran 因为C语言编写的是正确的一个关于建立网格组的程序,我老师建议我把fortran跟c语言每个子程序的结果print 那如果我直接进行两个程序的语句对比有用不?
作者: vvt    时间: 2014-5-20 21:38
阿兰 发表于 2014-5-20 21:29
但是老师就是需要我把C语言转换成fortran 因为C语言编写的是正确的一个关于建立网格组的程序,我老师建议 ...

我还是那句话,真的有必要转换么?你转换的目的是什么?

如果你真的要对比,print也行,debug也行。(推荐后者)

语句对比,只能从逻辑上进行,而不能从实际上对比。(实际情况往往超出逻辑的预期)
作者: 山大克鲁士    时间: 2014-5-20 23:28
LZ,如果你C不是专家级或者骨灰级的话,我真心不建议你将C专门转成Fortran。
正如本论坛版主所言,你完全可以实现混编的方式。
把C里面的代码(既然是正确的),封装成为按照某种调用约定(cdecl或stdcall,推荐前者)的动态/静态库,然后用fortran的!dec语言,将库的接口函数一个个弄成fortran的subroutine或者是function。

作者: 山大克鲁士    时间: 2014-5-20 23:29
应该是!dec语句,该死的输入法。。。
作者: pasuka    时间: 2014-5-21 08:18
山大克鲁士 发表于 2014-5-20 23:28
LZ,如果你C不是专家级或者骨灰级的话,我真心不建议你将C专门转成Fortran。
正如本论坛版主所言,你完全可 ...

其实用gnu编译器的话,标准的C和Fortran还不是一码事情,写好interface,一股脑儿编译就行




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2