fortran程序总是出现四个错误,求大神帮忙看看哪里出错啦,拜托拜托

2025-05-16 09:52:36
推荐回答(1个)
回答(1):

你的do 写成 d0 了 !



PROGRAM CREEPLIFETOOL 
IMPLICIT DOUBLE PRECISION(A-H,O-Z) 
DIMENSION DV(1000),D(1000),SG(100),TF(100),NS(100),ES(100) 
WRITE(*,*)'ULTIMATE AND MINIMUM STRESS /MPA' 
READ(*,*) SB,SMIN 
WRITE(*,*)'TIME INCREMENT /S' 
READ(*,*) DT 
WRITE(*,*) 'NECKLING STRAIN EV' 
READ(*,*) EV
c! LINEAR CREEP LIMIT 
SV=100.0
c! 幂蠕变线性蠕变特性 
B=3.0E-20 
B0=3.0E-12 
CM=5.0
c! 幂蠕变损伤累积特性 
CC=1.8E-19 
BT=5.0
c! 线性蠕变损伤累积特性 
CL=3.3E-13 
BT2=2.0 
GAM=5.0 
SF=65.0
c! 应力计算点设定 
Do 100 I=1,100 
SG(I)=SMIN+I*(SB-SMIN)/100.0 
ES(I)=0.0
100  CONTINUE 
Do 200 I=1,100 
DV(1)=0.0 
D(1)=0.0 
DVC=0.0 
DC=0.0 
CR0=SG(I)/SB 
EV0=0.0 
EVC=EV/B/SG(I)**CM 
Do 300 J=2,10000000 
ST=SG(I)/(1-DV(J-1))/(1-D(J-1)) 
DDV=DT*B*(1.0-DV(J-1))*ST**CM 
IF(ST.LE.SV) DDV=DT*B0*ST 
IF(ST.LE.SV) THEN 
DV(J)=DV(J-1)+DT*B0*ST*(1.0-DV(J-1)) 
ENDIF 
IF(ST.GT.SV) THEN 
DV(J)=DV(J-1)+DT*B*(1.0-DV(J-1))*ST**CM 
ENDIF 
H=0.0 
IF(ST.GT.SF) H=1.0-(SF/ST)**GAM 
IF(ST.GT.SV) THEN 
D(J)=D(J-1)+DT*CC*ST**BT*H 
ES(I)=ES(I)+B*ST**CM*DT*(1.0-DV(J-1)) 
ELSE 
D(J)=D(J-1)+DT*CL*ST**BT2*H 
ES(I)=ES(I)+B0*ST*DT*(1.0-DV(J-1)) 
ENDIF 
CR1=(1.0-DV(J))*(1.0-D(J)) 
IF(CR1.LT.CR0.OR.D(J).GT.0.5) THEN 
NS(I)=0 
TF(I)=(J-2)*DT 
WRITE(*,210) I,J,NS(I),DV(J),D(J),ES(I) 
GOTO 200 
ENDIF 
IF(ES(I).GT.EV) THEN 
NS(I)=1 
TF(I)=(J-2)*DT 
WRITE(*,210) I,J,NS(I),DV(J),D(J),ES(I) 
GOTO 200 
ENDIF
300  CONTINUE
200  CONTINUE
210  FORMAT(1X,2(I7,1X),I3,1X,3(F6.3,1X)) 
OPEN(3,FILE='CREEPLIFE') 
WRITE(3,*) ' SG CRLIFE CRSTYE'
c! CRSTYLE=0 NO OBVIOUS NECKLING
c! CRSTYLE=1 NECKING BEFORE FAIURE 
DO 500 I=1,100 
WRITE(3,400) SG(I), TF(I), NS(I), ES(I)
500  CONTINUE
400  FORMAT(2X,2(E12.5,2X),I2,1X,E12.5) 
CLOSE(3,STATUS='KEEP') 
END