fortran错误公共块

  • 本文关键字:错误 fortran fortran
  • 更新时间 :
  • 英文 :


问题在哪里?有人请给我解决方案。错误是:

WARNING - Common block "P/" was previously defined  as size 128 but is now defined as size 1320
WARNING - Common block "P/" was previously defined  as size 128 but is now defined as size 1320 

我没有任何解决方案。这是一个数学问题解决程序。

    IMPLICIT REAL*8(A-H,O-Z)
       COMMON/P/FW,AK,PR,GC,DA,XQ,SC,EC,DU,SR,RE,FS,XR,XK,RM1,GR
       COMMON/V/IR,IX
       COMMON/VV/G1,G2,G3
      OPEN (1, FILE='MS99.dat',STATUS='UNKNOWN')
      OPEN (2, FILE='MMS109.dat',STATUS='UNKNOWN')
        FW=1.0
        AK=1.0
        GR=0.0
        PR=10.0
        GC=0.8
        DA=1.0
        XQ=1.0
        SC=2.0
        EC=2.0
        DU=0.1
        SR=0.1
        RE=0.1
        FS=0.5
        XR=0.7
        DU=0.9
        XK=0.8
        RM1= (1+(16/(3*XR)))
        IR=80
        IX=20
        G1=0.0001
        G2=0.0001
        G3=0.0001
       CALL DRFFO
       CALL COMP1
 1     FORMAT(2X,F6.2,2X,14F9.4)
 2     FORMAT(2X,7(A6,F13.7))
       CLOSE(1)
       CLOSE(2)
       STOP
       END
C****************DERFO********************
       SUBROUTINE DRFFO
       IMPLICIT REAL*8(A-H,O-Z)
       COMMON/P/FW,AK,PR,GC,DA,XQ,SC,EC,DU,SR,RE,FS,XR,XK,RM1,GR
       COMMON/V/IR,IX
       COMMON/VV/G1,G2,G3
       DIMENSION XD(50),XK(3,50),X(50),F(50)
       EXTERNAL DERFO
       N=28
       ITMAX=8
       EPS=0.000001
       KK=0
 555   KK=KK+1
       IF (KK.EQ.100)STOP         
       WRITE (*,*) 'IR=',IR
       DO 101 ITER=1,IR
       T=0.0
       DO K=1,N
       X(K)=0.0
       ENDDO
       X(1)=FW
       X(2)=1.0                
       X(3)=G1
       X(4)=1.0
       X(5)=G2
       X(6)=1.0
       X(7)=G3
       X(10)=1.0
       X(18)=1.0
       X(28)=1.0
       H=0.01
       DO I=1,IR
       CALL RKSYS(DERFO,T,H,X,XD,XK,F,N)
       DO K=1,N
       X(K)=XD(K)
       ENDDO
       T=T+H
       ENDDO
       A11=X(9)**2+X(11)**2+X(13)**2+X(10)**2+X(12)**2+X(14)**2
       A12=X(9)*X(16)+X(11)*X(18)+X(13)*X(20)+X(10)*X(17)+X(12)*X(19)
     1  +X(14)*X(21)
       A13=X(9)*X(23)+X(11)*X(25)+X(13)*X(27)+X(10)*X(24)+X(12)*X(26)
     1  +X(14)*X(28)
       A21=A12
       A22=X(16)**2+X(18)**2+X(20)**2+X(17)**2+X(19)**2+X(21)**2
       A23=X(16)*X(23)+X(18)*X(25)+X(20)*X(27)+X(17)*X(24)+X(19)*X(26)
     1  +X(21)*X(28)
       A31=A13
       A32=A23
       A33=X(23)**2+X(25)**2+X(27)**2+X(24)**2+X(26)**2+X(28)**2
       B1=-(X(2)*X(9)+X(4)*X(11)+X(6)*X(13)+X(3)*X(10)+X(5)*X(12)
     1  +X(7)*X(14))
       B2=-(X(2)*X(16)+X(4)*X(18)+X(6)*X(20)+X(3)*X(17)+X(5)*X(19)
     1  +X(7)*X(21))
       B3=-(X(2)*X(23)+X(4)*X(25)+X(6)*X(27)+X(3)*X(24)+X(5)*X(26)
     1  +X(7)*X(28))
       ERR=X(2)**2+X(3)**2+X(4)**2+X(5)**2+X(6)**2+X(7)**2
       WRITE(*,29)'G1=',G1,'G2=',G2,'G3=',G3,'ERR=',ERR
       DG=(A11*(A22*A33-A23*A32)-A12*(A21*A33-A23*A31)+A13*(A21*A32-
     1 A22*A31))
      DG11=(B1*(A22*A33-A23*A32)-A12*(B2*A33-A23*B3)+A13*(B2*A32-A22*B3)
     1  )
      DG1=DG11/DG
      DG22=(A11*(B2*A33-A23*B3)-B1*(A21*A33-A23*A31)+A13*(A21*B3-B2*A31)
     1  )
      DG2=DG22/DG
      DG33=(A11*(A22*B3-B2*A32)-A12*(A21*B3-B2*A31)+B1*(A21*A32-A22*A31)
     1  )
      DG3=DG33/DG
      IF(ERR.LT.EPS)GOTO 22
      G1=G1+DG1
      G2=G2+DG2
      G3=G3+DG3
      IF(ITER.GE.ITMAX)THEN
      IR=IR+IX
      GO TO 555
      END IF
  101 CONTINUE
  22  WRITE (2,29)'ERR=',ERR,'G1=',G1,'G2=',1/G2,'G3='
     1 ,-G3
  29  FORMAT (2X,4(A6,F13.7))
      RETURN
      END SUBROUTINE

