程序有很多错误,谁能帮忙看看
本帖最后由 wangjin27 于 2014-2-18 11:05 编辑!Console7.f90
!
!FUNCTIONS:
!Console7 - Entry point of console application.
!
!****************************************************************************
!
!PROGRAM: Console7
!
!PURPOSE:Entry point for the console application.
!
!****************************************************************************
MODULE GLOBAL
implicit double precision(a-h,o-z)
INTEGER IRZ(3,8),IRF(2,4),NOD(8,100),IB(8,220),IC(8,220),ID(220),NT(660),MMF(8),KKF(100)
REAL*4 RZ(8,8),GBF(2,4),GB(3,8),GBX(100,4),TJ(100),PFN(2,4,4),PPXF(2,100,4),PYF(2,100,4),FV(100,4),FN(4,4),FS(1,4),FC(1,4),UF(100,4),VF(100,4),FMJ(100),TAF(220),X(3,220),U(3,220),PR(3,8,8),PX(8,100,8),py(8,100,8),pz(8,100,8),hp(100,8),eq1(10),e(6,100,8),ev(100,8),eqm(100),fhls(100,4),s2(8,100),s1(100),evm(100),eqg(100),TP(100),S3(8,100),A1(660),a2(660),a(10000),UU(3,220),DLX(15),HDX(15),RDX(15)
REAL V1,V2,V3,V4,V5,V6,V7,V8,V9,V0,DL,PP,GA,GC,GN,G0,YKZ,PS,UP,W,WP,WT,F,GM,T0,T1,VR,AL,TL,BB,H0,H1,R,TK,DTS,STR,STL
end module
program main
use global
OPEN(5,FILE='fi,dat',status='old')
OPEN(6,FILE='fo.dat',status='old')
OPEN(7,FILE='fb.dat',status='old')
READ(5,*)R,VR,BB,HO,H1,F,TK
read(5,*)J1,J2,J3,j1f,j1b,N6
read(5,*)GA,GC,GM,GN,G0,T0,T1,ykz
read(5,*)e1,e2,e3,e4,e5,e6,e7,e8,e9,e0
read(5,*)v1,v2,v3,v4,v5,v6,v7,v8,v9,v0
WRITE(*,10)R,VR,BB,H0,H1,F,TK,J1,J2,J3,N6,YKZ,GA,GC,G,GN,T0,T1
10FORMAT(7F10.4/4I10/F10.5/7F10.3)
CALL NEN1
CALL NEN2
CALL NEN3
CALL NEN4
call kmf
write(*,*)(kkf(j),j=1,nm)
write(7,*)(kkf(j),j=1,nm)
CALL INXU
CALL FBC
CALL ENERGY
17NEG=0
M6=0
N100=0
999 N100=N100+1
IF(N100.GE.n_max)GO TO 901
call chkd
CALL MINFI
YB=X(2,NP)
CALL XYZ
IF(abs(YB-X(2,NP))/YB.LE.v1)GO TO 900
CALL FBC
CALL FEM
CALL ENERGY
GO TO 999
901 write(*,*)'attention:N100>N_max!!!'
900 CALL STRS
CALL PRT
STOP
END
SUBROUTINE NEN1
NE1=J1+1
NE2=J2+1
NE3=J3+1
nn=ne2*ne3
NN3=NN*3
jn=j2*j3
j1c=j1-j1f-j1b
NM=J1*J2*J3
NP=NE1*NE2*NE3
DO 100 I=1,J1
DO 100 J=1,J2
do 100 l=1,j3
K=(I-1)*NN+(J-1)*ne3+1
N=(I-1)*Jn+(j-1)*j3+1
NOD(1,N)=K
NOD(2,N)=K+1
NOD(3,N)=K+ne3
NOD(4,N)=K+ne3+1
NOD(5,N)=K+NN
NOD(6,N)=K+NN+1
NOD(7,NN)=K+NN+ne3
100 NOD(8,N)=K+NN+ne3+1
END
SUBROUTINE INXU
AL=SQRT(R*(H0-H1)*2.0)
AFA=AL/R
DL=AL/J1C
DB=BB/J2
DH0=H0/J3
DH1=H1/J3
call rclear(x,3*np)
DO 300 I=1,NE1
DO 300 K=1,NE2
DO 300 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
X(1,I1)=DL*(I-1)
X(2,I1)=DB*(K-1)
300 CONTINUE
DO 301 I=1,J1B+1
DO 301 K=1,NE2
DO 301 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
X(3,I1)=DH0*(NE3-J)
301 CONTINUE
DO 302 I=J1B+2,NE1-J1F
DO 302 K=1,NE2
DO 302 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
X(3,I1)=(R+H1-SQRT(R**2-(AL-X(1,i1))**2))/j3*(ne3-j)
302 COTINUE
DO 303 I=NE1-J1F+1,NE1
DO 303 K=1,NE2
DO 303 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
X(3,I1)=DH1*(NE3-J)
303 CONTINUE
DO 304 I=1,NE1
DO 304 K=1,NE2
DO 304 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
TAF(I1)=0.
IF(J.NE.1)TAF(I1)=-(AL+j1b*dl-X(1,I1))/(R+H1-X(3,I1))
304 CONTINUE
DO 441 J=1,NM
EQM(J)=VR*AFA/(H0+H1)
hhu=(x(3,nod(1,j))+x(3,nod(3,j))+x(3,nod(5,j))+x(3,nod(7,j)))/4.
hhb=(x(3,nod(2,j))+x(3,nod(4,j))+x(3,nod(6,j))+x(3,nod(8,j)))/4.
hhd=h0/j3
EQ1(J)=(hhd-(hhu-hhb))/hhd*1.075
if(eq1(j).le.0.01)eq1(j)=0.01
if(eqm(j).le0.01)eqm(j)=0.01
S1(J)=GA*(V0+GC*EQ1(J))**GN*EQM(J)**GM+G0
441 TP(J)=S1(J)*.57735*TK
PP=S1(2*j2+1)*(1.+0.25*AL/(H0+H1))
GAM=0.5*AFA*(1.-0.5*AFA/TK)
BG=GAM/AFA
BE=J1C/BG
GG=R+H1-R*COS(GAM)
VOM=VR*COS(GAM)*GG
call rclear(u,3*np)
DO 309 I=J1B+1,NE1-J1F
DO 309 K=1,NE2
DO 309 J=1,NE3
I1=(I-1)*NN+(K-1)*NE3+J
I3=(I-1)*NN+1
U(1,I1)=VOM/X(3,I3)*(1.+E1*(BE+J1B-I))
U(3,I1)=U(1,I1)*TAF(I3)/j3*(NE3-J)
U(2,I1)=-ykz*(K-1)*U(3,I3)/j2
309 CONTINUE
DO 319 I=1,J1B
DO 319 J=1,NN
I1=(I-1)*NN+J
U(1,I1)=U(1,J1B*NN+1)
U(3,I1)=0.
U(2,I1)=0.
319 CONTINUE
DO 329 I=NE1-J1F+1,NE1
DO 329 J=1,NN
I1=(I-1)*NN+J
U(1,I1)=U(1,NP-J1F*NN)
U(3,I1)=0.
U(2,I1)=0.
329 CONTINUE
CALL XYZ
END
怎么不显示?附件能行吗
啥也没有? 每一个使用了 global 模块的 subroutine,都要写 use global,不止主程序需要写,其他子程序也需要。
另外,有很多因抄写错误引起的地方,对照原书修改吧。如有问题,请再回复。 本帖最后由 珊瑚虫 于 2014-2-18 19:08 编辑
看了你的代码,和楼上的观点一样,程序编写必须细心, 程序中大量错误,均为抄写导致,请楼主详细查错后再提问。
页:
[1]