Fortran编译器报告错误
Expected right parenthesis in expression at (1)
这是什么意思?
program energy
real::Es=0.4,Ep=-0.4,ts=0.2,tsp=2.0
integer::Nx=100
real::kx(101)
real::ky
kx(1)=-0.50
do i=1,Nx
kx(i+1)=kx(1)+i*(1.00/Nx)
end do
print*, 'Enter value for ky'
read*,ky
do i=1,101
! "The error mentions it in the next line in terminal"
Epos(i)=sqrt(-Es*(Ep+2*ts*(cos(kx(i))+cos(ky)))-(2*ts*(cos(kx(i))+cos(ky))*(Ep-2*ts*(cos(kx(i))+cos(ky))))+(4*tsp**2)*((sin(kx(i)))**2 +(sin(ky))**2)))
end do
write(*,*) Epos
end program energy
答案 0 :(得分:2)
您的行太长了...您可以为-ffree-line-length-0
指定gfortran
以删除限制,或者(我更喜欢的),使用&
打破您的行:< / p>
Epos(i)=sqrt( - Es*(Ep+2*ts*(cos(kx(i))+cos(ky))) &
- (2*ts*(cos(kx(i))+cos(ky))*(Ep-2*ts*(cos(kx(i))+cos(ky)))) &
+ (4*tsp**2)*((sin(kx(i)))**2 +(sin(ky))**2) )
您的代码还有两个问题:
Epos