# coding: utf-8 from matplotlib import rcParams rcParams['font.family'] = 'sans-serif' rcParams['font.sans-serif'] = ['arial narrow'] import matplotlib.pyplot as plt #from matplotlib.patches import Polygon from mpl_toolkits.axes_grid.axislines import Subplot from math import * import sys import numpy as np def CALX(c,y,pm): return (-c[0]+pm*sqrt(c[0]**2-4*(y**2+c[1]*y+c[2])))/2 def CALC(x1,y1,x2,y2,x3,y3): a=np.array([[x1,y1,1],[x2,y2,1],[x3,y3,1]]) b=np.array([-x1**2-y1**2,-x2**2-y2**2,-x3**2-y3**2]) c=np.linalg.solve(a,b) return c dy=0.1 xx=[] x1=4;y1=-18.5 x2=0;y2=0 x3=4;y3=18.5 c=CALC(x1,y1,x2,y2,x3,y3) del x1,x2,x3,y1,y2,y3 yy1=np.arange(-18.5,18.5+dy,dy) for y in yy1: x=CALX(c,y,-1) xx=xx+[x] x1=214;y1=-18.5 x2=218;y2=0 x3=214;y3=18.5 c=CALC(x1,y1,x2,y2,x3,y3) del x1,x2,x3,y1,y2,y3 yy2=np.arange(18.5,-18.5-dy,-dy) for y in yy2: x=CALX(c,y,1) xx=xx+[x] xx=xx+[4] yy=np.r_[yy1,yy2,[-18.5]] n=len(yy) del yy1,yy2,c for i in range(0,n): print(xx[i],yy[i]) xmin=-50 xmax=270 ymin=-50 ymax=50 fig = plt.figure() ax1 = Subplot(fig,111) #ax1 = plt.gca() fig.add_subplot(ax1) #fig.suptitle(str_t,fontsize=14,fontweight='bold') ax1.plot(xx,yy,color='#000000',lw=1.5) ax1.plot([ 4, 4],[-18.5,18.5],color='#000000',linewidth=1.5) ax1.plot([ 25, 25],[-18.5,18.5],color='#000000',linewidth=1.5) ax1.plot([ 86, 86],[-18.5,18.5],color='#000000',linewidth=1.5) ax1.plot([112,112],[-18.5,18.5],color='#000000',linewidth=1.5) ax1.plot([173,173],[-18.5,18.5],color='#000000',linewidth=1.5) ax1.plot([214,214],[-18.5,18.5],color='#000000',linewidth=1.5) c=plt.Circle(( 36,-2.75), 4.6, color='#000000', linewidth=1.5, fill=False);ax1.add_patch(c) c=plt.Circle(( 74,-2.75), 4.6, color='#000000', linewidth=1.5, fill=False);ax1.add_patch(c) c=plt.Circle((123,-2.75), 4.6, color='#000000', linewidth=1.5, fill=False);ax1.add_patch(c) c=plt.Circle((161,-2.75), 4.6, color='#000000', linewidth=1.5, fill=False);ax1.add_patch(c) line1=ax1.plot([-5,223],[0,0],color='#000000',linewidth=0.5) line2=ax1.plot([-5,223],[-2.75,-2.75],color='#000000',linewidth=0.5) line1[0].set_dashes([6,2,2,2]) line2[0].set_dashes([6,2,6,2]) ax1.text(-6,0,'CL of Cavern',fontsize=10,color='#000000',ha='right',va='center') ax1.text(224,-2.75,'CL of Turbine',fontsize=10,color='#000000',ha='left',va='center') ax1.plot([ 0, 0],[ 30.0,-30],color='#000000',linewidth=0.5) ax1.plot([218,218],[ 30.0,-30],color='#000000',linewidth=0.5) ax1.plot([ 4, 4],[-18.5,-30],color='#000000',linewidth=0.5) ax1.plot([ 25, 25],[-18.5,-30],color='#000000',linewidth=0.5) ax1.plot([ 36, 36],[ 10.0,-30],color='#000000',linewidth=0.5) ax1.plot([ 74, 74],[ 10.0,-30],color='#000000',linewidth=0.5) ax1.plot([123,123],[ 10.0,-30],color='#000000',linewidth=0.5) ax1.plot([161,161],[ 10.0,-30],color='#000000',linewidth=0.5) ax1.plot([173,173],[-18.5,-30],color='#000000',linewidth=0.5) ax1.plot([193,193],[ 18.5,-30],color='#000000',linewidth=0.5) ax1.plot([214,214],[-18.5,-30],color='#000000',linewidth=0.5) ax1.plot([ 40.6, 40.6],[-2.75,18.5],color='#000000',linewidth=0.5) ax1.plot([ 78.6, 78.6],[-2.75,18.5],color='#000000',linewidth=0.5) ax1.plot([127.6,127.6],[-2.75,18.5],color='#000000',linewidth=0.5) ax1.plot([165.6,165.6],[-2.75,18.5],color='#000000',linewidth=0.5) x11=109.0;y11= 30;u11= 218/2;v11=0 x12=109.0;y12= 30;u12=-218/2;v12=0 x20= -5.0;y20=-30;u20= 5.0 ;v20=0 x31= 14.5;y31=-30;u31= 21/2 ;v31=0 x32= 14.5;y32=-30;u32=-21/2 ;v32=0 x41= 30.5;y41=-30;u41= 11/2 ;v41=0 x42= 30.5;y42=-30;u42=-11/2 ;v42=0 x51= 55.0;y51=-30;u51= 38/2 ;v51=0 x52= 55.0;y52=-30;u52=-38/2 ;v52=0 x61= 98.5;y61=-30;u61= 49/2 ;v61=0 x62= 98.5;y62=-30;u62=-49/2 ;v62=0 x71=142.0;y71=-30;u71= 38/2 ;v71=0 x72=142.0;y72=-30;u72=-38/2 ;v72=0 x81=167.0;y81=-30;u81= 12/2 ;v81=0 x82=167.0;y82=-30;u82=-12/2 ;v82=0 x91=183.0;y91=-30;u91= 20/2 ;v91=0 x92=183.0;y92=-30;u92=-20/2 ;v92=0 xa1=203.5;ya1=-30;ua1= 21/2 ;va1=0 xa2=203.5;ya2=-30;ua2=-21/2 ;va2=0 xb0=223.0;yb0=-30;ub0=-5.0 ;vb0=0 xc1= 31.0;yc1=3.5; uc1= 5; vc1=0 xc2= 45.6;yc2=3.5; uc2=-5; vc2=0 xd1= 69.0;yd1=3.5; ud1= 5; vd1=0 xd2= 83.6;yd2=3.5; ud2=-5; vd2=0 xe1=118.0;ye1=3.5; ue1= 5; ve1=0 xe2=132.6;ye2=3.5; ue2=-5; ve2=0 xf1=156.0;yf1=3.5; uf1= 5; vf1=0 xf2=170.6;yf2=3.5; uf2=-5; vf2=0 X = [x11,x12,x20,x31,x32,x41,x42,x51,x52,x61,x62,x71,x72,x81,x82,x91,x92,xa1,xa2,xb0,xc1,xc2,xd1,xd2,xe1,xe2,xf1,xf2] Y = [y11,y12,y20,y31,y32,y41,y42,y51,y52,y61,y62,y71,y72,y81,y82,y91,y92,ya1,ya2,yb0,yc1,yc2,yd1,yd2,ye1,ye2,yf1,yf2] U = [u11,u12,u20,u31,u32,u41,u42,u51,u52,u61,u62,u71,u72,u81,u82,u91,u92,ua1,ua2,ub0,uc1,uc2,ud1,ud2,ue1,ue2,uf1,uf2] V = [v11,v12,v20,v31,v32,v41,v42,v51,v52,v61,v62,v71,v72,v81,v82,v91,v92,va1,va2,vb0,vc1,vc2,vd1,vd2,ve1,ve2,vf1,vf2] ax1.quiver(X,Y,U,V,angles='xy',scale_units='xy',scale=1,width=0.002,headwidth=5,headlength=10) ax1.text(109,30,'L =218.000',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(2,-33,'4.000',fontsize=10,color='#000000',ha='right',va='top') ax1.text(x31,-33,'21.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(x41,-30,'11.000',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(x51,-33,'38.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(x61,-33,'49.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(x71,-33,'38.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(x81,-33,'12.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(x91,-30,'20.000',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(xa1,-33,'21.000',fontsize=10,color='#000000',ha='center',va='top') ax1.text(216,-33,'4.000',fontsize=10,color='#000000',ha='left',va='top') ax1.text(xc1+7.3,3.5,'4.600',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(xd1+7.3,3.5,'4.600',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(xe1+7.3,3.5,'4.600',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(xf1+7.3,3.5,'4.600',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text(142,-20.0,'Tailbay side',fontsize=10,color='#000000',ha='center',va='top') ax1.text(142, 18.5,'Penstock side',fontsize=10,color='#000000',ha='center',va='bottom') ax1.text( 14.5, 0,'Transformer',fontsize=10,color='#000000',ha='right',va='center',rotation=90) ax1.text( 14.5, 0,'Room',fontsize=10,color='#000000',ha='left',va='center',rotation=90) ax1.text( 99.0, 0,'Assembly',fontsize=10,color='#000000',ha='right',va='center',rotation=90) ax1.text( 99.0, 0,'Room',fontsize=10,color='#000000',ha='left',va='center',rotation=90) ax1.text(183.0, 0,'Control',fontsize=10,color='#000000',ha='right',va='center',rotation=90) ax1.text(183.0, 0,'Room',fontsize=10,color='#000000',ha='left',va='center',rotation=90) ax1.text(203.5, 0,'Transformer',fontsize=10,color='#000000',ha='right',va='center',rotation=90) ax1.text(203.5, 0,'Room',fontsize=10,color='#000000',ha='left',va='center',rotation=90) ax1.set_xlim([xmin,xmax]) ax1.set_ylim([ymin,ymax]) ax1.set_xticks(np.arange(xmin,xmax,50)) ax1.set_yticks(np.arange(ymin,ymax+10,10)) ax1.set_xlabel('Distance in Longitudinal-direction (m)',fontsize=10) ax1.set_ylabel('Distance in U/D-direction (m)',fontsize=10) aspect=1.0*(ymax-ymin)/(xmax-xmin)*(ax1.get_xlim()[1] - ax1.get_xlim()[0]) / (ax1.get_ylim()[1] - ax1.get_ylim()[0]) ax1.set_aspect(aspect) #ax1.set_axis_off() ax1.axis["right"].set_visible(False) ax1.axis["top"].set_visible(False) fnameF='fig_ps_sec4.png' plt.savefig(fnameF,dpi=300) plt.show() plt.close()