def ConfigD(): r = prep("ConfigD\\Results.csv") params = {"ps.fonttype": 3} pylab.rcParams.update(params) f = pylab.figure(figsize=(3.5, 2.5)) ax = f.add_axes((0.18, 0.15, 0.75, 0.80)) for i in [4]: ax.plot(r["delta_radial"][i * 7 : (i + 1) * 7], r["eta_c"][i * 7 : (i + 1) * 7]) ax.set_xlabel(r"$\delta_{radial}$, $\delta_{flank}$ [$\mu$m]", size=10) ax.set_ylabel("Overall Isentropic Efficiency [-]", size=10) ax.set_ylim(0.7, 0.9) f.savefig("ConfigDetac.pdf") f.savefig("ConfigDetac.eps") f.savefig("ConfigDetac.png", dpi=600) pylab.close()
def ConfigC(): ## T1=278.0 ## p1=500.0 ## p2=1850.0 ## pratio=p2/p1 ## xlv=np.linspace(0,1,5000) ## kstar=np.zeros_like(xlv) ## Vratio=np.zeros_like(xlv) ## Vratiostar=np.zeros_like(xlv) ## a=np.zeros_like(xlv) ## for i in range(len(xlv)): ## xl=xlv[i] ## a[i]=1-FP.VoidFrac('N2','Zerol',T1,p1,xl) ## kstar[i]=FP.kstar_m('N2','Zerol',T1,p1,xl) ## Vratiostar[i]=pratio**(1.0/kstar[i]) ## Vratio[i]=Vratiostar[i]/(1-a[i]+a[i]*Vratiostar[i]) ## ## def OBJECTIVE_xl(xl): ## xl=xl[0] ## a=1-FP.VoidFrac('N2','Zerol',T1,p1,xl) ## kstar=FP.kstar_m('N2','Zerol',T1,p1,xl) ## Vratiostar=pratio**(1.0/kstar) ## Vratio=Vratiostar/(1-a+a*Vratiostar) ## return 1/Vratio ## ## xl=fmin(OBJECTIVE_xl,0.7) ## print xl ## f=pylab.figure(figsize=(3.5,2.5)) ## ax=f.add_axes((0.15,0.15,0.70,0.80)) ## ax.plot(xlv,Vratiostar,'k') ## ax.plot(xlv,Vratio,'b') ## ax.plot(xl,1/OBJECTIVE_xl(xl),'bo',ms=3,mew=1,mec='b',mfc='none',lw=0.3) ## ax.set_xlabel('$x_l$ [-]',size=10) ## ax.set_ylabel('Volume Ratios [-]',size=10) ## ax.set_ylim(2.4,4.2) ## ax.set_yticks(np.linspace(2.4,4.2,10)) ## ax2=ax.twinx() ## ax2.plot(xlv,kstar,'r') ## ax2.set_ylabel('$k^{*}$ [-]',size=10,color='r') ## ax.text(0.7,2.7,'$k^{*}$',color='r') ## ax.text(0.7,3.6,'$V_{ratio}^{*}$',color='k',rotation=21) ## ax.text(0.8,3.25,'$V_{ratio}$',color='b',ha='center') ## f.savefig('ConfigCVratioIdeal.pdf') ## f.savefig('ConfigCVratioIdeal.eps') ## f.savefig('ConfigCVratioIdeal.png',dpi=600) ## pylab.close() def Vratio(Ref, Liq, T1, p1, xl, p2, eta=1.0): h1 = FP.h_m(Ref, Liq, T1, p1, xl) s1 = FP.s_m(Ref, Liq, T1, p1, xl) h2s = FP.h_sp(Ref, Liq, s1, p2, xl, T1) h2 = (h2s - h1) / eta + h1 T2 = FP.T_hp(Ref, Liq, h2, p2, xl, T1) rho1 = FP.rho_m(Ref, Liq, T1, p1, xl) rho2s = FP.rho_m(Ref, Liq, T2, p2, xl) Vratio = rho2s / rho1 return Vratio T1 = 278 p1 = 500 p2 = 1850 pratio = p2 / p1 Ref = "Nitrogen" fig = pylab.figure(figsize=(3.5, 2.5)) ax = fig.add_axes(ConfigCAxes) ax.set_ylim((1.0, 3.5)) # First the ideal curve for N2 and Zerol XL = [] VRATIO = [] Liq = "Zerol" for xl in np.linspace(0, 1.0, 100): XL.append(xl) VRATIO.append(Vratio(Ref, Liq, T1, p1, xl, p2, eta=1.0)) pylab.plot(XL, VRATIO, "b", lw=1, label="Ideal") (x, y, rot) = InlineLabel(XL, VRATIO, 0.2, axis=ax) pylab.text( x, y, "Ideal", ha="center", va="center", rotation=rot, rotation_mode="anchor", bbox=dict(boxstyle="round", color="white", ec="none", alpha=0.9), ) # Next the 60% curve for N2 and Zerol XL = [] VRATIO = [] Liq = "Zerol" for xl in np.linspace(0, 1.0, 100): XL.append(xl) VRATIO.append(Vratio(Ref, Liq, T1, p1, xl, p2, eta=0.6)) pylab.plot(XL, VRATIO, "b--", label="$\eta$=0.6") (x, y, rot) = InlineLabel(XL, VRATIO, 0.2, axis=ax) pylab.text( x, y, "$\eta_a$ = 0.6", ha="center", va="center", rotation=rot, rotation_mode="anchor", bbox=dict(boxstyle="round", color="white", ec="none", alpha=0.9), ) print interp1d(XL, VRATIO)(0.8796) pylab.xlabel("$x_l$ [-]") pylab.ylabel("$V_{ratio}$ [-]") pylab.savefig("VratioN2Zerol.pdf") pylab.savefig("VratioN2Zerol.eps") pylab.savefig("VratioN2Zerol.png", dpi=600) pylab.close() r = prep("ConfigC\\Results.csv") f = pylab.figure(figsize=(3.5, 2.5)) ax = f.add_axes(ConfigCAxes) N = 19 VratioList = ["1.8", "2.1", "2.4", "2.7", "3.0"] mt = ["-o", "-s", "-*", "-^", "-<"] for i in range(4, -1, -1): rb = r["rb"][i * N : (i + 1) * N] * 1000 eta_c = r["eta_c"][i * N : (i + 1) * N] ax.plot(rb, eta_c, mt[i], ms=4, label="$V_{ratio}$ = " + VratioList[i], mec="none", mew=0.1) pylab.xlabel(r"Base circle radius [mm]") pylab.ylabel(r"Overall isentropic efficiency [-]") leg = pylab.legend(loc="lower center", numpoints=1) frame = leg.get_frame() frame.set_linewidth(0.5) pylab.savefig("ConfigCeta_c.pdf") pylab.savefig("ConfigCeta_c.eps") pylab.savefig("ConfigCeta_c.png", dpi=600) pylab.close() ## rbv=np.linspace(0.0025,0.006,20) ## Vratiov=np.linspace(1.8,3.0,20) ## (RBV,VRATIOV)=np.meshgrid(rbv,Vratiov) ## ETA=0.0*RBV ## for i in range(len(rbv)): ## for j in range(len(Vratiov)): ## rb=rbv[i] ## vratio=Vratiov[j] ## eta_c=-4.584697022+1084.03786637*rb-321163.091505*rb**(2)-38337008.4761*rb**(3)+11489934645.8*rb**(4)+2.63651770137e+12*rb**(5)-3.85103217203e+14*rb**(6)-1.63350067385e+17*rb**(7)+3.68493663615e+19*rb**(8)-2.10073219716e+21*rb**(9)-0.211549615641*vratio+0.253758321903*vratio**(2)+0.132426017479*vratio**(3)+0.0342253390286*vratio**(4)-0.000798476328877*vratio**(5)-0.00613563590463*vratio**(6)-0.00348600045232*vratio**(7)-0.000729077772629*vratio**(8)+0.000600849416383*vratio**(9)+29.15885081*rb**(+0.2927852684)*vratio**(-1.115372635)+213.1143723*rb*vratio-32.78419709*rb*vratio**2-604.6535839*rb**2*vratio ## ETA[i,j]=eta_c ## fig=pylab.figure(figsize=(3.25,3.25)) ## CS=pylab.contour(RBV*1000,VRATIOV,ETA,[0.65,0.675,0.7,0.71,0.72],colors='k',lw=1.5) ## pylab.clabel(CS,fontsize=10,inline=1,fmt='%1.3f %%') ## pylab.close() f = pylab.figure(figsize=(3.5, 2.5)) ax = f.add_axes(ConfigCAxes) i = 3 rb = r["rb"][i * N : (i + 1) * N] * 1000 rad = r["leakageradial"][i * N : (i + 1) * N] flank = r["leakageflank"][i * N : (i + 1) * N] ax.plot(rb, rad, "-o", ms=4, label="Radial", mec="none", mew=0.1) ax.plot(rb, flank, "-s", ms=4, label="Flank", mec="none", mew=0.1) ax.plot(rb, rad + flank, "k-", ms=4, label="Total", mec="none", mew=0.1, lw=1) pylab.text(4.8, 0.22, "Flank", rotation=-15, ha="center", va="center") pylab.text(4.8, 0.6, "Radial", rotation=27, ha="center", va="center") pylab.text(4.8, 0.94, "Total", rotation=15, ha="center", va="center") pylab.xlabel(r"Base circle radius [mm]") pylab.ylabel(r"Leakage terms [kW]") ## pylab.legend(loc='center right',numpoints=1) pylab.savefig("ConfigCleakage.pdf") pylab.savefig("ConfigCleakage.eps") pylab.savefig("ConfigCleakage.png", dpi=600) pylab.close() phi_i0 = r["phi_i0"][i * N : (i + 1) * N] phi_is = r["phi_is"][i * N : (i + 1) * N] phi_ie = r["phi_ie"][i * N : (i + 1) * N] phi_o0 = r["phi_o0"][i * N : (i + 1) * N] phi_os = r["phi_os"][i * N : (i + 1) * N] phi_oe = r["phi_oe"][i * N : (i + 1) * N] rb = r["rb"][i * N : (i + 1) * N] h = r["hs"][i * N : (i + 1) * N] disc_x0 = r["x_port"][i * N : (i + 1) * N] disc_y0 = r["y_port"][i * N : (i + 1) * N] disc_R = r["r_port"][i * N : (i + 1) * N] radialleak = r["leakageradial"][i * N : (i + 1) * N] delta = 12e-6 f = pylab.figure(figsize=(3.5, 2.5)) ax = f.add_axes(ConfigCAxes) A_radial = 2 * delta * rb * (phi_ie * phi_ie / 2 - phi_is * phi_is / 2 - phi_i0 * (phi_ie - phi_is)) * 1e6 Nfl = (phi_ie - phi_os - 2 * pi) / (2 * pi) A_flank = 2 * Nfl * delta * h * 1e6 pylab.plot(rb * 1000, A_radial) pylab.plot(rb * 1000, A_flank) pylab.plot(rb * 1000, A_flank + A_radial) pylab.xlabel(r"Base circle radius [mm]") pylab.ylabel(r"Leakage area [mm$^2$]") pylab.savefig("ConfigCleakArea.pdf") pylab.savefig("ConfigCleakArea.eps") pylab.savefig("ConfigCleakArea.png", dpi=600) pylab.close()
def EricssonLosses(): r = prep("Validation\\Results.csv") ## print r.dtype.names f = pylab.figure(figsize=(3.5, 3.5)) ax = f.add_axes((0.13, 0.11, 0.82, 0.84)) y = ( r["leakageflank"] + r["leakageradial"] + r["suction"] + r["discharge"] + r["mechanical"] + r["w_adiabatic"] + r["q_scroll_amb"] + r["heattransfer"] ) x = r["p_shaft"] ax.plot(x, y, "bo", ms=4) ax.plot(np.r_[0, 5], np.r_[0, 5], "k") ax.plot(np.r_[0, 5], np.r_[0, 5 * 0.97], "k--", lw=0.5) ax.plot(np.r_[0, 5], np.r_[0, 5 * 1.03], "k--", lw=0.5) ax.text(3.8 + 0.05, 0.97 * 3.8, "-3%", ha="left", va="top") ax.text(3.6 - 0.05, 1.03 * 3.6, "+3%", ha="right", va="bottom") ax.set_xlim(2, 5) ax.set_ylim(2, 5) ax.set_xlabel("Experimental Shaft Power [kW]") ax.set_ylabel("Losses+Adiabatic Power [kW]") f.savefig("EricssonLosses.pdf") f.savefig("EricssonLosses.eps") f.savefig("EricssonLosses.png", dpi=600) pylab.close() ind = np.arange(27) # the x locations for the groups width = 0.8 # the width of the bars: can also be len(x) sequence xL = r["xl"] pratio = r["p_out"] / r["p_in"] flank = r["leakageflank"] rad = r["leakageradial"] suct = r["suction"] disc = r["discharge"] mech = r["mechanical"] adia = r["w_adiabatic"] f = pylab.figure(figsize=(3.5, 3.5)) ax = f.add_axes((0.1, 0.12, 0.85, 0.83)) tot = adia + flank + rad + suct + disc l6 = pylab.bar(ind, mech, width, color="k", bottom=tot, lw=0.4, label="Mechanical") tot = tot - disc l5 = pylab.bar(ind, disc, width, color="c", bottom=tot, lw=0.4, label="Discharge") tot = tot - suct l4 = pylab.bar(ind, suct, width, color="g", bottom=tot, lw=0.4, label="Suction") tot = tot - rad l3 = pylab.bar(ind, rad, width, color="yellow", bottom=tot, lw=0.4, label="Radial") tot = tot - flank l2 = pylab.bar(ind, flank, width, color="r", bottom=tot, lw=0.4, label="Flank") tot = tot - adia l1 = pylab.bar(ind, adia, width, color="b", bottom=tot, lw=0.4, label="Adiabatic") ax.set_xlabel("Run Number [-]") ax.set_ylabel("Power terms [kW]") ax.set_ylim(0, 5) leg = ax.legend(loc="lower right") frame = leg.get_frame() frame.set_linewidth(0.5) f.savefig("ExperimentLosses.pdf") f.savefig("ExperimentLosses.eps") f.savefig("ExperimentLosses.png", dpi=600) pylab.close() f = open("EricssonTable.tex", "w") head = "%Made from paperIII.py function EricssonData()\n" head = head + r"\begin{table}[ht]" + "\n" head = head + r"\setlength{\tabcolsep}{3pt}" + "\n" head = head + r"\renewcommand*\arraystretch{1.0}" + "\n" head = head + r"\centering" + "\n" head = ( head + r"\caption{Irreversibility generation components for each experimental testing point from LFEC experimental testing}" + "\n" ) head = head + r"\label{tab:EricssonLosses}" + "\n" head = head + r"\begin{tabular}{*{%d}{c}}" % 9 + "\n" head = head + r"\hline\hline" + "\n" head = head + r"Run& $p_r$ & $x_l$ & $\dot W_{ad}$ & Rad. & Flank & Suct. & Disc.& Mech." + r"\\" + "\n" head = head + r"\#& - & - & kW & kW & kW & kW & kW& kW" + r"\\" + "\hline\n" f.write(head) for i in range(len(flank)): flank = r["leakageflank"][i] rad = r["leakageradial"][i] suct = r["suction"][i] disc = r["discharge"][i] mech = r["mechanical"][i] adia = r["w_adiabatic"][i] xL = r["xl"][i] pratio = r["p_out"][i] / r["p_in"][i] data = "%d & %0.2f & \multicolumn{1}{c|}{%0.2f} & %0.2f & %0.2f & %0.2f & %0.2f & %0.2f & %0.2f" % ( i + 1, pratio, xL, adia, rad, flank, suct, disc, mech, ) f.write(data + r"\\" + "\n") f.write(r"\hline\hline" + "\n") f.write(r"\end{tabular}" + "\n") f.write(r"\end{table}" + "\n") f.close() def ThreeD(): N1 = 0 N2 = 9 xL = r["xl"][N1:N2] pratio = r["p_out"][N1:N2] / r["p_in"][N1:N2] flank = r["leakageflank"][N1:N2] rad = r["leakageradial"][N1:N2] suct = r["suction"][N1:N2] disc = r["discharge"][N1:N2] mech = r["mechanical"][N1:N2] adia = r["w_adiabatic"][N1:N2] f = pylab.figure(figsize=(3.5, 3.5)) ax = f.add_subplot(111, projection="3d") dx = 0.01 * np.ones_like(pratio) dy = 0.03 * np.ones_like(pratio) tot3 = adia + flank + rad + suct + disc ## print xL,pratio,tot3,dx,dy,mech l6 = ax.bar3d(xL, pratio, tot3, dx, dy, mech, color="k", lw=0.4, label="Mechanical", alpha=1.0) tot3 = tot3 - disc l5 = ax.bar3d(xL, pratio, tot3, dx, dy, disc, color="c", lw=0.4, label="Discharge", alpha=1.0) tot3 = tot3 - suct l5 = ax.bar3d(xL, pratio, tot3, dx, dy, suct, color="yellow", lw=0.4, label="Suction", alpha=1.0) tot3 = tot3 - rad l5 = ax.bar3d(xL, pratio, tot3, dx, dy, rad, color="g", lw=0.4, label="Radial", alpha=1.0) tot3 = tot3 - flank l5 = ax.bar3d(xL, pratio, tot3, dx, dy, flank, color="r", lw=0.4, label="Flank", alpha=1.0) tot3 = tot3 - adia l5 = ax.bar3d(xL, pratio, tot3, dx, dy, adia, color="b", lw=0.4, label="Adiabatic", alpha=1.0) ax.set_xlabel("Oil Mass Fraction [-]") ax.set_zlabel("Pressure Ratio [-]") ax.set_zlabel("Power terms [kW]") ## ax.set_ylim(0,5) ax.legend(loc="lower right") f.savefig("ExperimentLosses3D.pdf") f.savefig("ExperimentLosses3D.eps") f.savefig("ExperimentLosses3D.png", dpi=600) pylab.close()
def ConfigA(): r = prep("ConfigA\\Results.csv") ## print r.dtype.names w = 3.5 h = 3.5 d = 0.15 f = pylab.figure(figsize=(3.5, 3.5)) ax = f.add_axes((0.1, 0.1, 0.8, 0.8)) data = np.r_[r["leakageflank"], r["leakageradial"], r["suction"], r["discharge"], r["mechanical"]] labels = ["Leakage\n(flank)", "Leakage\n(radial)", "Suction", "Discharge", "Mechanical"] (path, labelText, pcts) = ax.pie(data, labels=labels, autopct="%0.1f%%", colors=["yellow", "g", "r", "c", "m"]) [t.set_size(8) for t in labelText] [p.set_size(8) for p in pcts] [p.set_linewidth(0.5) for p in path] f.savefig("ConfigALossPie.pdf") f.savefig("ConfigALossPie.eps", set_bbox="tight") f.savefig("ConfigALossPie.png", dpi=600) pylab.close() path = "ConfigA\\Run 0001" pi = np.pi axes_size = (0.15, 0.18, 0.8, 0.77) theta = np.loadtxt(path + "/" + "theta.csv", delimiter=",") p = np.loadtxt(path + "/" + "p.csv", delimiter=",") p = np.where(p < 1e-10, np.nan, p) # Plot data fig = pylab.figure(num=1, figsize=(3.5, 2.5)) pylab.axes(axes_size) ##pylab.subplot(131) pylab.plot(theta, p[1, :], label="$p_s$") pylab.plot(theta, p[9, :], label="$p_{c1-1}$") pylab.plot(theta, p[2, :], label="$p_{d1}$") pylab.plot(theta, p[6, :], label="$p_{ddd}$") pylab.plot(theta, p[5, :], label="$p_{dd}$") pylab.plot(theta, p[7, :], "k--", label="$p_{dd}$") pylab.plot(theta, p[8, :], "k--") pylab.text(3 * pi / 2.0, 500 + 10, "Suction", ha="center", va="bottom", size=8) pylab.text(pi / 2.0, 1850 - 10, "Discharge", ha="center", va="top", size=8) pylab.text(7 * pi / 4.0, 440, "$s_1$", ha="center", va="top", size=10, color="b") pylab.text(pi, 830, "$c_1$", ha="left", va="top", size=10, color="g") pylab.text(3 * pi / 2, 1150, "$d_1$", ha="left", va="top", size=10, color="r") pylab.text(3 * pi / 2, 1700, "$dd$", ha="center", va="top", size=10, color="m") pylab.plot(np.r_[1.36 * pi, 1.36 * pi], np.r_[900, 2200], "k--") pylab.text(1.36 * pi - 0.05, 1450, "Discharge Angle", rotation=90, size=7, ha="right", va="center") pylab.plot(np.r_[1.72 * pi, 1.72 * pi], np.r_[900, 2200], "k--") pylab.text(1.72 * pi + 0.05, 1000, "Merge", rotation=90, size=7, ha="left", va="center") pylab.text(3 * pi / 4, 2050, "ddd", color="c", ha="center", va="center") pylab.xticks([0, pi / 2, pi, 3 * pi / 2, 2 * pi], ("0", "$\pi$/2", "$\pi$", "3$\pi$/2", "2$\pi$")) pylab.xlim([0, 2 * pi]) pylab.ylim([300, 2200]) pylab.xlabel(r"$\theta $ [radians]") pylab.ylabel(r"Pressure [kPa]") pylab.savefig("ConfigAPressure.pdf") pylab.savefig("ConfigAPressure.eps") pylab.savefig("ConfigAPressure.png", dpi=600) pylab.close() geo = ps.geoVals() ps.plotScrollSet(theta=3 * pi / 2.0, discOn=True, lw=1) pylab.savefig("ConfigAScrollSet.pdf") pylab.savefig("ConfigAScrollSet.eps") pylab.savefig("ConfigAScrollSet.png", dpi=600) pylab.close()