所以我需要声明很多变量,原始代码如下所示:
DIMENSION energy_t(20000),nrt(20000),npsh(1000),xx(1000),yy(1000),
:step(1000),stepz(1000),r1(1000),rr(1000),ic(1000),diffrr(1000)
我把它重写为:
DIMENSION
:energy_t(20000),
:nrt(20000),
:npsh(1000),
:step(1000),
:r1(1000),
:rr(1000),
:ic(1000),
:diffrr(1000)
这被认为是好的风格,还是有更好的方法?请注意,第二种方式允许对每个变量进行注释,如果我可以添加另一个变量,我不必使用行继续。
P.S。:有一个共识/风格的圣经/广泛认可的源自Fortran编程风格&好的做法?
答案 0 :(得分:5)
好的风格不是首先使用维度语句。特别是如果你使用隐式类型。每个变量都应该有一个声明的类型,最好将数组维度放在那里。使用带有类型声明的属性(Fortran 90 +)。
real :: energy_t(20000), nrt(20000)
real, dimension(1000) :: npsh, xx, yy, step, stepz, r1, rr, ic, diffrr
保持线条不要太久。声明尺寸(形状)的两种方式都是可能的。
如果你需要Fortran 77,你会受到更多限制,但仍然
real energy_t(20000), nrt(20000)
real npsh(1000), xx(1000), yy(1000), step(1000), stepz(1000)
real r1(1000), rr(1000), ic(1000), diffrr(1000)
可能更好。
尝试将相关变量分组到一行,将其他变量分组到不同的行。
我还建议为大小1000和20000声明parameter
常量。
答案 1 :(得分:0)
好的风格是参数化尺寸
integer, parameter:: NODES_MAX = 1000, TIMES_MAX = 2000, COORD_MAX = 1000
real energy_t(TIMES_MAX), ..
real npsh(NODES_MAX), xx(COORD_MAX) ...
这样可以对循环进行参数化。
do ii = 1, COORD_MAX
xx(ii) = ...
yy(ii) = ..
end do
可以进行错误检查
if (ii .gt. NODES_MAX) then
print *, 'Please increase NODES_MAX oldvalue=', NODES_MAX, ' required=', ii
pause
end if
这也可以最大限度地减少尺寸增加/减少时所需的更改次数。这种风格也可以在30多年前F77问世时应用。