|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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变量做任何操作啊?为什么?
那位高人指点一二,谢谢!
|
|