在(1)的表达中预期的右括号

时间:2014-10-12 07:29:28

标签: fortran gfortran

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

1 个答案:

答案 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
  • 的声明