C**********************COMP1**************************
       SUBROUTINE COMP1
       IMPLICIT REAL*8(A-H,O-Z)
       COMMON/P/FW,AK,PR,GC,DA,XQ,SC,EC,DU,SR,RE,FS,XR,XK,RM1,GR
       COMMON/V/IR,IX
       COMMON/VV/G1,G2,G3
       DIMENSION XD(50),XK(3,50),F(50),X(50)
       EXTERNAL DERFO
       N=7
       T=0.0
       DO K=1,N
       X(K)=0.0
       ENDDO
       X(1)=FW
       X(2)=1.0                
       X(3)=G1
       X(4)=1.0
       X(5)=G2
       X(6)=1.0
       X(7)=G3
       X(10)=1.0
       X(18)=1.0
       X(28)=1.0
       H=0.01
       WRITE(1,50)'eta','X(2)','g1','X(4)','g2','X(6)','g3'
       WRITE(1,30)T,X(2),X(3),X(4),X(5),X(6),X(7)
       DO I=1,IR
       CALL RKSYS(DERFO,T,H,X,XD,XK,F,N)
       DO K=1,N
       X(K)=XD(K)
       ENDDO
       T=T+H
       IF(I/5*5.EQ.I)THEN
       WRITE(1,30)T,X(2),X(3),X(4),X(5),X(6),X(7)
       ENDIF
       ENDDO
  50   FORMAT(A8,2X,A7,2X,A7,2X,A7,2X,A7,2X,A7,2X,A7)
 30    FORMAT(2X,F6.2,2X,6F9.4)
       RETURN
       END
c*********************DERFO************************
       SUBROUTINE DERFO(X,T,F,N)
       IMPLICIT REAL*8(A-H,O-Z)
       COMMON/P/FW,AK,PR,GC,DA,XQ,SC,EC,DU,SR,RE,FS,XR,XK,RM1,GR
       DIMENSION X(N),F(N)       
