Fortran Coder

标题: 求助找出如何数组越界的啊!!感激不尽啊!!! [打印本页]

作者: 尘路    时间: 2014-6-28 10:48
标题: 求助找出如何数组越界的啊!!感激不尽啊!!!
我这是一个很长的程序,但是里面有些重复,显示数组越界,L3=0我怎么也想不出为什么会越界。求指点啊!!!
前边的没有问题,后边就有了

Text1.f90

32 KB, 下载次数: 4


作者: vvt    时间: 2014-6-28 14:41
debug是解决一切运行时错误最好的方式。。
作者: 百事可乐    时间: 2014-6-28 16:40
n2 函数里
n2=(1+dcos(x4_)+dcos(x3_-x4_))*(dsin(x3_*r3+x4_*r4))+(dsin(x3_-x4_)-dsin(x4_))*(dcos(x3_*r3+x4*r4))

是否应该为
n2=(1+dcos(x4_)+dcos(x3_-x4_))*(dsin(x3_*r3+x4_*r4))+(dsin(x3_-x4_)-dsin(x4_))*(dcos(x3_*r3+x4_*r4))

另外,如果楼主有一个好的调试器,对于数组越界可以事半功倍。

比如我的编译器(IVF+VS)就会直接提示
forrtl: severe (408): fort: (3): Subscript #2 of the array AD has value 0 which
is less than the lower bound of 1


中断以后就会发现在 825 行
if(ad(l1,l3)+ad(l2,l4)+ad(l1,l4)==3)then
此处的 L3 = 0,而 ad 从 1 开始。所以越界。

至于 L3 为何为 0 ,你需要继续向前追索原因。(由于算法不熟悉,别人较难帮忙)
作者: mangix2010    时间: 2014-6-30 15:52
设置断点,单步调试~~




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