如何将旧fortran 77脚本更新为f90或更新版本?
我通常处理具有多个数据块的数据文件,重复n行m次 这是一个例子:如何将旧fortran 77脚本更新为f90或更新版本?,fortran,declaration,Fortran,Declaration,我通常处理具有多个数据块的数据文件,重复n行m次 这是一个例子: 9276 4900000 AA 4 4 6260 519 8350 1571 0 0 0 0 0 0 0 0.934 0.933 0.93 0.935 0 0 0 0 0 0 3.867
9276
4900000
AA 4 4 6260 519 8350 1571 0 0 0 0 0 0 0 0.934 0.933 0.93 0.935 0 0 0 0 0 0 3.867 0.0 1.541
BB 3 3 3388 8391 6637 0 0 0 0 0 0 0 0 0.939 0.565 0.361 0 0 0 0 0 0 0 1.913 2.0 -0.732
CC 3 2 241 694 0 0 0 0 0 0 0 0 0 0.933 0.941 0 0 0 0 0 0 0 0 1.888 2.0 -0.834
...
顶行是数据块的行总数,第二行是其他值,这两行是标题。接下来的9276行是数据。一个数据块有9278行,然后相同格式的数据块从9279行重复,用于m个数据块。通常我会变得非常巨大
到目前为止,我使用的是f77格式:
program test
parameter (nn = 20000)
integer,dimension(nn,nn) :: conn
integer,dimension(nn) :: aaa,bbb,ccc,ddd,eee
real,dimension(nn) :: fff,ggg,hhh,iii,zzz
real,dimension(nn,nn) :: bos
character*2,dimension(nn) :: elem
open (2, file = 'input.txt', status = 'old')
iframe=0
100 continue
iframe=iframe+1
read (2,15, err = 50,end= 50) nat2
read (2,15) framenum2
do i=1,nat2
read (2,42) elem(i),aaa(i),ccc(i),(conn(i,j),j=1,10),ddd(i),(bos(i,j),j=1,10),fff(i),ggg(i),zzz(i)
enddo
do something using do and if loops
write (120,15) nat2
write (120,15) framenum2
do i=1,nat
write (120,75) elem(i),test(i),result(i)
write (121,76) iframe, zzz2, iii2
enddo
goto 100
我不需要写格式,它们都是正确格式的。正如您所看到的,我的脚本读取每个数据块的数据,执行一些操作,打印它们,然后转到下一个数据块
我很久以前就学会了fortran,我不太在乎我的风格,也不认为我应该学习新的风格。但这些天我觉得我应该更熟悉新风格的fortran。我觉得现在学新语言有点太晚了(主要是因为时间限制),所以我想我最好还是坚持用fortran
无论如何,我想把它改成f90风格。但我不确定该从哪里开始。如何改进这种声明、打开、读取和写入的方式,使其更高效、更快?有什么建议吗?我更喜欢f90风格,但如果有更新的fortran方式,我会感兴趣(如果它是免费的,可以用f90或intel fortran编译)首先,这不是Fortan77。至少是Fortran90,变量声明中的::和长度超过6个字符的变量名是告诉我这一点的两件事,可能还有更多的事情——人们忘记了按照今天的标准F77是多么原始。第二,请给我们一个完整的(但不是很长的)代码来做你想做的事情,这将使回答变得更加简单和准确。我怀疑OP还没有(尚未)分离固定源代码形式和FORTRAN77的概念。要采取的一个步骤是学习自由源代码形式,这对设置易于阅读和理解的源文件是一个很大的帮助。即使您继续编写没有使用比FORTRAN77.Oh更新添加到语言标准中的功能的程序,要添加的另一条毫无意义的注释是:始终使用
implicit none
。伊恩布什:我只想学习如何提高我的语言、阅读和写作能力。关于完整的代码,我执行了太多的分析,所以我无法选择一个来显示。但通常我会对每个数据块和整个数据块进行统计分析。获取特定列的平均值、点之间的距离和角度等。@HighPerformanceMark谢谢,请问在哪里可以获得有关免费源表单的更多信息?首先,这不是Fortan77。至少是Fortran90,变量声明中的::和长度超过6个字符的变量名是告诉我这一点的两件事,可能还有更多的事情——人们忘记了按照今天的标准F77是多么原始。第二,请给我们一个完整的(但不是很长的)代码来做你想做的事情,这将使回答变得更加简单和准确。我怀疑OP还没有(尚未)分离固定源代码形式和FORTRAN77的概念。要采取的一个步骤是学习自由源代码形式,这对设置易于阅读和理解的源文件是一个很大的帮助。即使您继续编写没有使用比FORTRAN77.Oh更新添加到语言标准中的功能的程序,要添加的另一条毫无意义的注释是:始终使用implicit none
。伊恩布什:我只想学习如何提高我的语言、阅读和写作能力。关于完整的代码,我执行了太多的分析,所以我无法选择一个来显示。但通常我会对每个数据块和整个数据块进行统计分析。获取特定列的平均值、点之间的距离和角度等。@HighPerformanceMark谢谢,请问在哪里可以获得有关免费源表单的更多信息?