24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2225  |  回复: 11

jj6701

新虫 (小有名气)

[求助] 很简单的Fortran赋值出错啦,求大神们帮忙找bug...已有3人参与

就是以下这么简单的循环赋值语句,在NX=NY=21和NX=NY=31时结果完全没问题,当把NX和NY提高到41及以上时,以下这些循环语句中输出的XM也都没有问题,但是YM却都不对,比如第三行的YM(I)明明已经都赋予0.0了,但是输出的却不是零,第十一行把HY赋予YM时,输出也都不是HY。。。不知道是什么问题,求大神指教。。。mua mua。。。
      DO I=1,NX       
        XM(I)=HX*(I-1.0)/(NX-1.0)
        YM(I)=0.0
      ENDDO
      DO I=1,NY-1       
        XM(NX+I)=HX
        YM(NX+I)=HY*I/(NY-1.0)
      ENDDO
      DO I=1,NX-1       
        XM(NX+NY-1+I)=HX-HX*I/(NX-1.0)
        YM(NX+NY-1+I)=HY
      ENDDO
      DO I=1,NY-2       
        XM(2*NX+NY-2+I)=0.0
        YM(2*NX+NY-2+I)=HY-HY*I/(NY-1.0)
      ENDDO
      DO I=1,NY-2
      DO J=1,NX-2
        IJ=2*(NX+NY)-4+(NX-2)*(I-1)+J
        XM(IJ)=J/(NX-1.0)*HX
        YM(IJ)=I/(NY-1.0)*HY
      ENDDO
      ENDDO
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

旋转的月

金虫 (正式写手)

你得写出来输出的是什么啊。
2楼2014-02-18 07:04:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluesky123

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
看了一下,怀疑可能是YM(*)这个数组的长度(DIMENSION),或者类型是不是没有定义好。
简单的循环语句,在逻辑上应该不会有问题。建议在所有的循环前面,给两个数组的所有元素赋值为0。
Keep moving!
3楼2014-02-18 11:57:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

newbing

木虫 (正式写手)

可能是类型设置的不对
COMEON,BABY!
4楼2014-02-18 16:05:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

newbing

木虫 (正式写手)

IJ=2*(NX+NY)-4+(NX-2)*(I-1)+J
这个语句是不是有问题?
COMEON,BABY!
5楼2014-02-18 16:39:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

btx97

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
猜测应该是数组越界问题吧。
你得把前因后果都写出来吧,只写一个部,别人想帮忙也很难重复你的错误问题,无法判断问题在哪的。
整个最小的出错的程序代码出来帮你解答的人会更多。
6楼2014-02-18 17:05:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jj6701

新虫 (小有名气)

引用回帖:
2楼: Originally posted by 旋转的月 at 2014-02-18 07:04:18
你得写出来输出的是什么啊。

找到错因了,数组越界了,定义的XM(NOTN),YM(NOTN),NOTN只给了1000,41*41就不行了。。。太粗心了。。。掩面而逃啊。。。感谢啊。。。
7楼2014-02-18 19:08:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jj6701

新虫 (小有名气)

引用回帖:
3楼: Originally posted by bluesky123 at 2014-02-18 11:57:50
看了一下,怀疑可能是YM(*)这个数组的长度(DIMENSION),或者类型是不是没有定义好。
简单的循环语句,在逻辑上应该不会有问题。建议在所有的循环前面,给两个数组的所有元素赋值为0。

找到错因了,数组越界了,定义的XM(NOTN),YM(NOTN),NOTN只给了1000,41*41就不行了。。。太粗心了。。。掩面而逃啊。。。
8楼2014-02-18 19:09:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jj6701

新虫 (小有名气)

引用回帖:
6楼: Originally posted by btx97 at 2014-02-18 17:05:53
猜测应该是数组越界问题吧。
你得把前因后果都写出来吧,只写一个部,别人想帮忙也很难重复你的错误问题,无法判断问题在哪的。
整个最小的出错的程序代码出来帮你解答的人会更多。

找到错因了,数组越界了,定义的XM(NOTN),YM(NOTN),NOTN只给了1000,41*41就不行了。。。太粗心了。。。掩面而逃啊。。。
9楼2014-02-18 19:09:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jj6701

新虫 (小有名气)

引用回帖:
5楼: Originally posted by newbing at 2014-02-18 16:39:42
IJ=2*(NX+NY)-4+(NX-2)*(I-1)+J
这个语句是不是有问题?

找到错因了,数组越界了,定义的XM(NOTN),YM(NOTN),NOTN只给了1000,41*41就不行了。。。太粗心了。。。掩面而逃啊。。。
10楼2014-02-18 19:09:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jj6701 的主题更新
信息提示
请填处理意见