关于Fortran中write语句的位置
有个Fortran的函数如下:
SUBROUTINE EXCOR_DER_PARA(RHO, NDER, EXCA, LEXCHG, TREL)
USE prec
USE constant
IMPLICIT NONE
LOGICAL TREL
INTEGER LEXCHG ! type of gradient corrected func.
INTEGER NDER ! number of derivative
REAL(q) RHO
REAL(q) EXCA(4),EXCA_(4)
REAL(q) RHOT,EXC0,EXC2,EXCD0,EXCD2,EPS
! this is the best compromise for densities between 1000 and 0.1
REAL(q),PARAMETER :: DELTA=1E-3_q
WRITE(*,*)"######" 《++++这一行是我后来加入的
CALL EXCOR_PARA(RHO,EXCA(1),EXCA(2),LEXCHG,TREL)
IF (NDER>0) THEN
EPS=DELTA*RHO
RHOT=RHO-EPS
CALL EXCOR_PARA(RHOT,EXC0,EXCD0,LEXCHG,TREL)
RHOT=RHO+EPS
CALL EXCOR_PARA(RHOT,EXC2,EXCD2,LEXCHG,TREL)
! 1st and 2nd derivative of energy
EXCA_(2)=(EXC2-EXC0)/ (2*EPS)
EXCA_(3)=(EXC2+EXC0-2*EXCA(1))/ (EPS*EPS)
! 2nd and 3nd derivative of potential=
! 1st and 2nd derivative of energy
EXCA(3)=(EXCD2-EXCD0)/ (2*EPS)
EXCA(4)=(EXCD2+EXCD0-2*EXCA(2))/ (EPS*EPS)
! WRITE(*,'(5E14.7)') EXCA(2),EXCA_(2),EXCA(3),EXCA_(3),EXCA(4)
ENDIF
END SUBROUTINE
本来里面是没有上面标注的那一行write的,编译也没有问题,但是当我加入那一行WRITE(*,*)"######"之后,就报错:
error #6404: This name does not have a type, and must have an explicit type. [DELTA]
EPS=DELTA*RHO
-------------^
说Delta变量没有类型
请问这是为什么呢?
人气:370 ℃ 时间:2020-06-11 13:18:29
解答
两个方法可能可以解决你的问题:1.去掉语句中的IMPLICIT NONE.2.在程序中你的确没有定义delta,你可以定义一下.谢谢您!关于delta的定义:REAL(q),PARAMETER :: DELTA=1E-3_q 这句话算不算定义呢?我从来没用过Fortran语言,请您指教!!不算,要重新定义!你你直接将IMPLICIT NONE删了试试 这个比较简单好的~那能否请您讲解一下REAL(q),PARAMETER :: DELTA=1E-3_q的语法和作用呢?如果这句话不算定义,那么其中的DELTA=1E-3_q是否可以给delta赋值呢?如果不能赋值,删掉了DELTA=1E-3_qimplicit none以后即使不报错,delta在使用的时候也相当于没赋值吧?我还是想在REAL(q),PARAMETER :: DELTA=1E-3_q加一个定义试试、、总觉得不implicit none不好>_<||||||麻烦您了!你这个程序不是完整的,我也只能从语法上看看,很难去分析。还有我不知道你的real(q)中的q是否已经定义过了,DELTA=1E-3_q中的_q又是怎么回事等等,我都不能完全从你这个程序中看出。REAL(q),PARAMETER :: DELTA=1E-3_q其实算是定义了数据类型(real)以及说明这是一个固定的参数(parameter)但是你的赋值是问题的。你可以好好检查一下。REAL(q),PARAMETER :: DELTA=1E-3就是完全正确的赋值方式。
推荐
- fortran 中write(*,20)((x(i,j),j=1,3),i=1,3) 这句什么意思? 谢谢
- fortran 的语句: write(6,*) 'speed of sound=',rho 是什么意思
- 2x4+1=9=3^2 6x8+1=49=7^2 14x16+1=225=15^2 你得出了什么结论?你能证明这个结论吗?
- 我要为期中考试做准备,我一定能取得好成绩,用英语怎么说
- 已知2x-3y-z=0,x+3y-14z=0,且x,y,z不全为0,求4x的平方-5xy+z的平方/xy+yz+zx的值
猜你喜欢
- there _____ a pair of shoes,some socks and a football under the bed.单项选择
- point,the,clother,you,to,can,needs,he(?)连词成句
- 一桶汽油重10千克,第一次取出总数的6分之1,第二次取出余下的2分之1,还剩多少千克?
- 13这个数,个位上的3表示什么,十位上的1表示什么
- 介绍一本英语阅读理解的书!
- 判断题:1.2x=0这个方程没有解?2.平行四边形的底越长,面积就越大?
- 宇宙中真的只有一个地球吗?
- 已知一个长方形和一个圆的周长相等,又知这个长方形的长是20厘米,宽为11.4厘米,哪个图形的面积大?