import numpy as np import sys from math import * import matplotlib.pyplot as plt #global g #global ICT,AFCA,AFCT #global TMAX,dt,DTWR #global PAA,PCI,PCO #global RWL,TNL,TNA,TNC #global NST,SEL,SAA,SLB #global NQT,QTQ,QTI #global AFCS, QI def WOUT(dts,zw,vw,qn,fout): #print of Time, WL of Surge tank, Velocity of Tunnel, Discharge, k global PAA,PCI,PCO cf=0.5*(PCI+PCO)*PAA k=FK(vw,qn,cf) fout.write('{0:15e},{1:15e},{2:15e},{3:15e},{4:15e}\n'.format(dts,zw,vw,qn,k)) def RUNGE(qo,vo,zo,fa,dtt,dts): global PAA,PCI,PCO wrk=0.0 dz0=dtt*FZ(vo,qo,fa) cf=PCI*PAA # Water level rising (in-flow from port) if dz0>0.0: cf=PCO*PAA # Water level drop (out-flow from port) wrk=FK(vo,qo,cf) dv0=dtt*FV(zo,vo,wrk) v1=vo+0.5*dv0 z1=zo+0.5*dz0 dtw=dts-dtt*0.5 q1=QNCAL(dtw) wrk=FK(v1,q1,cf) dv1=dtt*FV(z1,v1,wrk) dz1=dtt*FZ(v1,q1,fa) v1=vo+0.5*dv1 z1=zo+0.5*dz1 wrk=FK(v1,q1,cf) dv2=dtt*FV(z1,v1,wrk) dz2=dtt*FZ(v1,q1,fa) v1=vo+dv2 z1=zo+dz2 dtw=dts q2=QNCAL(dtw) wrk=FK(v1,q2,cf) dv3=dtt*FV(z1,v1,wrk) dz3=dtt*FZ(v1,q2,fa) dv=(dv0+2.0*dv1+2.0*dv2+dv3)/6.0 dz=(dz0+2.0*dz1+2.0*dz2+dz3)/6.0 return dv,dz,q2 def FZ(v,q,fa): global TNA return (q-TNA*v)/fa def FK(v,q,cf): global g,TNA return abs((TNA*v-q)/cf)*(TNA*v-q)/cf/2.0/g def FV(z,v,wrk): global g,TNC,TNL return (z-TNC*abs(v)*v-wrk)/TNL*g def QNCAL(tt): global AFCA,AFCT global NQT,QTQ,QTI global AFCS, QI qn=QI+AFCA*sin(2.0*pi/AFCT*tt) if tt>=AFCS: for i in range(1,NQT): if QTI[i-1]NST-1: iw=NST-1 if zw=nnp: npw=0 zw=RWL-zi vw=vi qn=q1 WOUT(dts,zw,vw,qn,fout) fout.close() print('iret=%1d'%iret) data=np.loadtxt(fnameW,delimiter=',', skiprows=1, usecols=(0,1)) TI=data[:,0] WL=data[:,1] xmin=0.0 xmax=TMAX fig=plt.figure(figsize=(10, 5)) plt.plot(TI,WL,color='black',lw=2.0,label='WL in the shaft') plt.hlines(RWL,xmin,xmax,alpha=0.3,color='black',lw=1.5,linestyles='-') plt.text(xmax-10,RWL,'RWL',fontsize=10,color='black',ha='right',va='bottom') for i in range(0,NST): plt.hlines(SEL[i],xmin,xmax,alpha=0.3,color='black',lw=1.5,linestyles='--') plt.text(xmax-10,SEL[i],SLB[i],fontsize=10,color='black',ha='right',va='bottom') n1=np.argmax(WL) n2=np.argmin(WL) plt.text(TI[n1],WL[n1],'max:%.3f(%.1fsec)'%(WL[n1],TI[n1]),fontsize=10,color='black',ha='left',va='bottom') plt.text(TI[n2],WL[n2],'min:%.3f(%.1fsec)'%(WL[n2],TI[n2]),fontsize=10,color='black',ha='left',va='top') plt.xlabel('Time (second)') plt.ylabel('Elevation (EL.m)') plt.xlim(xmin,xmax) plt.grid() plt.savefig(fnameF,dpi=200) #plt.show() plt.close()