找回密码
 注册
查看: 1866|回复: 4

奇怪的fortran调试问题

[复制链接]
发表于 2003-12-22 19:44:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
      SUBROUTINE GetWeight (Hs, Ts, Ds, wd1, wd2, nd,
     &                      ih1, ih2, it1, it2, id1, id2, Weight)
      DIMENSION Weight(8)
      DATA h0, dh, nh / 2.0, 3.0, 3 /
      DATA t0, dt, nt / 4.0, 4.0, 3 /
      dd = (wd2 - wd1) / (nd - 1)
      ndir = NINT (360 / dd)
      wd0 = (wd1 + wd2) / 2
c      open(22,file='test.out')  !!!!
      wd = Ds
      diff = MOD (wd - wd0, 360.0)
      IF (diff .LT. -180) diff = diff + 360.0
      IF (diff .GT.  180) diff = diff - 360.0
      wd = wd0 + diff
      h = (Hs - h0) / dh + 1
      t = (Ts - t0) / dt + 1
      d = (wd - wd1) / dd + 1
      id1 = d
      IF (id1 .LT. 1) THEN
        id1 = 1
      ELSE IF (id1 .GE. nd) THEN  !!!!!
        id1 = nd - 1  !!!!!!!!
      ENDIF
      id2 = id1 + 1
      wd = d - id1
      IF (wd .LT. -0.5) wd = -0.5
      IF (wd .GT.  1.5) wd =  1.5
      ih1 = h
      IF (ih1 .LT. 1) THEN
        ih1 = 1
      ELSE IF (ih1 .GE. nh) THEN
        ih1 = nh - 1
      ENDIF
      ih2 = ih1 + 1
      wh = h - ih1
      IF (wh .LT. -0.5) wh = -0.5
      IF (wh .GT.  1.5) wh =  1.5
      it1 = t
      IF (it1 .LT. 1) THEN
        it1 = 1
      ELSE IF (it1 .GE. nt) THEN
        it1 = nt - 1
      ENDIF
      it2 = it1 + 1
      wt = t - it1
      IF (wt .LT. -0.5) wt = -0.5
      IF (wt .GT.  1.5) wt =  1.5
write(*,*)  '192 ih1,id1,id2,ih2,it1,it2=',ih1,id1,id2,ih2,it1,it2
      Weight(1) = (1. - wh) * (1. - wt) * (1. - wd)
      Weight(2) =      wh  * (1. - wt) * (1. - wd)
      Weight(3) = (1. - wh) *      wt  * (1. - wd)
      Weight(4) =      wh  *      wt  * (1. - wd)
      Weight(5) = (1. - wh) * (1. - wt) *      wd
      Weight(6) =      wh  * (1. - wt) *      wd
      Weight(7) = (1. - wh) *      wt  *      wd
      Weight(8) =      wh  *      wt  *      wd
write(*,*) '201 ih1,id1,id2,ih2,it1,it2=',ih1,id1,id2,ih2,it1,it2
c      RETURN
      END
write results:
192 ih1,id1,id2,ih2,it1,it2=           1           4           5           2
           1           2
201 ih1,id1,id2,ih2,it1,it2= -1114184299 -1111593025  1047399346  1044160252
  1052548858 -1119981631
输出结果标有192与201的不一样,但是上面的程序中并没有在这两个语句中的ih1,id1,id2,ih2,it1,it2变量做任何操作啊?为什么?
那位高人指点一二,谢谢!

发表于 2003-12-23 11:44:47 | 显示全部楼层

奇怪的fortran调试问题

      SUBROUTINE GetWeight (Hs, Ts, Ds, wd1, wd2, nd,
     &                     ih1, ih2, it1, it2, id1, id2, Weight)
      real Hs, Ts, Ds, wd1, wd2, nd
      integer ih1, ih2, it1, it2, id1, id2
      real Weight(8)
..............................
..............................
发表于 2003-12-23 15:02:45 | 显示全部楼层

奇怪的fortran调试问题

Thank you very much! Later, I will try.
发表于 2003-12-23 15:12:33 | 显示全部楼层

奇怪的fortran调试问题

再次失败,为什么?ih1,id1,id2,ih2,it1,it2在这两个数处语句中间没有任何操作?奇怪了。
 楼主| 发表于 2003-12-23 16:43:11 | 显示全部楼层

奇怪的fortran调试问题

成功了,刚才犯了一个小错,谢谢windsnow !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表