回 帖 发 新 帖 刷新版面

主题:请大神帮我看看我这个Fortran程序到底哪里错了,跪谢

 PROGRAM JOURNAL

DIMENSION H(61,21),P(61,21)

DATA B,R,C0,AN,EDA,EPSON,aSUM1/60.0E-3,25.0E-3,5.0E-5,6.0E4,0.05,0.7,0/

OPEN(9,FILE='PRESSURE.DAT',STATUS='UNKNOWN')

OPEN(8,FILE='FILM.DAT',STATUS='UNKNOWN')

PI=3.1415926

N=61

M=21

DX=2.0*PI/FLOAT(N-1)

DY=1./FLOAT(M-1)

OMEGA=AN*2.0*PI/60.0

U=OMEGA*R

ALFA=(R/B*DX/DY)**2

CALL SUBH(N,M,DX,EPSON,H)

CALL SUBP(N,M,DX,EPSON,ALFA,H,P)

CALL SUBM(N,M,DX,DY,aSUM1,PI,P)

CALL OUTPUT(N,M,DX,DY,H,P)

STOP

END

SUBROUTINE SUBH(N,M,DX,EPSON,H)

DIMENSION H(N,M)

DO I=1,N

SETA=(I-1.0)*DX

DO J=1,M

H(I,J)=1.0+EPSON*COS(SETA)

ENDDO

ENDDO

RETURN

END

SUBROUTINE SUBP(N,M,DX,EPSON,ALFA,H,P)

DIMENSION H(N,M),P(N,M)

DO I=1,N

DO J=2,M-1

P(I,J)=0.5

ENDDO   

ENDDO

DO J=1,M

P(1,J)=0.0

P(N,J)=0.0

ENDDO

DO I=1,N

P(I,1)=0.0

P(I,M)=0.0

ENDDO

IK=0

10 C1=0.0

ALOAD=0.0

DO I=2,N-1

I1=I-1

I2=I+1

DO J=2,M-1

PD=P(I,J)

J1=J-1

J2=J+1

A1=(0.5*(H(I2,J)+H(I,J)))**3

A2=(0.5*(H(I,J)+H(I1,J)))**3

A3=ALFA*(0.5*(H(I,J2)+H(I,J)))**3

A4=ALFA*(0.5*(H(I,J)+H(I,J1)))**3

P(I,J)=(-DX*(H(I2,J)-H(I1,J))+A1*P(I2,J)+A2*P(I1,J)+A3*P(I,J2)+A4*P(I,J1))/(A1+A2+A3+A4)

P(I,J)=0.7*PD+0.3*P(I,J)

IF(P(I,J).LT.0.0)P(I,J)=0.0

C1=C1+ABS(P(I,J)-PD)

ALOAD=ALOAD+P(I,J)

20 CONTINUE

ENDDO

ENDDO

IK=IK+1

C1=C1/ALOAD

WRITE(*,*)IK,C1,ALOAD

IF(C1.GT.1.E-7)GOTO 10

RETURN

END

SUBROUTINE SUBM(N,M,DX,DY,aSUM1,PI,P)

DIMENSION P(N,M)

PX=0

PY=0

TEMP=PI/60

DO I=1,N

AI=(I-1)*TEMP

DO J=1,M

PX=PX-P(I,J)*COS(AI)*DX*DY

PY=PY+P(I,J)*SIN(AI)*DX*DY

ENDDO

ENDDO

aSUM1=SQRT(PX*PX+PY*PY)


WRITE(*,*)aSUM1

    RETURN

END 

SUBROUTINE OUTPUT(N,M,DX,DY,H,P)

DIMENSION Y(21),H(N,M),P(N,M)

DO J=1,M

Y(J)=(J-1.)*DY-0.5

ENDDO

WRITE(8,40)Y(1),(Y(J),J=1,M)

WRITE(9,40)Y(1),(Y(J),J=1,M)

DO I=1,N

AX=(I-1.0)*360.0/(N-1.0)

WRITE(8,40)AX,(H(I,J),J=1,M)

WRITE(9,40)AX,(P(I,J),J=1,M)

ENDDO


40 FORMAT(22(E12.6,1X))

STOP

END

 错误提示:C:\Users\Administrator\Desktop\Console2\Console2\Console2.f90(31): error #6784: The number of actual arguments cannot be greater than the number of dummy arguments.   [SUBM]
compilation aborted for C:\Users\Administrator\Desktop\Console2\Console2\Console2.f90 (code 1)

Build log written to  "file://C:\Users\Administrator\Desktop\Console2\Console2\Debug\BuildLog.htm"
Console2 - 2 error(s), 0 warning(s)


回复列表 (共1个回复)

沙发

SUBROUTINE SUBM(N,M,DX,DY,aSUM1,PI,P)

CALL               SUBM(N,M,DX,DY,aSUM1,PI,P)

我这里编译没错误。提示的意思是实参个数大于形参个数,但是你这代码没有这个问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册