管路 8
节点编号 节点2 节点 3 节点 4 节点 5 节点 6 水库 1 水库 7
260 250
表4 各节点计算结果 需水量(l/s) 压力水头 (m) 0.00 0.00 0.00 0.00 150.00 -319.72 19.72
表5 各管路计算结果 40.45 30.96 30.05 29.16 29.82 50.00 30.00
管路编号 管路 1 管路 2 管路 3 管路 4 管路 5 管路 6 管路 7 管路 8 流量(l/s) 319.72 133.59 62.19 19.72 42.47 71.40 186.12 36.12 流速(m/s) 6.52 2.72 1.27 0.40 0.87 1.46 3.79 0.74 单位损失(m/km) 144.71 28.75 6.98 0.83 3.44 9.01 53.13 2.55
9-4 编写教材例9-8解算源程序
PROGRAM FWJS
!INTGER NN,NJ,NF,NK,NZ,MI,E
!NN 分支数 NJ 节点数 NF 风机数 NK 固定风量分支数 !NZ 自然风压标志符 0 无风压 MI最大迭代数 PARAMETER(NN0=100,NJ0=100,NF0=100) PARAMETER(NK0=100,NZ0=100,E0=1.0E-4)
PARAMETER(NN4=4*NN0,NJ2=2*NJ0,NM0=10)
DIMENSION NA(NN4),JC(NJ2),BR(NN0),R(NN0),Q(NN0),RR(NN0),J1(NN0)
DIMENSION ME(NM0),NP(NN0),SP(NM0),DD(NK0+NF0),HH(NN4),NT(NN0) DIMENSION X(3),FX(3),C(NM0,3),FQ(NF0),J2(NN0) INTEGER BR
OPEN(1,FILE='DATA.TXT')
READ(1,*) NN,NJ,NF,NK,NZ,MI,E NM=NN-NJ+1
WRITE(*,*) ' NN NJ NM NF NK NZ MI E' WRITE(*,100) NN,NJ,NM,NF,NK,NZ,MI,E 100 FORMAT(7(I4,1X),E8.2) DO I=1,NN
READ(1,*) J1(I),J2(I),R(I) BR(I)=I RR(I)=R(I) END DO
33
WRITE(*,*) ' J1 J2 R' DO I=1,NN
WRITE(*,'(I8,1X,I8,1X,F8.4)') J1(I),J2(I),R(I) END DO
KF=NK+NF IS=KF+1 IE=NN-1 JE=IE
DO I=IS,IE DO J=IS,JE
IF(RR(J+1)<=RR(J)) GOTO 80 T=RR(J)
RR(J)=RR(J+1) RR(J+1)=T T=BR(J)
BR(J)=BR(J+1) BR(J+1)=T 80 CONTINUE
END DO !END OF J JE=JE-1
END DO !END OF I
DO I=1,NJ JC(I)=0 END DO L=0 N=0
DO I=NN,KF+1,-1
NT(I)=0; K=BR(I); JA=J1(K); IF(JC(JA)==JC(JB)) GOTO 170 IF(JC(JA)>JC(JB)) GOTO 150 IF(JC(JA)==0) GOTO 145
JJ=JC(JB) !BEGIN 195 DO J=1,NJ
IF(JC(J)==JJ) JC(J)=JC(JA) END DO !END OF 195
GOTO 185
145 JC(JA)=JC(JB) GOTO 185
150 IF(JC(JB)==0) GOTO 165
JJ=JC(JB) !BEGIN 195 DO J=1,NJ
JB=J2(K) 34
IF(JC(J)==JJ) JC(J)=JC(JA) END DO !END OF 195 GOTO 185
165 JC(JB)=JC(JA) GOTO 185
170 IF(JC(JA)==0) GOTO 180 NT(I)=1 N=N+1 GOTO 185 180 L=L+1 JC(JA)=L JC(JB)=L
185 CONTINUE END DO
IF(N+NK+NF==NM) GOTO 220 WRITE(*,*) 'N=',N,'KF=',KF STOP
220 IF(KF>0) GOTO 230 GOTO 240 230 DO I=1,KF NT(I)=1 END DO 240 JK=0 JE=0 L=0 DO I=1,NN
IF(NT(I)>0) GOTO 255 GOTO 365 255 K=BR(I) L=L+1 JK=JK+1 NA(JK)=K JA=J1(K) JB=J2(K) N=I+1
260 CONTINUE DO J=N,NN
IF(NT(J)==0) GOTO 270 GOTO 305 270 K=BR(J)
IF(JB==J1(K)) GOTO 290 IF(JB==J2(K)) GOTO 285 GOTO 305 285 JB=J1(K) JK=JK+1 NA(JK)=-K
35
GOTO 295 290 JB=J2(K) JK=JK+1 NA(JK)=K
295 IF(JA==JB) GOTO 315 NT(J)=-1 GOTO 260
305 CONTINUE END DO GOTO 335
315 CONTINUE DO W=N,NN
IF(NT(W)>=0) GOTO 325 NT(W)=0
325 CONTINUE END DO ME(L)=JK JE=JK GOTO 365
335 K=ABS(NA(JK))
IF(NA(JK)>=0) GOTO 350 JB=J2(K) GOTO 352 350 JB=J1(K) 352 JK=JK-1
IF(JK>JE) GOTO 260 K=BR(I)
WRITE(*,*) 'K=',K STOP
365 CONTINUE END DO
ML=ME(NM)
WRITE(*,*) ' MESH BR NA' JE=0
DO I=1,NM JS=JE+1 JE=ME(I) L=JE-JS+1 !WRITE(*,*)
WRITE(*,'(15(I6,1X))') I,L,(NA(J),J=JS,JE) !END DO END DO
WRITE(*,*) 'TOTAL=',ML
IF(NZ==0) GOTO 500 DO I=1,NN NP(I)=0
36