主题:急急急,求大虾指点
老师最近给了个程序让调试,我才刚接触,自学了很长时间,纠结啊,请各位大侠们指点下,哪里有问题,我一直调试有问题啊,膜拜啊
DIMENSION HS(0:20),HC(0:20),HW(20),MS(20)
DIMENSION HM(20),HI(0:20),ZC(0:20),ZM(20,50),FC(0:20),
* F(20,20), AC(0:20),BC(0:20)
DIMENSION IC(0:20)
REAL K1,N0,M0,N1,M1,N2
CHARACTER*12 NAME1,NAME2
COMMON ZC,ZM,K1,R,E0,EU,SM,RM,AC,HC,HM,FM,IC,BC,BM,FCT,MS
WRITE(*,'(A)')'Input data file name, please!'
READ(*,'(A)')NAME1
WRITE(*,'(A)')'Output data file name, please!'
c input calculation parameters
OPEN(5,FILE=NAME1,STATUS='OLD')
OPEN(6,FILE=NAME2,STATUS='UNKNOWN')
READ(5,*)NS
READ(5,*)H,HJ
HS(0)=HJ
READ(5,*)(HS(I),I=1,NS)
HC(0)=HS(0)
READ(5,*)(HC(I),I=1,NS)
READ(5,*)(AC(I),I=0,NS)
READ(5,*)(HW(I),I=1,NS)
READ(5,*)BJ,BM
BC(0)=BJ
DO 1 I=1,NS
BC(I)=BM
1 CONTINUE
READ(5,*)K1,R,E0,EU,SM
READ(5,*)RM,ETM,ECM
READ(5,*)N0,M0
READ(5,*)(MS(I),I=1,NS)
READ(5,*)DF,DE,DN,DM,IT,JT
c strip cuting
write(6,2)H
2 FORMAT(1X,'Hight of building=',f5.3)
write(6,3)(HS(I),I=1,NS)
3 FORMAT(1X,'Hight of storeys:',/1x,10f5.3)
write(6,4)(HC(I),I=0,NS)
4 FORMAT(1X,'Hight of girds:',/1x,10f5.3)
write(6,6)(AC(I),I=0,NS)
6 FORMAT(1X,'Area of reforcement:',/1x,5e10.3)
WRITE(6,7)(HW(I),I=1,NS)
7 FORMAT(1X,'Hight of windows:',/1x,10f6.3)
WRITE(6,8)BJ,BM
8 FORMAT(1X,'Width of walls:',/1x,10f6.3)
WRITE(6,9)K1,R,E0,EU,SM,RM,ETM,ECM
9 FORMAT(1X,'Material parameter:'/1x,
* 'Concrete:',5e10.3/1x,'Masonry:',5e10.3)
WRITE(6,12)N0,M0
12 FORMAT(1X,'Mining load:N0=',f12.3,14x,'M0=',f12.3)
WRITE(6,13)(MS(I),I=1,NS)
13 FORMAT(1X,'Strips of storey masonry:'/1x,10I4)
WRITE(6,14)DF,DE,DN,DM,IT,JT
14 FORMAT(1X,'Calculation control parameter:'
*/1x,'DF=',e10.3,2x,'DE=',e10.3,2x,'DN='E10.3,2X,
*'DM=',E10.3,/1X,'IT=',I10,2X,'JT=',I10)
HI(0)=HJ
DO 10 I=1,NS
HM(I)=HS(I)-HC(I)-HW(I)
HM(I)=HM(I)/MS(I)
HI(I)=0
DO 5 J=0,I
HI(I)=HI(I)+HS(J)
5 CONTINUE
10 CONTINUE
C calculating external force in hight of H/2
M0=M0-N0*H/2
IF(M0.LT.1.0E-5) DF=-DF
IF(N0.LT.1.0E-5) DE=-DE
WRITE(6,16)N0,M0,DF,DE
16 FORMAT(1X,'Calculation: N0=',f12.3,2x,'M0=',f12.3,2x,
* 'DF=',e10.3,2x,'DE=',e10.3)
c calculating Zci,Zmi
DO 20 I=0,NS
ZC(I)=0
20 CONTINUE
DO 40 I=0,NS
ZC(I)=HI(I)-HC(I)/2-H/2
40 CONTINUE
DO 50 I=1,NS
DO 50 J=1,50
ZM(I,J)=0
50 CONTINUE
DO 70 I=1,NS
K=MS(I)
DO 60 J=1,K
ZM(I,J)=HI(I-1)+J*HM(I)-HM(I)/2-H/2
60 CONTINUE
70 CONTINUE
FA=0
E3=0
II=0
FCT=0.5*K1*R**0.67
C IC(0:NS) Concrete cracking symbol
DO 75 i=0,ns
IC(I)=0
75 CONTINUE
80 II=II+1
IF(II.EQ.IT)STOP 9999
FA=FA+DF
JJ=0
90 JJ=JJ+1
IF(JJ.EQ.JT) STOP 1111
CALL BBC(E3,FA,N1,M1.NS,II,JJ,FC)
IF(ABS(N1-N0).GT.DN) THEN
IF(N1.GT.N0) THEN
E3=E3-DE
ELSE
E3=E3+DE
END IF
CALL BBC(E3,FA,N2,M1,NS,II,JJ,FC)
IF(ABS(N2-N0).GT.DN) THEN
IF(ABS(N2-N1).LT.DN) THEN
GOTO 90
ELSE
IF(N2.GT.N1) THEN
E3=E3+DE
ELSE
E3=E3-DE
END IF
E3=E3-DE*(N1-N0)/(N2-N1)
GOTO 90
END IF
END IF
END IF
IF(ABS(1-M1/M0).GT.DM) GOTO 80
WRITE(6,'(A)')'CONCRETE GRID CRACKING SYMBOLS:'
WRITE(6,210)(IC(I),I=0,NS)
210 FORMAT(1X,5I10)
CALL BBC(E3,FA,N1,M1,NS,II,JJ,FC)
WRITE(6,'(A)') 'CONCRETE GRID FORCES:'
WRITE(6,200)(FC(I),I=0,NS)
200 FORMAT(1X,5F10.3)
ETU=E3+FA*H/2
ECU=E3-FA*H/2
PK=FA/H
X=-ECU*H/(ETU-ECU)
WRITE(6,190)X,PK,E3,ETU,ECU
190 FORMAT(1X,'X=',E9.3,3X,'K=',E9.3,3X,'E3=',E9.3,
* 1X,'Et=',E9.3,3X,'Ec=',E9.3)
WRITE(*,212)II,JJ
212 FORMAT(1X,'II=',I10,5X,'JJ=',I10)
STOP
END
SUBROUTINE BBC(E3,FA,N1,M1,NS,II,JJ,FC)
DIMENSION ZC(0:20),ZM(20,50),AC(0:20),BC(0:20),HC(0:20),
* HM(0:20),FC(0:20),FM(20,50),IC(0:20),MS(20)
REAL N1,M1
COMMON ZC,ZM,K1,R,E0,EU,SM,RM,AC,HC,HM,FM,IC,BC,BM,FCT,MS
C Calculating gird force
DO 110 I=0,NS
EC=E3+ZC(I)*FA
IF(EC.GT.0) THEN
SC=EC*SM
FC(I)=SC*AC(I)
ELSE IF(EC.GT.-E0) THEN
SC=-K1*R*2*EC/(EC-E0)
FC(I)=SC*BC(I)*HC(I)
ELSE IF(EC.GT.-EU) THEN
SC=-K1*R*(1-(200*(EC+E0))**2)
FC(I)=SC*BC(I)*HC(I)
ELSE
SC=-0.3*R
FC(I)=SC*BC(I)*HC(I)
WRITE(6,105) II,JJ,I
105 FORMAT(/1X,'II=',I7,3X,'JJ=',I7,3X,
* 'Increasing Storey',2x,I2,2X,'GIRD SECTION!')
END IF
110 CONTINUE
C Calculating brick wall strip force
DO 130 I=1,NS
DO 120 J=1,MS(I)
EM=E3+ZM(I,J)*FA
IF(EM.LT.0) THEN
EM=-EM
C=-460*RM**0.5*EM
SM=-RM*(1-EXP(C))
FM(I,J)=SM*BM*HM(I)
ELSE
FM(I,J)=0
END IF
120 CONTINUE
130 CONTINUE
C Calculating N1
N1=0
DO 150 I=0,NS
N1=N1+FC(I)
150 CONTINUE
DO 160 I=1,NS
DO 160 J=1,MS(I)
N1=N1+FM(I,J)
160 CONTINUE
C Calculating M1
M1=0
DO 170 I=0,NS
M1=M1+FC(I)*ZC(I)
170 CONTINUE
DO 180 I=1,NS
DO 180 J=1,MS(I)
M1=M1+FM(I,J)*ZM(I,J)
180 CONTINUE
RETURN
END
DIMENSION HS(0:20),HC(0:20),HW(20),MS(20)
DIMENSION HM(20),HI(0:20),ZC(0:20),ZM(20,50),FC(0:20),
* F(20,20), AC(0:20),BC(0:20)
DIMENSION IC(0:20)
REAL K1,N0,M0,N1,M1,N2
CHARACTER*12 NAME1,NAME2
COMMON ZC,ZM,K1,R,E0,EU,SM,RM,AC,HC,HM,FM,IC,BC,BM,FCT,MS
WRITE(*,'(A)')'Input data file name, please!'
READ(*,'(A)')NAME1
WRITE(*,'(A)')'Output data file name, please!'
c input calculation parameters
OPEN(5,FILE=NAME1,STATUS='OLD')
OPEN(6,FILE=NAME2,STATUS='UNKNOWN')
READ(5,*)NS
READ(5,*)H,HJ
HS(0)=HJ
READ(5,*)(HS(I),I=1,NS)
HC(0)=HS(0)
READ(5,*)(HC(I),I=1,NS)
READ(5,*)(AC(I),I=0,NS)
READ(5,*)(HW(I),I=1,NS)
READ(5,*)BJ,BM
BC(0)=BJ
DO 1 I=1,NS
BC(I)=BM
1 CONTINUE
READ(5,*)K1,R,E0,EU,SM
READ(5,*)RM,ETM,ECM
READ(5,*)N0,M0
READ(5,*)(MS(I),I=1,NS)
READ(5,*)DF,DE,DN,DM,IT,JT
c strip cuting
write(6,2)H
2 FORMAT(1X,'Hight of building=',f5.3)
write(6,3)(HS(I),I=1,NS)
3 FORMAT(1X,'Hight of storeys:',/1x,10f5.3)
write(6,4)(HC(I),I=0,NS)
4 FORMAT(1X,'Hight of girds:',/1x,10f5.3)
write(6,6)(AC(I),I=0,NS)
6 FORMAT(1X,'Area of reforcement:',/1x,5e10.3)
WRITE(6,7)(HW(I),I=1,NS)
7 FORMAT(1X,'Hight of windows:',/1x,10f6.3)
WRITE(6,8)BJ,BM
8 FORMAT(1X,'Width of walls:',/1x,10f6.3)
WRITE(6,9)K1,R,E0,EU,SM,RM,ETM,ECM
9 FORMAT(1X,'Material parameter:'/1x,
* 'Concrete:',5e10.3/1x,'Masonry:',5e10.3)
WRITE(6,12)N0,M0
12 FORMAT(1X,'Mining load:N0=',f12.3,14x,'M0=',f12.3)
WRITE(6,13)(MS(I),I=1,NS)
13 FORMAT(1X,'Strips of storey masonry:'/1x,10I4)
WRITE(6,14)DF,DE,DN,DM,IT,JT
14 FORMAT(1X,'Calculation control parameter:'
*/1x,'DF=',e10.3,2x,'DE=',e10.3,2x,'DN='E10.3,2X,
*'DM=',E10.3,/1X,'IT=',I10,2X,'JT=',I10)
HI(0)=HJ
DO 10 I=1,NS
HM(I)=HS(I)-HC(I)-HW(I)
HM(I)=HM(I)/MS(I)
HI(I)=0
DO 5 J=0,I
HI(I)=HI(I)+HS(J)
5 CONTINUE
10 CONTINUE
C calculating external force in hight of H/2
M0=M0-N0*H/2
IF(M0.LT.1.0E-5) DF=-DF
IF(N0.LT.1.0E-5) DE=-DE
WRITE(6,16)N0,M0,DF,DE
16 FORMAT(1X,'Calculation: N0=',f12.3,2x,'M0=',f12.3,2x,
* 'DF=',e10.3,2x,'DE=',e10.3)
c calculating Zci,Zmi
DO 20 I=0,NS
ZC(I)=0
20 CONTINUE
DO 40 I=0,NS
ZC(I)=HI(I)-HC(I)/2-H/2
40 CONTINUE
DO 50 I=1,NS
DO 50 J=1,50
ZM(I,J)=0
50 CONTINUE
DO 70 I=1,NS
K=MS(I)
DO 60 J=1,K
ZM(I,J)=HI(I-1)+J*HM(I)-HM(I)/2-H/2
60 CONTINUE
70 CONTINUE
FA=0
E3=0
II=0
FCT=0.5*K1*R**0.67
C IC(0:NS) Concrete cracking symbol
DO 75 i=0,ns
IC(I)=0
75 CONTINUE
80 II=II+1
IF(II.EQ.IT)STOP 9999
FA=FA+DF
JJ=0
90 JJ=JJ+1
IF(JJ.EQ.JT) STOP 1111
CALL BBC(E3,FA,N1,M1.NS,II,JJ,FC)
IF(ABS(N1-N0).GT.DN) THEN
IF(N1.GT.N0) THEN
E3=E3-DE
ELSE
E3=E3+DE
END IF
CALL BBC(E3,FA,N2,M1,NS,II,JJ,FC)
IF(ABS(N2-N0).GT.DN) THEN
IF(ABS(N2-N1).LT.DN) THEN
GOTO 90
ELSE
IF(N2.GT.N1) THEN
E3=E3+DE
ELSE
E3=E3-DE
END IF
E3=E3-DE*(N1-N0)/(N2-N1)
GOTO 90
END IF
END IF
END IF
IF(ABS(1-M1/M0).GT.DM) GOTO 80
WRITE(6,'(A)')'CONCRETE GRID CRACKING SYMBOLS:'
WRITE(6,210)(IC(I),I=0,NS)
210 FORMAT(1X,5I10)
CALL BBC(E3,FA,N1,M1,NS,II,JJ,FC)
WRITE(6,'(A)') 'CONCRETE GRID FORCES:'
WRITE(6,200)(FC(I),I=0,NS)
200 FORMAT(1X,5F10.3)
ETU=E3+FA*H/2
ECU=E3-FA*H/2
PK=FA/H
X=-ECU*H/(ETU-ECU)
WRITE(6,190)X,PK,E3,ETU,ECU
190 FORMAT(1X,'X=',E9.3,3X,'K=',E9.3,3X,'E3=',E9.3,
* 1X,'Et=',E9.3,3X,'Ec=',E9.3)
WRITE(*,212)II,JJ
212 FORMAT(1X,'II=',I10,5X,'JJ=',I10)
STOP
END
SUBROUTINE BBC(E3,FA,N1,M1,NS,II,JJ,FC)
DIMENSION ZC(0:20),ZM(20,50),AC(0:20),BC(0:20),HC(0:20),
* HM(0:20),FC(0:20),FM(20,50),IC(0:20),MS(20)
REAL N1,M1
COMMON ZC,ZM,K1,R,E0,EU,SM,RM,AC,HC,HM,FM,IC,BC,BM,FCT,MS
C Calculating gird force
DO 110 I=0,NS
EC=E3+ZC(I)*FA
IF(EC.GT.0) THEN
SC=EC*SM
FC(I)=SC*AC(I)
ELSE IF(EC.GT.-E0) THEN
SC=-K1*R*2*EC/(EC-E0)
FC(I)=SC*BC(I)*HC(I)
ELSE IF(EC.GT.-EU) THEN
SC=-K1*R*(1-(200*(EC+E0))**2)
FC(I)=SC*BC(I)*HC(I)
ELSE
SC=-0.3*R
FC(I)=SC*BC(I)*HC(I)
WRITE(6,105) II,JJ,I
105 FORMAT(/1X,'II=',I7,3X,'JJ=',I7,3X,
* 'Increasing Storey',2x,I2,2X,'GIRD SECTION!')
END IF
110 CONTINUE
C Calculating brick wall strip force
DO 130 I=1,NS
DO 120 J=1,MS(I)
EM=E3+ZM(I,J)*FA
IF(EM.LT.0) THEN
EM=-EM
C=-460*RM**0.5*EM
SM=-RM*(1-EXP(C))
FM(I,J)=SM*BM*HM(I)
ELSE
FM(I,J)=0
END IF
120 CONTINUE
130 CONTINUE
C Calculating N1
N1=0
DO 150 I=0,NS
N1=N1+FC(I)
150 CONTINUE
DO 160 I=1,NS
DO 160 J=1,MS(I)
N1=N1+FM(I,J)
160 CONTINUE
C Calculating M1
M1=0
DO 170 I=0,NS
M1=M1+FC(I)*ZC(I)
170 CONTINUE
DO 180 I=1,NS
DO 180 J=1,MS(I)
M1=M1+FM(I,J)*ZM(I,J)
180 CONTINUE
RETURN
END