C       PI=4.*ATAN(1.0)
      F(1)=X(2)
      F(2)=X(3)
      F(3)=(FS/DA)*X(2)*X(2)+(X(1)/(DA*RE))+AK*X(1)-GC*X(6)-GR*X(4)-X(1)
     1  *X(3)
      F(10)=(FS/DA)*2*X(2)*X(9)+X(8)/(DA*RE)+AK*X(8)-GC*X(13)-GR*X(11)-
     1  X(1)*X(10)-X(3)*X(8)
      F(17)=(FS/DA)*2*X(2)*X(16)+X(15)/(DA*RE)+AK*X(15)-GC*X(20)-GR*
     1    X(18)-X(1)*X(17)-X(3)*X(15)
      F(24)=(FS/DA)*2*X(2)*X(23)+X(22)/(DA*RE)+AK*X(22)-GC*X(27)-GR*
     1  X(25)-X(1)*X(24)-X(3)*X(22)
      F(4)=X(5)
      F(5)=(-1*(PR*X(1)*X(5)+PR*DU*F(7)+PR*XQ*X(4)+PR*EC*X(3)*X(3))/RM1)
      F(12)=(-1*(PR*X(1)*X(12)+PR*X(5)*X(8)+PR*DU*F(14)+PR*XQ*X(11)+PR*
     1  EC*2*X(3)*X(10))/RM1)
      F(19)=(-(PR*X(1)*X(19)+PR*X(5)*X(15)+PR*DU*F(21)+PR*XQ*X(18)+PR*
     1  EC*2*X(3)*X(17))/RM1)
      F(26)=(-(PR*X(1)*X(26)+PR*X(5)*X(22)+PR*DU*F(28)+PR*XQ*X(25)+PR*
     1  EC*2*X(3)*X(24))/RM1)
      F(6)=X(7)
      F(7)=XK*X(6)-SC*X(1)*X(7)-SC*SR*F(5)
      F(8)=X(9)
      F(9)=X(10)
      F(11)=X(12)
      F(13)=X(14)
      F(14)=XK*X(13)-SC*X(1)*X(14)-SC*X(7)*X(8)-SC*SR*F(12)
      F(15)=X(16)
      F(16)=X(17)
      F(18)=X(19)
      F(20)=X(21)
      F(21)=XK*X(20)-SC*X(1)*X(21)-SC*X(7)*X(15)-SC*SR*F(19)
      F(22)=X(23)
      F(23)=X(24)
      F(25)=X(26)
      F(27)=X(28)
      F(28)=XK*X(27)-SC*X(1)*X(28)-SC*X(7)*X(22)-SC*SR*F(26)
       RETURN
       END
C******************IMPLICIT R-K SIXTH ORDER METHOD*******************
       SUBROUTINE RKSYS(DERIVS,T,H,X,XD,XK,F,N)
       IMPLICIT REAL*8(A-H,O-Z)
       DIMENSION X(N),XD(N),XK(4,N),F(N)
       SQT=SQRT(15.0)
       A1=(5.-SQT)/10.0
       A2=1.0/2.0
       A3=(5.+SQT)/10.0
       B1=5.0/36.0
       B2=(10.0-3.0*SQT)/45.0
       B3=(25.0-6.0*SQT)/180.0
       C1=(10.0+3.0*SQT)/72.0
       C2=2.0/9.0
       C3=(12.0-3.0*SQT)/72.0
       D1=(25.0+6.0*SQT)/180.0
       D2=(10.0+3.0*SQT)/45.0
       D3=5.0/36.0
       CALL DERIVS(X,T,F,N)
       DO I=1,N
       XK(1,I)=H*F(I)
       XK(2,I)=H*F(I)
       XK(3,I)=H*F(I)
       XD(I)=X(I)+B1*XK(1,I)+B2*XK(2,I)+B3*XK(3,I)
       ENDDO
       CALL DERIVS(XD,T+A1*H,F,N)
       DO I=1,N
       XK(1,I)=H*F(I)
       XD(I)=X(I)+C1*XK(1,I)+C2*XK(2,I)+C3*XK(3,I)
       ENDDO
       CALL DERIVS(XD,T+A2*H,F,N)
       DO I=1,N
       XK(2,I)=H*F(I)
       XD(I)=X(I)+D1*XK(1,I)+D2*XK(2,I)+D3*XK(3,I)
       ENDDO
       CALL DERIVS(XD,T+A3*H,F,N)
       DO I=1,N
       XK(3,I)=H*F(I)
       XD(I)=X(I)+(5.0*XK(1,I)+8.0*XK(2,I)+5.0*XK(3,I))/18.0
       ENDDO
       RETURN
       END

这只是一个警告,通常可以忽略它们,但不建议这样做。公共块/P/具有一个元素XKCOMMON/P/FW,AK,PR,GC,DA,XQ,SC,EC,DU,SR,RE,FS,XR,XK,RM1,GR在主要程序中,它没有大小/尺寸,并且是标量。在子例程中,它获得了尺寸XK(3,50)DIMENSION XD(50),XK(3,50),X(50),F(50)因此,IS and Array具有150个元素(即1200个字节(。建议尺寸语句也放置在主要程序中。

作为旁注,我希望您没有编写代码,因为它是非常老式的(通常会使用模块等。在这种情况下,对于变量(。

最新更新