Fortran Coder

标题: !!!注释掉输出语句,程序不能运行问题求助!!! [打印本页]

作者: wsyqz    时间: 2020-4-27 21:26
标题: !!!注释掉输出语句,程序不能运行问题求助!!!
本帖最后由 wsyqz 于 2020-4-27 21:49 编辑

各位前辈,小弟是做有限元方向的的,采用的工具是Abaqus,配合Fortran编写的程序(.for),完成有限元分析。
但是最近小弟发现一个非常玄幻的问题:
只要注释掉或者删除 .for文件中的一段负责输出语句(与实际计算过程无关,仅仅是输出当前运行的进度),整个程序的输出结果不收敛;
保留该段,程序可以配合Abaqus正常完成分析,该语句如下


CCCCCCCCCCCCCCCCCCCCCCCC
        WRITE (*,34) M
34    FORMAT ('M= ',I6.5,/)
       WRITE (*,35) N
35    FORMAT ('N= ',I6.5,/)
CCCCCCCCCCCCCCCCCCCCCCCC


经过尝试,发现注释掉后两行,保留前两行(如下所示),程序仍可正常运行
CCCCCCCCCCCCCCCCCCCCCCCC
        WRITE (*,34) M
34    FORMAT ('M= ',I6.5,/)

!      WRITE (*,35) N
!35    FORMAT ('N= ',I6.5,/)
CCCCCCCCCCCCCCCCCCCCCCCC

或者注释掉前两行,保留后两行(如下所示),程序仍可正常运行
CCCCCCCCCCCCCCCCCCCCCCCC
!       WRITE (*,34) M
!34    FORMAT ('M= ',I6.5,/)
        WRITE (*,35) N
35    FORMAT ('N= ',I6.5,/)

CCCCCCCCCCCCCCCCCCCCCCCC

但是只要这一段语句中注释掉所有write语句,那么程序计算不收敛,仿佛程序要求这里必须有输出才行,不知道到底是什么原因…………

求各位前辈指点!





作者: li913    时间: 2020-4-28 10:19
这种情况偶尔会遇到,代码bug造成的,比如越界访问。只能通过调试解决。
作者: wsyqz    时间: 2020-4-29 08:53
li913 发表于 2020-4-28 10:19
这种情况偶尔会遇到,代码bug造成的,比如越界访问。只能通过调试解决。

看到老师您的回复后,我仔细检查了一下程序,还真发现了一个程序流程上的bug,虽然这个bug不影响计算结果, 但是在更正这个bug后,即使删除帖子里提到的输出语句,程序也可以正常运行了




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