关于Fortran中write语句的位置

关于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变量没有类型
请问这是为什么呢?
gx181710 1年前 已收到1个回答 举报

aku490 幼苗

共回答了27个问题采纳率:96.3% 举报

两个方法可能可以解决你的问题:1.去掉语句中的IMPLICIT NONE.2.在程序中你的确没有定义delta,你可以定义一下.

1年前 追问

4

gx181710 举报

谢谢您!关于delta的定义:REAL(q),PARAMETER :: DELTA=1E-3_q 这句话算不算定义呢?我从来没用过Fortran语言,请您指教!!

举报 aku490

不算,要重新定义!你你直接将IMPLICIT NONE删了试试 这个比较简单

gx181710 举报

好的~ 那能否请您讲解一下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不好>_<|||||| 麻烦您了!

举报 aku490

你这个程序不是完整的,我也只能从语法上看看,很难去分析。还有我不知道你的real(q)中的q是否已经定义过了,DELTA=1E-3_q中的_q又是怎么回事等等,我都不能完全从你这个程序中看出。REAL(q),PARAMETER :: DELTA=1E-3_q其实算是定义了数据类型(real)以及说明这是一个固定的参数(parameter)但是你的赋值是问题的。你可以好好检查一下。REAL(q),PARAMETER :: DELTA=1E-3就是完全正确的赋值方式。
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.031 s. - webmaster@yulucn.com