我想使用Fortran编写的一些光散射代码。我非常熟悉MATLAB并自学C ++,但是现在Fortran给我带来了很多悲伤。
我让Photran使用Eclipse并且它正在编译(根据Photrans指令使用Cygwin的Gfortran)我在网上找到的Fortran程序示例。
我想要使用的主要功能是:http://www.ugr.es/~aquiran/ciencia/codigos/homer.f(注意,其中一半以上只是控制台输出和注释,实际代码非常小)。
我实际上已经在Mathematica中编写了一个程序,它已经完成了这些计算,但我觉得在Fortran中弄脏并转移到其他代码是一个很好的测试用例。如果有人能指出我正确的方向来进行这种编译会很棒。谢谢。
编辑:所以我得到的就是用最多(只是警告)
来编译它OPEN (1,FILE='q.dat')
第二个我添加
DO I=1,5
WRITE (*,*)
END DO
我得到3个错误:
一旦我删除DO,我就可以添加写作,例如。
WRITE (*,*) 'This code calculates cross-efficiencies for'
它将编译并生成.exe。我猜DO正在给我一个问题。
答案 0 :(得分:0)
原来我需要
gfortran -ffixed-line-length-n
标志,对于我链接的源代码,n为132。我有一些其他的代码可以进行类似的计算工作,它在Eclipse的指南行中完美排列,但是这个代码已经解决了。 谢谢你让我走上了正确的道路。
答案 1 :(得分: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)