关于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 correc

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 03:53:25
关于Fortran中write语句的位置有个Fortran的函数如下:SUBROUTINEEXCOR_DER_PARA(RHO,NDER,EXCA,LEXCHG,TREL)USEprecUSEcons

关于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 correc
关于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变量没有类型
请问这是为什么呢?

关于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 correc
两个方法可能可以解决你的问题:1.去掉语句中的IMPLICIT NONE.2.在程序中你的确没有定义delta,你可以定义一下.

关于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 correc FORTRAN中的WRITE和C中什么语句具有相同的功能 关于Fortran中write语句的用法,我是小白,请问这个代码是什么意思:write(*,'(1x,''---------------------------------------------''+ ,''---------------------'')') write(*,'(7x,t(s),5X,Pa(kPa),4X,Pw(kPa),4X,Set(cm))')write(*,' 一个简单的fortran问题,关于write的,help,tks一个简单的fortran问题,为什么执行语句 write(*,‘(1x,3i4)')(j,j=1,10) 后,生成的记录是4?help 关于Fortran语句请问write(2,605) DSCM,REQ,CSAV,BETA fortran中write什么意思 如何用Fortran求矩阵中某元素的位置 Fortran中write与print区别 在fortran中,单do循环放在if语句里面的时候该怎么办? 哪位可以解释一下以下fortran编程中每一句语句的含义 Fortran语言: WRITE(IU,FORM) (((C(NX,NY,NZ),NX=1,NGXC),NY=1,NGYZ),NZ=1,NGZC) 是什么意思?我没学过Fortran,能说说这语句中各参数的作用和意义么?谢谢啊! fortran 怎么找一组数中最小值用fortran变成,求得一组数,比如a,b,c,d,然后用什么语句求这四个数中最小的那个? fortran语句这句什么意思write(*,'(a9,i3,2(a11,i5))') 后面的这个格式哪个大神可以解释下 fortran输出语句中advance='no'是什么意思? fortran 顺序文件的输入输出 write(2,100)中的100 fortran 中, 能不能解释下这个fortran语句的意思? fortran编程中,我需要在为输出前定义参数格式,例如,x=3.14*0.9=2.826,我想在write语句使用之前,定义x格式为2.83 .(然后让x=2.83进行下面的运算:x+y=5 .然后得到y.)(括号中仅是举例而已,用于表述