f90 是新的自由格式的fortran代码 fortran 90
f 是采用固定格式的fortran代码fortran 77,有一定的区别,但都能达到相同的目的。
fortran 90是由fortran77发展而来了,增加了一些功能,更加方便。
用哪种编译器都可以,因为f是低级版本的fortran文档,一般高级都支持低级,这个应该没有问题。
如果写程序时语法绝对的严格,那么不同之处就很少了,但如果语句较为随意那区别就大了,
比如以下就是几条(太多了,随便说几个而已,且pgf90和f90对语句要求很相近):
1 子程序被调用时,如果变量没有被定义为save型时,如果第二次调用没有初始化就参与计算会出错说being used without being defined(pgf90就会自动save而不会报错)
2 打印格式要求严格,最好要 '(f83)','(i3)'之类的,且用一个format语句最好
3 allocate一个数组之后,如果没有deallocate就再次allocate就会报错,deallocate的时候如果deallocate(array(m,n))也会报错,要deallocate(array),即不能给定维数
5 x=(/a,b,c,d/)时,a,b,c,d要么都是实数(要有小数点),要么都是整数(不出现小数点)
6 对于数组求最大值(最小值)所在位置,只能用
maxwind=00
do i=m1,m2
do j=n1,n2
xmw=sqrt(u(i,j)2+v(i,j)2)
if(xmw>maxwind) then
maxwind=xmw; xiw=float(i);xjw=float(j)
endif
enddo
enddo
而不能用
maxwind=maxval(sqrt(u(m1:m2,n1:n2)2+v(m1:m2,n1:n2)2))
do i=m1,m2
do j=n1,n2
xmw=sqrt(u(i,j)2+v(i,j)2)
if(xmw=maxwind) then
xiw=float(i);xjw=float(j)
exit
endif
enddo
enddo
pgf90就可以,可能是ifort计算精度默认太高的原因
str=''
read(1,10,end=15)str
1:代表文件
10 代表读入格式
10 format的 语句这一句就是他使用的读入格式
end = 15 表示
遇文件尾部则跳转 15 这个语句标号执行
这是一个格式语句。
它表示先输出5个空格(5X)
然后输出 ''
然后换行(/)
再输出5个空格(5X)
然后输出“NON E POSSIBILIE L ESTRAPOLAZIONE DELIA CURVA MOT”
也就是:
NON E POSSIBILIE L ESTRAPOLAZIONE DELIA CURVA MOT
是的,你说对了。/表示换行
=============================
问题补充:
如果待读入的数据是:
593613748e+001 ,781299428e+001 , 0 , 1 , 1 , 1 ,000000000e+000
593613748e+001 ,781299428e+001 , 0 , 1 , 1 , 1 ,000000000e+000
则后果是
Q= 5936138
THP= 0
QG= 8129943
THG= 0
DXGR=5936138
DERV=0
DXPR=8129943
下面的两句应该是一样的。
建议:
5001 FORMAT(8(8F106/),6F106)
I代表整数,A代表的是字符串,你的问题中的20A应该改成A20,I、A后面的数字表示整数和字符串的限定长度。
这说明myid是两位整数,numprocs是一位整数,processor_name
是个长度不超过20个字符的字符串,这三个变量都会在这个输出语句前面赋值的。
write
(,10)这里的10就代表输出格式,它的形式下面有限定的10
FORMAT('hello
world!process',I2,'of',I1,'on',A20)。
这里的方式已经是最简捷的了。
以上就是关于老师要求我们编译几个fortran程序,源代码后缀是 .f 不知道应该选用什么编辑器全部的内容,包括:老师要求我们编译几个fortran程序,源代码后缀是 .f 不知道应该选用什么编辑器、用intel fortran 编写fortran程序时的书写格式与fortran90有什么不同、fortran read和format语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)