24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2364  |  回复: 14

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

引用回帖:
9楼: Originally posted by hfj1988 at 2013-01-11 21:55:20
我是稍微修改了别人的fortran 77 的老程序,里面变量不声明也能用,感觉很不安全,我自己写的程序是用的fortran 90,是不是这两种结合起来可能错?如果我把fortran 77的老程序都转变成fortran 90 工作量很大啊,有 ...

不清楚。如果有这样的好工具,我也想要一个
11楼2013-01-12 08:34:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shmech

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
hfj1988: 金币+15 2013-01-16 17:28:45
引用回帖:
10楼: Originally posted by hfj1988 at 2013-01-11 21:55:26
我是稍微修改了别人的fortran 77 的老程序,里面变量不声明也能用,感觉很不安全,我自己写的程序是用的fortran 90,是不是这两种结合起来可能错?如果我把fortran 77的老程序都转变成fortran 90 工作量很大啊,有 ...

可能Fortran77程序里没有加implicit none?在fortran 90里直接调用fortran 77没有任何问题,不需要格式转换。这也是fortran在科学计算界仍然占据主流的一个重要原因:对于40年前的老程序只要将其包装在一个subroutine或function里面就可以在最新格式的程序调用,重用性极强。

如果你编译fortran 77的时候发现有问题,如上面提到的数组越界等,可以通过指定编译器选项在编译时进行检查,ifort提供的选项是-check bounds.

fortran 77最应该避免的一个语法是goto,它会导致你在看老程序的时候产生毁灭世界的冲动。
fortran 77转换到fortran 90的工具有一些,免费的如Alan Miller网页上提供的to_f90.f90,链接
http://jblevins.org/mirror/amiller/to_f90.f90
这个程序好像也不能完全转换goto。另外nag的windows版fortran也提供转换功能,但更有限。另外有个软件记不清名字了,它有免费和商业版两种,格式转换做得非常好,不过免费版的不提供转换goto语句的功能。

写程序时尽量避免fortran 77的语法,养成良好的编程风格,不但自己赏心悦目也方便了后面维护程序的人。
12楼2013-01-15 14:52:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
12楼: Originally posted by shmech at 2013-01-15 14:52:43
可能Fortran77程序里没有加implicit none?在fortran 90里直接调用fortran 77没有任何问题,不需要格式转换。这也是fortran在科学计算界仍然占据主流的一个重要原因:对于40年前的老程序只要将其包装在一个subrout ...

谢谢!
13楼2013-01-16 17:28:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gxqlp

铁杆木虫 (正式写手)

请问楼主的问题是怎么解决的啊?我现在也遇到了同样的问题,有没有write语句,第一步算出来的值就开始有差别了,导致算了很多步之后,差别就越来越明显了。
理想很丰满,现实很骨感!努力。。。
14楼2013-10-20 21:07:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
14楼: Originally posted by gxqlp at 2013-10-20 21:07:47
请问楼主的问题是怎么解决的啊?我现在也遇到了同样的问题,有没有write语句,第一步算出来的值就开始有差别了,导致算了很多步之后,差别就越来越明显了。

不好意思,我忘记了怎么解决的了。总之编程序要严谨。implicit none 一定要用,数组一要确定要不越界,以免发生无法解释的错误。
15楼2014-10-31 18:51:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hfj1988 的主题更新
信息提示
请填处理意见