Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29080 Discussions

Missing actual argument for argument(error)

Bach34
Beginner
502 Views

Hi, 

I am trying to compile this code but it gives error like below.  I have bolded the font of the relevant parts. I am trying to declare L and TMAX but not satisfy.  I will be grateful if you have a suggestion to solve this issue.

Also, I am sharing my code as an attachment.

 

dimension YO(400), TERSY(400)
REAL N,L
character*14 FILEOU
AREA(B,YY,Z)=(B+Z*YY)*YY
PERI(B,YY,Z)=B+2*YY*(1+Z**2)**0.5
WRITE(*,8)
8 format(/,19X,'PLEASE ENTER THE OUTPUT FILE NAME',//)
READ(*,8008)FILEOU
8008 FORMAT(A14)
OPEN(3,FILE=FILEOU)
READ(*,*)QWE
WRITE(*,*)'DOWNSTREAM BOUNDARY CONDITION:'
WRITE(*,*)'SPILLWAY (1), BOTTOM OUTLET (2)'
READ(*,*)ICHECK
IF(ICHECK.EQ.1)then
WRITE(*,*)'ENTER SPILLWAY HEIGHT, P(m)'
read(*,*)P
WRITE(*,*)'ENTER SPILLWAY CREST LENGTH, L(m)'
READ(*,*)L
ENDIF
IF(ICHECK.EQ.2) THEN
WRITE(*,*)'ENTER DISCHARGE COEFFICIENT'
READ(*,*)C
WRITE(*,*)'ENTER DIAMETER OF BOTTOM OUTLET(m)'
READ(*,*)D
WRITE(*,*)'ENTER THE NUMBER OF BOTTOM OUTLETS'
READ(*,*)NNN
ENDIF
WRITE(*,*)'ENTER STEADY - STATE DISCHARGE (m^3/s)'
READ(*,*)QQ
WRITE(*,*)'ENTER BOTTOM WIDTH(m)'
READ(*,*)BB
WRITE(*,*)'ENTER SIDE INCLINATION'
READ(*,*)ZZ
WRITE(*,*)'ENTER BED SLOPE'
READ(*,*)S0
WRITE(*,*)'ENTER MANNING ROUGHNESS'
READ(*,*)N
WRITE(*,*)'ENTER Dx(m)'
READ(*,*)DXX
WRITE(*,*)'CHOOSE THE SOLUTION TECHNIQUE:'
WRITE(*,*)'COMPLETE DYNAMIC WAVE(5)'
WRITE(*,*)'DIFFUSIVE WAVE(6)'
WRITE(*,*)'KINEMATIC WAVE(7)'
READ(*,*)IMETHOD
WRITE(*,*)'ENTER TIME INTERVAL Dt, (sec)'
READ(*,*)Dt
WRITE(*,*)'ENTER THE HYDROGRAPH PARAMETERS :'
WRITE(*,*)'Qo(m^3/S)'
READ(*,*)QQ0
WRITE(*,*)'Qp (m^3/s) AND Tp(sec)'
READ(*,*)QQP
READ(*,*)Tp
WRITE(*,*)'Qf(m^3/s) AND Tn (sec)'
READ(*,*)QQF
READ(*,*)Tn
WRITE(*,*)'Tmax(sec)'
READ(*,*)
TmaxYNN=0.01
99 ETOTAL=(QQ*N)/S0**.5
ECHECK=AREA(BB,YNN,ZZ)**(5./3.)/PERI(BB,YNN,ZZ)**(2./3.)
IF(ETOTAL.LT.ECHECK)GOTO 100
YNN=YNN+.01
GOTO 99
100 W=QQ/(3.132*BB**2.5)
IF(ZZ.EQ.0)THEN
YCOB=W**.672717*1.022785
ELSE IF(ZZ.EQ.5) THEN
YCOB=W**.602684*0.748173
ELSE IF(ZZ.EQ.1) THEN
YCOB=W**.574105*0.657397
ELSE IF(ZZ.EQ.1.5) THEN
YCOB=W**.564345*0.625201
ELSE IF(ZZ.EQ.2) THEN
YCOB=W**.552851*0.584043
ELSE IF(ZZ.EQ.2.5) THEN
YCOB=W**.545379*0.552333
ELSE IF(ZZ.EQ.3) THEN
YCOB=W**.537298*0.523298
ELSE IF(ZZ.EQ.4) THEN
YCOB=W**.524667*0.487638
END IF
YC=YCOB*BB
IF(YNN.GT.YC)THEN
WRITE(3,551)
551 FORMAT('HYDRAULIC PARAMETERS RESULT IN MILD SLOPE' ,/)
ELSE
WRITE(3,552)
552 FORMAT('THIS PROGRAM IS NOT VALID FOR STEEP SLOPE CASE' ,/)
GO TO 553
ENDIF
IF(ICHECK.EQ.1) THEN
H0=0.1
98 X=P/H0
IF(X.GE.2.8)THEN
CO=2.175
ELSE
C0=.018*X**7-.218*X**6+1.084*X**5-2.872*X**4+4.37*X**3-3.847*X**&
&2+1.889*X+1.72
ENDIF
QCHECK=C0*L*H0**1.5
IF(QQ.LT.QCHECK) GOTO 101
H0=H0+.05
GOTO 98
101 YMAX = P+H0
ELSE
YMAX=0.0826*QQ**2/(NNN**2*C**2*D**4)
ENDIF
KZ=ZZ
WRITE(3,15)QQ,YMAX,YNN,BB,KZ,S0,N,DXX,YC
15 FORMAT(10X,'Q(m3/s =',F6.1,/,10x,'Ymax(m)=',F6.3,/,10X,'Yn(&
&m)=',F6.3,/,/,10X,'B(m)=',f6.1,/,10x,'Z=1V:',I1,'H',/,10X,'So&
&=',F6.5,/,10X,'n=',F6.3,/,10X,'DX(m)=',F6.3,/,10X,'Yc(m)=&
&',F6.3,///)
WRITE(3,50)
50 FORMAT(1X,'I',5X,'Z',6X,'Y',5X,'A',5X,'P',5X,'R',6X,'U',7X,'Sf',6X&
&,'H',7X,'HE',5X,'LENGTH',/,6X,'(m)'4X,'(m)',2X'(m2)',3X,'(m)',3X&
&,'(m)',3X,'(m/s)',11X,'(m)',5X,'(m)',/,78('At'),/)
T=0.
Z1=0.
Y1=Ymax
I=1
A1=AREA(BB,Y1,ZZ)
P1=PERI(BB,Y1,ZZ)
R1=A1/P1
U1=QQ/A1
S1=(U1*N/R1**(2./3.))**2
H1=Z1+Y1+U1**2/19.625201
WRITE(3,51)I,Z1,Y1,A1,P1,R1,U1,S1,H1
51 FORMAT(1X,I3,1X,F6.3,1X,F6.3,1X,2(F7.1,1X),2(F6.3,1X),F7.6,1X,F6.3&
&,1X,F6.2,3X,F7.1)
30 I=I+1
T=T+DXX
Z2=Z1+S0*DXX
Y2=0.
10 Y2=Y2+0.01
A2=AREA(BB,Y2,ZZ)
P2=PERI(BB,Y2,ZZ)
R2=A2/P2
U2=QQ/A2
S2=(U2*N/R2**(2./3.))**2
H2=Z2+Y2+U2**2/19.62
H22=H1+.4*DXX*(S1+S2)
HE=H2-H22
HHE=HE*100
IF(ABS(HE).LT.0.0074) GOTO 20
GOTO 10
20 FRU2 = U2/(9.81*Y2)**.5
DELY=HE/(1-FRU2**2+(3*S2*DXX)/(2*R2))
Y2=Y2-DELY
WRITE(3,51)I,Z2,Y2,A2,P2,R2,U2,S2,H2,HHE,T
IF(Y2.LE.YNN) GOTO 40
WRITE(*,*)I,Y2
TERSY(I)=Y2
Y1=Y2
A1=A2
P1=P2
R1=R2
U1=U2
S1=S2
Z1=Z2
H1=H2
S1=S2
GOTO 30
40 WRITE(3,75) T
75 FORMAT(//,10X,'TOTAL LENGTH IS',F7.1,'m',//)
YO(1) = YNN
YO(1) =YMAX
WRITE(*,*)T,I
DO 597 K =2,I-1
YO(K)=TERSY(I-K+1)
597 CONTINUE
WRITE(*,9)
9 FORMAT(//,15('!'),3X,'PLEASE WAIT COMPUTATION CONTUNIES',3X,15('!'&
&))
IF(IMETHOD.EQ.5)CALL COMPW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,ICHECK,D,&
&C,NNN,QQ0,QQP,QQF,TP,TN,TMAX,DT,P,L)
IF(IMETHOD.EQ.6)&
&CALL DIFFW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,QQP,QQ&
&F,TP,TN,TMAX,DT,P,L)
IF(IMETHOD.EQ.7)&
&CALL KINEW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,QQ0,QQP,QQ&
&F,TP,TN,TMAX,DT,P,L)
553 STOP
END

