0

我想使用一些用 Fortran 编写的光散射代码。我非常熟悉 MATLAB 并自学 C++,但现在 Fortran 让我很伤心。

我刚刚让 Photran 与 Eclipse 一起工作,它可以编译(根据 Photrans 指令使用 Cygwin 中的 Gfortran)我在网上找到的示例 Fortran 程序。

我想工作的主要是在这里:http ://www.ugr.es/~aquiran/ciencia/codigos/homer.f ://www.ugr.es/~aquiran/ciencia/codigos/homer.f (注意其中一半以上只是控制台输出和评论,实际代码很小)。

实际上,我已经在 Mathematica 中编写了一个程序来进行这些计算,但我觉得这将是一个很好的测试案例,可以让我在 Fortran 中动手并转向其他代码。如果有人能指出我正确的方向来进行编译,那就太好了。谢谢。

编辑:所以我最多编译它(仅带有警告)

OPEN (1,FILE='q.dat')

我添加的第二个

DO I=1,5
    WRITE (*,*)
END DO

我收到 3 个错误:

Fortran 错误

删除 DO 后,我可以添加文字,例如。

    WRITE (*,*) 'This code calculates cross-efficiencies for'

它将编译并生成 .exe。我猜 DO 给我带来了问题。

4

2 回答 2

0

这是更简单的解决方案。您的代码是固定格式,即源代码行的最大长度为 72。您只需在新行中添加“额外”代码即可。如下所示(第.6 列的续行)

C        1         2         3         4         5         6         7
C23456789012345678901234567890123456789012345678901234567890123456789012
      WRITE (*,*) '(For a single particle size, make it equal to the min 
     .imum value)'
      READ (*,*) kr2 
C Just in case Homer cannot handle it...
      IF((KR+4.0D0*KR**0.33333+2).gt.MSIZE) THEN
      WRITE (*,*) 'Sorry, this value is too high'
      WRITE (*,*) 'Please enter a value smaller than', int(msize-4.0D0*m
     .size**0.33333+2)
于 2013-11-29T17:39:12.967 回答
0

原来我需要

gfortran -ffixed-line-length-n 

标志,对于我链接的源代码,n 为 132。我有一些其他代码可以进行类似的计算,并且它在 Eclipse 的指南中完美地排列,但是这个是出路了。感谢你们让我走上正轨。

于 2013-11-07T13:12:01.650 回答