Fortran Coder

标题: Unclassifiable statement 报错 [打印本页]

作者: sqs    时间: 2022-5-28 15:12
标题: Unclassifiable statement 报错
程序中有如下子程序(部分)
[Fortran] 纯文本查看 复制代码
subroutine integralk(numk, numw, w, gamma, sigma)

    use ABA

    implicit none
    integer, intent(in) :: numw, numk
    real(8),intent(in) :: w(numw)
    real(8), intent(in) :: gamma
    complex(8),intent(out) ::sigma(2, 2, numw)


    integer :: N = 6, i1, i3, i4
    real(8) :: k(2), en(6), ds
    complex(8) :: t_sigma(2, 2, numw) , sigmak(2, 2, numw)
    complex(8) :: H(6,6), dagger_H(6,6), v(2, 6, 6), r(2, 6, 6)

    ds = 8d0*(PI**2)/((a0**2)*sqrt(3.0)*(numk**2))

    t_sigma = 0.d0

    do i3 = 1,numk
      do i4 = 1,numk
        
        k(1) = real(i3)/numk, k(2) = real(i4)/numk

但是在运行是出现了如下报错
[Fortran] 纯文本查看 复制代码
 228 |         k(1) = real(i3)/numk, k(2) = real(i4)/numk
      |         1
Error: Unclassifiable statement at (1)

这里面我对k(1),k(2)以及给出了定义,为什么还会出现unclassifiable statement 报错呢

作者: vvt    时间: 2022-5-28 16:15
k(1) = real(i3)/numk; k(2) = real(i4)/numk

k=[real::i3,i4]/numk



作者: sqs    时间: 2022-5-28 18:37
vvt 发表于 2022-5-28 16:15
k(1) = real(i3)/numk; k(2) = real(i4)/numk

k=[real::i3,i4]/numk

所以Fortran在定义变量时是可以用逗号,而赋值的时候需要用分号么
作者: kyra    时间: 2022-5-29 08:52
本帖最后由 kyra 于 2022-5-29 08:55 编辑

不管是赋值,还是其他操作。(所有的)语句要么独立一行,要么以分号分隔。

定义语句允许一次定义多个变量。但这些变量的定义,是一个语句。
如果有多个定义语句,也可以用分号分隔。比如
integer :: a , b , c ; real :: d , e , f

赋值语句也允许一次赋值一个数组,就像楼上给出的 k=[real::i3,i4]/numk 这个语句一样。







欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2