Fortran中1的赋值在排名中不兼容0和1

问题描述

我正在尝试计算这个序列

this series

在Fortran 77中

。 关键是要能够得到方程-∆u(x,y)= 0的精确解,因此我可以将其与具有二维有限差分的解析解进行比较,但是我遇到了这个错误

68 |       s(k)=s(k)+ (dsin(2.d0*k+1.d0)*(((T-j)/n) +1.d0)*h*PI*
   |      1
Error: Incompatible ranks 0 and 1 in assignment at (1)
c23456
 TP1c
C     variables
      implicit double precision (a-h,o-z)
      DIMENSION Xexact(1000),A(1000,1000)
      DIMENSION  Xo(1000),R(1000),F(1000),Xapp(1000),C(1000),s(1000)
      DIMENSION temp_r(1000),Y(1000),vec1(1000),vec(1000),T(1000)

      n=3
      m=n*n
      h=1.d0/(n+1)

C     exact solution
      PI=4.d0*datan(1.d0)
      DO i=1,m
         s(i)=0.d0
         T(i)=0.d0
      ENDDO
      DO k=1,m
              T(k)=k
      ENDDO
C      CALL affich_vec(T,m)
      
      DO k=1,100
        DO i=1,n
         DO j=1,n
             DO l=1,m
      s(k)=s(k)+ (sin((2.d0*k+1.d0)*(((T-j)/n) +1.d0)*h*PI)*
     &  sinh((2.d0*k+1.d0)*(T-n*(i-1.d0))*h*PI))/((2.d0*k+1.d0)
     &  *sinh((2.d0*k+1.d0)*PI))
         Xexact(l)=(400.d0/PI)*s(l)
             ENDDO
         ENDDO
        ENDDO
       ENDDO
       CALL affich_vec(Xexact,m)
      end

显示矢量的子例程。

C=======================================================================
     SUbroUTINE   affich_vec(X,n)

C     Declaration des variables
     implicit double precision (a-h,o-z)
     DIMENSION  X(1000)

C     Affichage du vecteur :
     write(*,*) 'Vecteur  :'
     DO i=1,n
       write(*,*)X(i)
     ENDDO

     return
     end
C=======================================================================

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)