Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将旧fortran 77脚本更新为f90或更新版本?_Fortran_Declaration - Fatal编程技术网

如何将旧fortran 77脚本更新为f90或更新版本?

如何将旧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

我通常处理具有多个数据块的数据文件,重复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     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谢谢,请问在哪里可以获得有关免费源表单的更多信息?