SUBROUTINE &
&DIFFW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,QQ0,QQP,QQF,TP,TN,TMAX&
&,DT,P,L)
REAL N,L
DIMENSION DX(400),UO(400),YO(400),Y(400),U(400),Q(400),QO(400)
AREA(B,YY,Z)=(B+Z*YY)*YY
PERI(B,YY,Z)=B+2*YY*(1+Z**2)**.5
WRITE(3,*) 'THIS PRINT OUT IS CALCULATED FROM DIFFUSIVE WAVE'
QIN=QQ
WID=BB
S=S0
CON=N
DL=DXX
DX(1)=0
DO 15 K=1,I
DX(K+1)=DX(K)+DL
15 CONTINUE
WRITE(3,990)
990 FORMAT (2X,'TIME=0',/)
WRITE(3,1010) QIN
1010 FORMAT (2X,'INITIAL DISCHARGE=',F9.4,/)
WRITE(3,1020)
1020 FORMAT (2X,'LENGTH ',3X,'DEPTH '/)
WRITE(3,1030) (DX(K),YO(K),K=1,I)
1030 FORMAT (2X,F12.4,3X,F10.4)
DO 17 K=1,17
QO(K)=QIN
17 CONTINUE
WRITE(*,*)'ENTER THE PRINT OUT TIME INTERVAL, (sec)'
READ(*,*)J
WRITE(*,*)'ENTER CHEZY COEFFICIENT'
READ(*,*)CHEZ
DO 20 LTIME=1,INT(TMAX)
WRITE(*,*)LTIME
! EQUATIONS OF FLOOD HYDROGRAPH
DIS=QQ0+(QQP-QQO)/TP*LTIME
IF(LTIME.GT.TP) DIS=QQP-(QQP-QQF)/(TN-TP)*(LTIME-TP)
IF(LTIME.GT.TN) DIS=QQF
! DETERMINATION OF VELOCITIES AND WATER DEPTHS AT TIME LEVEL N
Y(1)=0.01
115 ETOTAL=(DIS*CON)/S**.5
ECHECK=(AREA(WID,Y(1),ZZ))**(5./3.)/(PERI(WID,Y(1),ZZ))**(2./3.)
IF(ETOTAL.LT.ECHECK) GOTO 110
Y(1) = Y(1)+.01
GOTO 115
110 Q(1)=DIS
DX(1)=0
DO 30 K=2,I-2
! DEFINE THE CHEZY COEFFICIENT
DX(K+1)=DX(K)+DL
A1=(1/YO(K)+1/2./YO(K))
C=CHEZ*(YO(K)*(S-((YO(K+1)-YO(K))/(DL))))**.5*A1*YO(K)
A2=2*WID*(S-((YO(K+1)-YO(K))/DL))
T=CHEZ*(YO(K)*(S-((YO(K+1)-YO(K))/(DL))))**.5*YO(K)*WID
D=T/A2
Y1=D*(YO(K+2)-2*YO(K+1)+YO(K))/DL**2.
Y2=C*(YO(K+1)-YO(K))/DL
Y(K)=YO(K)+DT*(Y1-Y2)
U(K)=DIS/WID/Y(K)
30 CONTINUE
DO 40 K=I-1,I
IF(K.EQ.I-1) DX(K+1)=DX(K)+DL
A1=(1/YO(K)+1/2./YO(K))
C=CHEZ*(YO(K)*(S-((YO(K)-YO(K-1))/(DL))))**.5*A1*YO(K)
A2=2*WID*(S-((YO(K)-YO(K-1))/DL))
T=CHEZ*(YO(K)*(S-((YO(K)-YO(K-1))/(DL))))**.5*YO(K)*WID
D=T/A2
Y1=D*(YO(K)-2*YO(K-1)+YO(K-2))/DL**2.
Y2=C*(YO(K)-YO(K-1))/DL
40 CONTINUE
Y(K)=YO(K)+DT/DL*(Y1+Y2)
IF(J.EQ.LTIME) THEN
J=J+1
WRITE(3,111)LTIME
111 FORMAT(//,2x,'tıme=',I6,/)
write(3,1101) DIS
1101 FORMAT (2X,'DISCHARGE=',F10.4,/)
write(3,105)
105 format(2X,'LENGTH',3X,'DEPTH ',/)
WRITE(3,106)(DX(K),Y(K),K=1,I)
106 FORMAT (2X,F12.4,3X,F10.4)
ENDIF
! REPLACING
DO 50 K=1,I
YO(K)=Y(K)
50 continue
20 continue
return
END

SUBROUTINE KINEW(QQ,BB,SO,N,DXX,YNN,I,ZZ,YO,QQ0,QQP,QQF,TP,TN,&
&TMAX&
&,DT,P,L)
REAL N,L
real :: y(400)
INTEGER :: TMAX ! Declare TMAX as an integer
DIMENSION DX(400),AO(400),YO(400),A(400),DIS(400),U(I)
AREA(B,YY,Z)=(B+Z*YY)*YY
PERI(B,YY,Z)=B+2*YY*(1+Z**2)**.5
WRITE(3,*)'THIS PRINT OUT IS CALCULATED FROM KINEMATIC WAVE'
QIN=QQ
WID=120.
S=S0
CON=N
DL=DXX
COEF=5./3
ALPHA=S**0.5/(CON*WID**(2./3))
DX(1)=0.
DO 15 K=1,I-1
DX(K+1)=DX(K)+DL
15 CONTINUE
! DETERMINATION OF AREAS AT STEADY STATE FLOW
DO 20 K=1,I
AO(K)=AREA(WID,YO(K),ZZ)
20 CONTINUE
WRITE(3,79)
79 FORMAT(2X,'TIME = 0',/)
WRITE(3,801) QIN
801 FORMAT (2X,'INITIAL DISCHARGE=',F9.4,/)
WRITE(3,802)
802 FORMAT (5X,'LENGTH ',6X,' DPETH ',6X,'AREA'/)
WRITE(3,803)(DX(K),YO(K),AO(K),K=1,I)
803 FORMAT (2X,F12.4,3X,F10.4,3X,F10.4)
WRITE(*,*)'ENTER THE PRINT OUT TIME INTERVAL, (sec)'
READ(*,*)J
DO 30 LTIME=1,TMAX
WRITE(*,*)LTIME
! EQUATIONS OF FLOOD HYDROGRAPH
Q=QQ0+(QQP-QQ0)/TP*LTIME
IF(LTIME.GT.TP) Q=QQP-(QQP-QQF)/(TN-TP)*(LTIME-TP)
IF(LTIME.GT.TN) Q=QQF
! DETERMINATION OF AREAS AND WATER DEPTHS AT TIME LEVEL N
Y(1)=0.01
121 ETOTAL=(Q*CON)/S**.5
ECHECK=(AREA(WID,Y(1),ZZ))**(5./3.)/(PERI(WID,Y(1),ZZ))**(2./3.)
IF(ETOTAL.LT.ECHECK) GOTO 122
Y(1)=Y(1)+.01
GOTO 121
122 A(1)=AREA(WID,Y(1),ZZ)
DX(1)=0
DO 40 K=2,I-1
DX(K+1)=DX(K)+DL
Y1=(AO(K+1)-AO(K-1))/(2.*DL)
Y2=ALPHA*DT*COEF*AO(K)**(COEF-1)
A(K)=AO(K)-Y2*Y1
40 CONTINUE
DO 80 K=I,I
Y1=(AO(K)-AO(K-1))/DL
Y2=ALPHA*DT*COEF*AO(K)**(COEF-1)
A(K)=AO(K)+Y2*Y1
80 CONTINUE
DO 50 K=2,I
DIS(K)=ALPHA*A(K)**COEF
Y(K)=A(K)/WID
50 CONTINUE
IF(J.EQ.LTIME) THEN
J=J+J
WRITE(3,151)LTIME
151 FORMAT(//,2X,'TIME=',I6,/)
WRITE(3,157) Q
157 FORMAT (2X,'DISCHARGE=',F10.4,/)
WRITE(3,205)
205 FORMAT (5X,'LENGTH ',6X' DEPTH ',6X,'AREA ',/)
WRITE(3,206) (DX(K),Y(K),A(K),K=1,I)
206 FORMAT (2X,F12.4,3X,F10.4,3X,F10.4)
ENDIF
! REPLACING
DO 60 K=1,1
YO(K)=Y(K)
AO(K)=A(K)
60 CONTINUE
30 CONTINUE
RETURN
END

SUBROUTINE &
&COMPW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,ICHECK,D,C,NNN,QQ0,QQP&
&,QQF,TP,TN,TMAX,DT,P,L)
REAL N,L
DIMENSION DX(400),UO(400),YO(400),Y(400),U(400)
AREA(B,YY,Z)=(B+Z*YY)*YY
PERI(B,YY,Z)=B+2*YY*(1+Z**2)**.5
WRITE(3,*)'RESULTS OF COMPLETE DYNAMIC WAVE'
QIN=QQ
WID=BB
S=S0
CON=N
DL=DXX
DX(1)=0
DO 15 K=1,I
UO(K)=QIN/AREA(WID,YO(K),ZZ)
DX(K+1)=DX(K)+DL

15 CONTINUE
WRITE(3,199)
199 FORMAT (2X,'TIME=0',/)
WRITE(3,101) QIN
101 FORMAT (2X, 'INITIAL DISCHARGE=',F9.4,/)
WRITE(3,102)
102 FORMAT (2X, 'LENGTH',3X,'DEPTH ',3X,'VELOCITY',/)
WRITE(3,103) (DX(K),YO(K),UO(K),K=1,I)
103 FORMAT (2X,F12.4,3X,F10.4,3X,F10.4)
WRITE(*,*)'ENTER THE PRINT OUT TIME INTERVAL, (sec)'
READ(*,*)J
DO 20 LTIME=1,INT(TMAX)
WRITE(*,*)LTIME
! EQUATIONS OF FLOOD HYDROGRAPH
DIS=QQ0+(QQP-QQ0)/TP*LTIME
IF(LTIME.GT.TP)DIS=QQP-(QQP-QQF)/(TN-TP)*(LTIME-TP)
IF(LTIME.GT.TN) DIS=QQF
! DETERMINATION OF VELOCTIES AND WATER DEPTHS AT TIME LEVEL NNN
Q=DIS
Y(1)=0.01
121 ETOTAL=(Q*CON)/S**.5
ECHECK=(AREA(WID,Y(1),ZZ))**(5./3.)/(PERI(WID,Y(1),ZZ))**(2./3.)
IF(ETOTAL.LT.ECHECK) GOTO 122
Y(1) = Y(1)+.01
GOTO 121
122 U(1)=Q/AREA(WID,Y(1),ZZ)
DX(1)=0
DO 30 K=2,I-1

DX(K+1)=DX(K)+DL
Y1=UO(K)*(YO(K-1)-YO(K+1))
Y2=YO(K)*(UO(K-1)-UO(K+1))
Y(K)=YO(K)+DT/2./DL*(Y1+Y2)
GAM=Y(K)**(4./3)/9.81/DT/CON**2
BET1=UO(K+1)-UO(K-1)
BET2=9.81*DT/2./DL*(YO(K+1)-YO(K-1))
BET=GAM*(UO(K)*DT/2./DL*BET1+BET2-9.81*DT*S-UO(K))
U(K)=(-GAM+(GAM**2.-4*BET)**0.5)/2.
30 CONTINUE
DO 40 K=I,I
Y1=YO(K)*(UO(K-1)-UO(K))
Y2=UO(K)*(YO(K-1)-YO(K))
Y(K)=YO(K)+DT/DL*(Y1+Y2)
IF(ICHECK.EQ.1) THEN
H00=Y(K)-P
X=P/H00
IF(X.GE.2.8) THEN
C0=2.175
ELSE
C0=.018*X**7-.218*X**6+1.084*X**5-2.872*X**4+4.37*X**3-3.847*X**&
&2+1.889*X+1.72
ENDIF
QDW=C0*L*H00**1.5
ELSE
QDW=C*NNN*3.14*D**2/4*(19.62*Y(K))**.5
ENDIF
U(K) =QDW/AREA(WID,Y(K),ZZ)
40 CONTINUE
IF(J.EQ.LTIME)THEN
J=J+1800
WRITE(3,111)LTIME
111 FORMAT (//,2X,'TIME=',I6,/)
WRITE(3,110) Q
110 FORMAT (2X,'DISCHARGE=',F10.4,/)
WRITE(3,105)
105 FORMAT (2X,'LENGTH',3X,'DEPTH',3X,'VELOCTIY',/)
WRITE(3,106)(DX(K),Y(K),U(K),K=1,I)
106 FORMAT (2X,F12.4,3X,F10.4,3X,F10.4)
ENDIF
! REPLACING
DO 50 K=1,I
YO(K)=Y(K)
UO(K)=U(K)
50 CONTINUE
20 CONTINUE
RETURN
END

 

main.f95:180:25:
  180 |     &F,TP,TN,TMAX,DT,P,L)
      |                         1
Error: Missing actual argument for argument ‘l’ at (1)
main.f95:183:25:
  183 |     &F,TP,TN,TMAX,DT,P,L)
      |                         1
Error: Type mismatch in argument ‘tmax’ at (1); passed REAL(4) to INTEGER(4)





 

 

 

 

 

 

 

 

0 Kudos
1 Reply
andrew_4619
Honored Contributor III
493 Views

 

CALL DIFFW      (QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,QQP,QQF,TP, TN,TMAX,DT,   P,  L)
SUBROUTINE DIFFW(QQ,BB,S0,N,DXX,YNN,I,ZZ,YO,QQ0,QQP,QQF,TP,  TN,TMAX, DT, P,L)

 

 

The call and routine have a different number of parameters due to I think a missing comma and 'misuse' of continuation &

You have & at the end but only need & at the begging if you are breaking  a word or string to avoid extra spaces. e.g

" I am a string"

"I am&

        & a string"

 

Reply