Fortran错误:数组表达式的形状不符合

时间:2013-10-01 08:35:09

标签: arrays size fortran

我在程序中遇到错误。为了显示错误,我添加了这个小程序和相关的错误。我会集会赞赏一些帮助。

PROGRAM TRY
      IMPLICIT NONE
      REAL(KIND=8) :: A(6,6),B(6,6)
      INTEGER :: I, J
      REAL(KIND=8) :: RHO, H
      REAL(KIND=8) :: C(5,2),D(2,5),E(5,5)
!
      RHO=780
      H=0.5D0
      DO I=1,6
         DO J=1,6
             A(I,J)=1
         ENDDO
      ENDDO 

      B=RHO*H**2.0D0*A
      DO I=1,5
         DO J=1,2
             C(I,J)=I+J
         ENDDO    
      ENDDO

      OPEN(1,FILE='OUTPUT.DAT')
      DO I=1,6
          WRITE(1,20) (B(I,J), J=1,6)
      ENDDO
      DO I=1,5
         DO J=1,2
              D(J,I)=C(I,J)
         ENDDO
      ENDDO
      E=C*D
      DO I=1,5
          WRITE(1,20) (E(I,J), J=1,5)
      ENDDO
      CLOSE(1)

20    FORMAT (999(2x,EN14.4))     

      END PROGRAM TRY

我收到以下错误消息:

fortran_worksheet.f(32): error #6366: The shapes of the array expressions do not conform.
      E=C*D
---------^
fortran_worksheet.f(32): error #6366: The shapes of the array expressions do not conform.   [E]
      E=C*D
------^
compilation aborted for fortran_worksheet.f (code 1)

1 个答案:

答案 0 :(得分:-1)

您正尝试以元素方式将5 x 2矩阵与2 x 5矩阵相乘。这肯定会失败!

对于矩阵 - 矩阵乘法,你应该使用例如BLAS例程DGEMM。有关使用英特尔MKL的详细信息,请参阅here