主题:循环结构理解求助~~
求助:
以下为有限元Fortran程序中的一段,是老师提供的教学用代码,由FortranIV改编成Fortran90,但是有些地方没有改动。下面的这段循环有点看不懂,请大家指教,谢谢!
DO 830 n = 1,nume
iprint = iprint + 1
IF (iprint > 50) iprint = 1
IF (iprint == 1) WRITE (iout,2060) ng
mtype = matp(n)
xl2 = 0.
DO l = 1,3
d(l) = xyz(l,n) - xyz(l+3,n)
xl2 = xl2 + d(l)*d(l)
END DO
DO l = 1,3
st(l) = (d(l)/xl2)*e(mtype)
st(l+3) = -st(l)
END DO
str = 0.0
DO l = 1,3
i = lm(l,n)
IF (i.gt.0) str = str + st(l)*u(i)
j = lm(l+3,n)
IF (j.gt.0) str = str + st(l+3)*u(j)
END DO
p = str*area(mtype)
WRITE (iout,2070) n,p,str
830 CONTINUE
以下为有限元Fortran程序中的一段,是老师提供的教学用代码,由FortranIV改编成Fortran90,但是有些地方没有改动。下面的这段循环有点看不懂,请大家指教,谢谢!
DO 830 n = 1,nume
iprint = iprint + 1
IF (iprint > 50) iprint = 1
IF (iprint == 1) WRITE (iout,2060) ng
mtype = matp(n)
xl2 = 0.
DO l = 1,3
d(l) = xyz(l,n) - xyz(l+3,n)
xl2 = xl2 + d(l)*d(l)
END DO
DO l = 1,3
st(l) = (d(l)/xl2)*e(mtype)
st(l+3) = -st(l)
END DO
str = 0.0
DO l = 1,3
i = lm(l,n)
IF (i.gt.0) str = str + st(l)*u(i)
j = lm(l+3,n)
IF (j.gt.0) str = str + st(l+3)*u(j)
END DO
p = str*area(mtype)
WRITE (iout,2070) n,p,str
830 CONTINUE