2013-10-01 37 views
1

我在程序中遇到錯誤。爲了顯示錯誤,我添加了這個小程序和相關的錯誤。我會讚賞一些幫助。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

您試圖乘以5 x 2矩陣中各個元素的時尚2 x 5矩陣。這肯定會失敗!

對於矩陣矩陣乘法,應該使用例如BLAS例程DGEMM。有關使用英特爾MKL時的詳細信息,請參見here

+3

或者,使用內在的'matmul'函數。當數組只有'2 x 5'左右時,任何關於它相對於'blas'例程的性能可以被忽略。 –