def check(N=5000,param='D',fluid = 'R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D','P',CP.Props(fluid,'ptriple')+1,'Q',1,fluid) except: return [] #CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin,hmax,pmin,pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1*hmin+(1-x1)*hmax x2 = random.random() logp = x2*log(pmin)+(1-x2)*log(pmax) p = exp(logp) try: CP.enable_TTSE_LUT(fluid) value_withTTSE = CP.Props(param,'P',p,'H',h,fluid) CP.disable_TTSE_LUT(fluid) value_noTTSE = CP.Props(param,'P',p,'H',h,fluid) values.append((h,p,value_withTTSE,value_noTTSE)) except ValueError: pass return values
def check(N=5000, param='D', fluid='R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D', 'P', CP.Props(fluid, 'ptriple') + 1, 'Q', 1, fluid) except: return [] # CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin, hmax, pmin, pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1 * hmin + (1 - x1) * hmax x2 = random.random() logp = x2 * log(pmin) + (1 - x2) * log(pmax) p = exp(logp) try: CP.enable_TTSE_LUT(fluid) value_withTTSE = CP.Props(param, 'P', p, 'H', h, fluid) CP.disable_TTSE_LUT(fluid) value_noTTSE = CP.Props(param, 'P', p, 'H', h, fluid) values.append((h, p, value_withTTSE, value_noTTSE)) except ValueError: pass return values
def compareProperty(fluid="", p=0, what=""): global c_diff, c_unit, c_exce if p == 0: p = 0.75 * CP.Props(fluid, "pcrit") Delta_T = 50 T_bub = CP.Props("T", "P", p, "Q", 0, fluid) T_dew = CP.Props("T", "P", p, "Q", 1, fluid) h_bub = CP.Props("H", "P", p, "Q", 0, fluid) h_dew = CP.Props("H", "P", p, "Q", 1, fluid) T_1 = T_bub - Delta_T if T_1 < CP.Props(fluid, "Tmin"): T_1 = CP.Props(fluid, "Tmin") + 0.5 * (T_bub - CP.Props(fluid, "Tmin")) T_2 = T_dew + Delta_T h_1 = CP.Props("H", "P", p, "T", T_1, fluid) h_2 = CP.Props("H", "P", p, "T", T_2, fluid) h_liq = numpy.linspace(h_1, h_bub, num=100) h_vap = numpy.linspace(h_dew, h_2, num=100) T_liq = CP.Props("T", "P", p, "H", h_liq, fluid) - T_bub T_vap = CP.Props("T", "P", p, "H", h_vap, fluid) - T_dew X_liq_STDV = CP.Props(what, "P", p, "H", h_liq, fluid) X_vap_STDV = CP.Props(what, "P", p, "H", h_vap, fluid) CP.enable_TTSE_LUT(fluid) X_liq_TTSE = CP.Props(what, "P", p, "H", h_liq, fluid) X_vap_TTSE = CP.Props(what, "P", p, "H", h_vap, fluid) if numpy.max([X_liq_STDV / X_liq_TTSE, X_vap_STDV / X_vap_TTSE ]) > 1.25 or numpy.min([ X_liq_STDV / X_liq_TTSE, X_vap_STDV / X_vap_TTSE ]) < 0.75: c_diff += 1 print "" print "There were problems with " + what + " for " + fluid print "Relative difference liquid: " + str( numpy.mean((X_liq_STDV - X_liq_TTSE) / X_liq_STDV)) print "Relative difference vapour: " + str( numpy.mean((X_vap_STDV - X_vap_TTSE) / X_vap_STDV)) print "Average factor liquid: " + str( numpy.mean(X_liq_STDV / X_liq_TTSE)) print "Average factor vapour: " + str( numpy.mean(X_vap_STDV / X_vap_TTSE))
def check_Pother(N=5000,param='T',other='S',fluid='R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D','P',CP.Props(fluid,'ptriple')+1,'Q',1,fluid) except: return [] #CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin,hmax,pmin,pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1*hmin+(1-x1)*hmax x2 = random.random() logp = x2*log(pmin)+(1-x2)*log(pmax) p = exp(logp) try: try: #Get the T,rho from the EOS directly without the LUT CP.disable_TTSE_LUT(fluid) s = CP.Props('S','P',p,'H',h,fluid) T = CP.Props('T','P',p,'H',h,fluid) rho = CP.Props('D','P',p,'H',h,fluid) except: print 'EOS failed: ', p,h raise #Now get p,h from the T,rho CP.enable_TTSE_LUT(fluid) if other =='S': other_val = s elif other =='T': other_val = T elif other == 'D': other_val = rho else: raise ValueError val = CP.Props(param,'P',p,other,other_val,fluid) except ValueError: print 'TTSE failed: ', p,other_val values.append((p,other_val,0,0)) pass return values
def compareProperty(fluid="",p=0,what=""): global c_diff, c_unit, c_exce if p==0: p = 0.75*CP.Props(fluid,"pcrit") Delta_T = 50 T_bub = CP.Props("T","P",p,"Q",0,fluid) T_dew = CP.Props("T","P",p,"Q",1,fluid) h_bub = CP.Props("H","P",p,"Q",0,fluid) h_dew = CP.Props("H","P",p,"Q",1,fluid) T_1 = T_bub-Delta_T if T_1 < CP.Props(fluid,"Tmin"): T_1 = CP.Props(fluid,"Tmin")+0.5*(T_bub-CP.Props(fluid,"Tmin")) T_2 = T_dew+Delta_T h_1 = CP.Props("H","P",p,"T",T_1,fluid) h_2 = CP.Props("H","P",p,"T",T_2,fluid) h_liq = numpy.linspace(h_1,h_bub,num=100) h_vap = numpy.linspace(h_dew,h_2,num=100) T_liq = CP.Props("T","P",p,"H",h_liq,fluid)-T_bub T_vap = CP.Props("T","P",p,"H",h_vap,fluid)-T_dew X_liq_STDV = CP.Props(what,"P",p,"H",h_liq,fluid) X_vap_STDV = CP.Props(what,"P",p,"H",h_vap,fluid) CP.enable_TTSE_LUT(fluid) X_liq_TTSE = CP.Props(what,"P",p,"H",h_liq,fluid) X_vap_TTSE = CP.Props(what,"P",p,"H",h_vap,fluid) if numpy.max([X_liq_STDV/X_liq_TTSE,X_vap_STDV/X_vap_TTSE])>1.25 or numpy.min([X_liq_STDV/X_liq_TTSE,X_vap_STDV/X_vap_TTSE])<0.75: c_diff += 1 print("") print("There were problems with "+what+" for "+fluid) print("Relative difference liquid: "+str(numpy.mean((X_liq_STDV-X_liq_TTSE)/X_liq_STDV))) print("Relative difference vapour: "+str(numpy.mean((X_vap_STDV-X_vap_TTSE)/X_vap_STDV))) print("Average factor liquid: "+str(numpy.mean(X_liq_STDV/X_liq_TTSE))) print("Average factor vapour: "+str(numpy.mean(X_vap_STDV/X_vap_TTSE)))
def check_Pother(N=5000, param='T', other='S', fluid='R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D', 'P', CP.Props(fluid, 'ptriple') + 1, 'Q', 1, fluid) except: return [] # CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin, hmax, pmin, pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1 * hmin + (1 - x1) * hmax x2 = random.random() logp = x2 * log(pmin) + (1 - x2) * log(pmax) p = exp(logp) try: try: # Get the T,rho from the EOS directly without the LUT CP.disable_TTSE_LUT(fluid) s = CP.Props('S', 'P', p, 'H', h, fluid) T = CP.Props('T', 'P', p, 'H', h, fluid) rho = CP.Props('D', 'P', p, 'H', h, fluid) except: print('EOS failed: %s %s' % (p, h)) raise # Now get p,h from the T,rho CP.enable_TTSE_LUT(fluid) if other == 'S': other_val = s elif other == 'T': other_val = T elif other == 'D': other_val = rho else: raise ValueError val = CP.Props(param, 'P', p, other, other_val, fluid) except ValueError: print('TTSE failed: %s %s' % (p, other_val)) values.append((p, other_val, 0, 0)) pass return values
def check_Trho(N=5000,param='P',fluid='R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D','P',CP.Props(fluid,'ptriple')+1,'Q',1,fluid) except: return [] #CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin,hmax,pmin,pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1*hmin+(1-x1)*hmax x2 = random.random() logp = x2*log(pmin)+(1-x2)*log(pmax) p = exp(logp) try: try: #Get the T,rho from the EOS directly without the LUT CP.disable_TTSE_LUT(fluid) s = CP.Props('S','P',p,'H',h,fluid) T = CP.Props('T','P',p,'H',h,fluid) rho = CP.Props('D','P',p,'H',h,fluid) except: print 'EOS failed: ', p,h raise #Now get p,h from the T,rho CP.enable_TTSE_LUT(fluid) val = CP.Props(param,'T',T,'D',rho,fluid) CP.disable_TTSE_LUT(fluid) valREFPROP = CP.Props(param,'T',T,'D',rho,fluid) #print T,rho,val,valREFPROP,(val/valREFPROP-1)*100 if abs(val-valREFPROP)>0.00001: raise ValueError except ValueError: print 'TTSE failed: ', T,rho values.append((T,rho,0,0)) pass return values
def check_Trho(N=5000, param='P', fluid='R245fa'): values = [] CP.enable_TTSE_LUT(fluid) try: CP.Props('D', 'P', CP.Props(fluid, 'ptriple') + 1, 'Q', 1, fluid) except: return [] # CP.set_TTSESinglePhase_LUT_size(fluid,500,500) hmin, hmax, pmin, pmax = CP.get_TTSESinglePhase_LUT_range(fluid) for i in range(N): x1 = random.random() h = x1 * hmin + (1 - x1) * hmax x2 = random.random() logp = x2 * log(pmin) + (1 - x2) * log(pmax) p = exp(logp) try: try: # Get the T,rho from the EOS directly without the LUT CP.disable_TTSE_LUT(fluid) s = CP.Props('S', 'P', p, 'H', h, fluid) T = CP.Props('T', 'P', p, 'H', h, fluid) rho = CP.Props('D', 'P', p, 'H', h, fluid) except: print('EOS failed: %s %s' % (p, h)) raise # Now get p,h from the T,rho CP.enable_TTSE_LUT(fluid) val = CP.Props(param, 'T', T, 'D', rho, fluid) CP.disable_TTSE_LUT(fluid) valREFPROP = CP.Props(param, 'T', T, 'D', rho, fluid) # print T,rho,val,valREFPROP,(val/valREFPROP-1)*100 if abs(val - valREFPROP) > 0.00001: raise ValueError except ValueError: print('TTSE failed: %s %s' % (T, rho)) values.append((T, rho, 0, 0)) pass return values
def getErrors(p, h, out="D", Ref=""): "Get the relative errors from table-based interpolation" errorTTSE = 1e3 errorBICUBIC = 1e3 try: # Using the EOS CP.disable_TTSE_LUT(Ref) EOS = CP.PropsSI(out, "P", p, "H", h, Ref) # Using the TTSE method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "TTSE") TTSE = CP.PropsSI(out, "P", p, "H", h, Ref) # Using the Bicubic method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "BICUBIC") BICUBIC = CP.PropsSI(out, "P", p, "H", h, Ref) errorTTSE = abs(TTSE / EOS - 1.0) * 100.0 errorBICUBIC = abs(BICUBIC / EOS - 1.0) * 100.0 except ValueError as VE: print VE pass return errorTTSE, errorBICUBIC
def getErrors(p, h, out='D', Ref=''): "Get the relative errors from table-based interpolation" errorTTSE = 1e3 errorBICUBIC = 1e3 try: # Using the EOS CP.disable_TTSE_LUT(Ref) EOS = CP.PropsSI(out, 'P', p, 'H', h, Ref) # Using the TTSE method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "TTSE") TTSE = CP.PropsSI(out, 'P', p, 'H', h, Ref) # Using the Bicubic method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "BICUBIC") BICUBIC = CP.PropsSI(out, 'P', p, 'H', h, Ref) errorTTSE = abs(TTSE / EOS - 1.0) * 100.0 errorBICUBIC = abs(BICUBIC / EOS - 1.0) * 100.0 except ValueError as VE: print VE pass return errorTTSE, errorBICUBIC
print('TWO PHASE INPUTS (Temperature)') print('Density of saturated liquid Propane at 300 K:', CP.Props('D', 'T', 300, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 300 K:', CP.Props('D', 'T', 300, 'Q', 1, 'R290'), 'kg/m^3') p = CP.Props('P', 'T', 300, 'D', 1, 'Propane') h = CP.Props('H', 'T', 300, 'D', 1, 'Propane') T = CP.Props('T', 'P', p, 'H', h, 'Propane') D = CP.Props('D', 'P', p, 'H', h, 'Propane') print('SINGLE PHASE CYCLE (propane)') print('T,D -> P,H', 300, ',', 1, '-->', p, ',', h) print('P,H -> T,D', p, ',', h, '-->', T, ',', D) CP.enable_TTSE_LUT('Propane') print(' ') print('************ USING TTSE ***************') print(' ') print('TWO PHASE INPUTS (Pressure)') print('Density of saturated liquid Propane at 101.325 kPa:', CP.Props('D', 'P', 101.325, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 101.325 kPa:', CP.Props('D', 'P', 101.325, 'Q', 1, 'R290'), 'kg/m^3') print('TWO PHASE INPUTS (Temperature)') print('Density of saturated liquid Propane at 300 K:', CP.Props('D', 'T', 300, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 300 K:', CP.Props('D', 'T', 300, 'Q', 1, 'R290'), 'kg/m^3') p = CP.Props('P', 'T', 300, 'D', 1, 'Propane')
Ncols = 10 Nrows = 10 for parameter in ['D', 'T', 'S', 'C']: fig = plt.figure(figsize=(40, 40)) for Index, fluid in enumerate(sorted(CoolProp.__fluids__)): print(fluid) ax = fig.add_subplot(Ncols, Nrows, Index + 1) ax.set_title(fluid) values = check(fluid=fluid, param=parameter) if len(values) == 0: continue h, p, values_withTTSE, values_noTTSE = zip(*values) ax = fig.add_subplot(Ncols, Nrows, Index + 1) CP.disable_TTSE_LUT(fluid) Ph(fluid) CP.enable_TTSE_LUT(fluid) error = (np.array(values_withTTSE) / np.array(values_noTTSE) - 1) * 100 plt.scatter(h, p, s=8, c=np.abs(error), norm=LogNorm(), edgecolor='none', vmin=1e-16, vmax=10) plt.gca().set_yscale('log') plt.colorbar() plt.savefig(parameter + '_TTSE.png', dpi=200) plt.tight_layout() plt.close()
import CoolProp.CoolProp as CP fluid = 'Propane' print(CP.enable_TTSE_LUT(fluid)) print(CP.isenabled_TTSE_LUT(fluid)) print(CP.Props('H', 'P', 300, 'Q', 0, fluid)) print(CP.Props('H', 'P', 310, 'Q', 0, fluid)) print(CP.Props('H', 'P', 315, 'Q', 0, fluid)) # fluid = 'TestSolution-0.3' print(CP.enable_TTSE_LUT(fluid)) print(CP.isenabled_TTSE_LUT(fluid)) print(CP.Props('H', 'P', 3000, 'T', 280, fluid))
p_max * 1.05) for a_useless_counter in range(40000): h = random.uniform(h_min, h_max) p = 10**random.uniform(np.log10(p_min), np.log10(p_max)) try: # Using the EOS CP.disable_TTSE_LUT(Ref) rhoEOS = CP.PropsSI('D', 'P', p, 'H', h, Ref) TEOS = CP.PropsSI('T', 'P', p, 'H', h, Ref) if out == 'C': cpEOS = CP.PropsSI('C', 'P', p, 'H', h, Ref) # Using the TTSE method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "TTSE") rhoTTSE = CP.PropsSI('D', 'P', p, 'H', h, Ref) TTTSE = CP.PropsSI('T', 'P', p, 'H', h, Ref) if out == 'C': cpTTSE = CP.PropsSI('C', 'P', p, 'H', h, Ref) # Using the Bicubic method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "BICUBIC") rhoBICUBIC = CP.PropsSI('D', 'P', p, 'H', h, Ref) TBICUBIC = CP.PropsSI('T', 'P', p, 'H', h, Ref) if out == 'C': cpBICUBIC = CP.PropsSI('C', 'P', p, 'H', h, Ref) if out == 'D': errorTTSE = abs(rhoTTSE / rhoEOS - 1) * 100 errorBICUBIC = abs(rhoBICUBIC / rhoEOS - 1) * 100
import CoolProp.CoolProp as CP fluid = 'Propane' print CP.enable_TTSE_LUT(fluid) print CP.isenabled_TTSE_LUT(fluid) print CP.Props('H', 'P', 300, 'Q', 0, fluid) print CP.Props('H', 'P', 310, 'Q', 0, fluid) print CP.Props('H', 'P', 315, 'Q', 0, fluid) # fluid = 'TestSolution-0.3' print CP.enable_TTSE_LUT(fluid) print CP.isenabled_TTSE_LUT(fluid) print CP.Props('H', 'P', 3000, 'T', 280, fluid)
print('TWO PHASE INPUTS (Temperature)') print('Density of saturated liquid Propane at 300 K:', CP.Props('D', 'T', 300, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 300 K:', CP.Props('D', 'T', 300, 'Q', 1, 'R290'), 'kg/m^3') p = CP.Props('P', 'T', 300, 'D', 1, 'Propane') h = CP.Props('H', 'T', 300, 'D', 1, 'Propane') T = CP.Props('T', 'P', p, 'H', h, 'Propane') D = CP.Props('D', 'P', p, 'H', h, 'Propane') print('SINGLE PHASE CYCLE (propane)') print('T,D -> P,H', 300, ',', 1, '-->', p, ',', h) print('P,H -> T,D', p, ',', h, '-->', T, ',', D) CP.enable_TTSE_LUT('Propane') print(' ') print('************ USING TTSE ***************') print(' ') print('TWO PHASE INPUTS (Pressure)') print('Density of saturated liquid Propane at 101.325 kPa:', CP.Props('D', 'P', 101.325, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 101.325 kPa:', CP.Props('D', 'P', 101.325, 'Q', 1, 'R290'), 'kg/m^3') print('TWO PHASE INPUTS (Temperature)') print('Density of saturated liquid Propane at 300 K:', CP.Props('D', 'T', 300, 'Q', 0, 'Propane'), 'kg/m^3') print('Density of saturated vapor R290 at 300 K:', CP.Props('D', 'T', 300, 'Q', 1, 'R290'), 'kg/m^3') p = CP.Props('P', 'T', 300, 'D', 1, 'Propane')
import CoolProp.CoolProp as CP fluid = 'Propane' print CP.enable_TTSE_LUT(fluid) print CP.isenabled_TTSE_LUT(fluid) print CP.Props('H','P',300,'Q',0,fluid) print CP.Props('H','P',310,'Q',0,fluid) print CP.Props('H','P',315,'Q',0,fluid) # fluid = 'TestSolution-0.3' print CP.enable_TTSE_LUT(fluid) print CP.isenabled_TTSE_LUT(fluid) print CP.Props('H','P',3000,'T',280,fluid)
print("Density of saturated liquid Propane at 101.325 kPa:", CP.Props("D", "P", 101.325, "Q", 0, "Propane"), "kg/m^3") print("Density of saturated vapor R290 at 101.325 kPa:", CP.Props("D", "P", 101.325, "Q", 1, "R290"), "kg/m^3") print("TWO PHASE INPUTS (Temperature)") print("Density of saturated liquid Propane at 300 K:", CP.Props("D", "T", 300, "Q", 0, "Propane"), "kg/m^3") print("Density of saturated vapor R290 at 300 K:", CP.Props("D", "T", 300, "Q", 1, "R290"), "kg/m^3") p = CP.Props("P", "T", 300, "D", 1, "Propane") h = CP.Props("H", "T", 300, "D", 1, "Propane") T = CP.Props("T", "P", p, "H", h, "Propane") D = CP.Props("D", "P", p, "H", h, "Propane") print("SINGLE PHASE CYCLE (propane)") print("T,D -> P,H", 300, ",", 1, "-->", p, ",", h) print("P,H -> T,D", p, ",", h, "-->", T, ",", D) CP.enable_TTSE_LUT("Propane") print(" ") print("************ USING TTSE ***************") print(" ") print("TWO PHASE INPUTS (Pressure)") print("Density of saturated liquid Propane at 101.325 kPa:", CP.Props("D", "P", 101.325, "Q", 0, "Propane"), "kg/m^3") print("Density of saturated vapor R290 at 101.325 kPa:", CP.Props("D", "P", 101.325, "Q", 1, "R290"), "kg/m^3") print("TWO PHASE INPUTS (Temperature)") print("Density of saturated liquid Propane at 300 K:", CP.Props("D", "T", 300, "Q", 0, "Propane"), "kg/m^3") print("Density of saturated vapor R290 at 300 K:", CP.Props("D", "T", 300, "Q", 1, "R290"), "kg/m^3") p = CP.Props("P", "T", 300, "D", 1, "Propane") h = CP.Props("H", "T", 300, "D", 1, "Propane") T = CP.Props("T", "P", p, "H", h, "Propane") D = CP.Props("D", "P", p, "H", h, "Propane") print("SINGLE PHASE CYCLE (propane)")
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=plt.get_cmap("jet")) for a_useless_counter in range(40000): h = random.uniform(100, 590) p = 10 ** random.uniform(np.log10(100), np.log10(7000)) try: # Using the EOS CP.disable_TTSE_LUT(Ref) rhoEOS = CP.Props("D", "P", p, "H", h, Ref) TEOS = CP.Props("T", "P", p, "H", h, Ref) ## cpEOS = CP.Props('C','P',p,'H',h,Ref) # Using the TTSE method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "TTSE") rhoTTSE = CP.Props("D", "P", p, "H", h, Ref) TTTSE = CP.Props("T", "P", p, "H", h, Ref) ## cpTTSE = CP.Props('C','P',p,'H',h,Ref) # Using the Bicubic method CP.enable_TTSE_LUT(Ref) CP.set_TTSE_mode(Ref, "BICUBIC") rhoBICUBIC = CP.Props("D", "P", p, "H", h, Ref) TBICUBIC = CP.Props("T", "P", p, "H", h, Ref) ## cpBICUBIC = CP.Props('C','P',p,'H',h,Ref) ## errorTTSE = abs(TTTSE/TEOS-1)*100 ## errorBICUBIC = abs(TBICUBIC/TEOS-1)*100 errorTTSE = abs(rhoTTSE / rhoEOS - 1) * 100
return fig, ax, Z def getlim(key,dicts,fac=1): min = np.min([ dict[key]/fac for dict in dicts ]) max = np.max([ dict[key]/fac for dict in dicts ]) return [np.floor(min)*fac, np.ceil(max)*fac] ######################################################################### # Here starts the real script ######################################################################### fluid = 'water' CP.enable_TTSE_LUT(fluid) PRINT = False if PRINT: points = 200 dpi = 300 toFile = True else: points = 100 dpi = 75 toFile = False Tmin = CP.PropsSI('Tmin' ,'T',0,'P',0,fluid) + 5.0 Tcri = CP.PropsSI('Tcrit','T',0,'P',0,fluid)
def Compressor(Te = 273, Tc = 300, f = None,TTSE = False, OneCycle = False): if TTSE: CP.set_TTSESinglePhase_LUT_size("Propane", 500, 500) CP.enable_TTSE_LUT('Propane') global Injection ScrollComp=Scroll() #This runs if the module code is run directly ScrollComp.set_scroll_geo(83e-6, 3.3, 0.005, 0.006) #Set the scroll wrap geometry ScrollComp.set_disc_geo('2Arc',r2 = 0) ScrollComp.geo.delta_flank = 10e-6 ScrollComp.geo.delta_radial = 10e-6 ScrollComp.geo.delta_suction_offset = 0.0e-3 ScrollComp.geo.phi_ie_offset = 0.0 ScrollComp.omega = 3000/60*2*pi ScrollComp.Tamb = 298.0 #Temporarily set the bearing dimensions ScrollComp.mech = struct() ScrollComp.mech.D_upper_bearing = 0.04 ScrollComp.mech.L_upper_bearing = 0.04 ScrollComp.mech.c_upper_bearing = 20e-6 ScrollComp.mech.D_crank_bearing = 0.04 ScrollComp.mech.L_crank_bearing = 0.04 ScrollComp.mech.c_crank_bearing = 20e-6 ScrollComp.mech.D_lower_bearing = 0.025 ScrollComp.mech.L_lower_bearing = 0.025 ScrollComp.mech.c_lower_bearing = 20e-6 ScrollComp.mech.thrust_ID = 0.05 ScrollComp.mech.thrust_friction_coefficient = 0.028 #From Chen thesis ScrollComp.mech.orbiting_scroll_mass = 2.5 ScrollComp.mech.L_ratio_bearings = 3 ScrollComp.mech.mu_oil = 0.008 ScrollComp.h_shell = 0.02 ScrollComp.A_shell = 0.05 ScrollComp.HTC = 1.0 ScrollComp.motor = Motor() ScrollComp.motor.set_eta(0.9) ScrollComp.motor.suction_fraction = 1.0 Ref = 'Propane' #Ref = 'REFPROP-MIX:R410A.mix' Te = -20 + 273.15 Tc = 20 + 273.15 Tin = Te + 11.1 DT_sc = 7 pe = CP.PropsSI('P','T',Te,'Q',1.0,Ref)/1000.0 pc = CP.PropsSI('P','T',Tc,'Q',1.0,Ref)/1000.0 inletState = State.State(Ref,{'T':Tin,'P':pe}) T2s = ScrollComp.guess_outlet_temp(inletState,pc) outletState = State.State(Ref,{'T':T2s,'P':pc}) mdot_guess = inletState.rho*ScrollComp.Vdisp*ScrollComp.omega/(2*pi) ScrollComp.add_tube(Tube(key1='inlet.1', key2='inlet.2', L=0.3, ID=0.02, mdot=mdot_guess, State1=inletState.copy(), fixed=1, TubeFcn=ScrollComp.TubeCode)) ScrollComp.add_tube(Tube(key1='outlet.1', key2='outlet.2', L=0.3, ID=0.02, mdot=mdot_guess, State2=outletState.copy(), fixed=2, TubeFcn=ScrollComp.TubeCode)) ScrollComp.auto_add_CVs(inletState, outletState) ScrollComp.auto_add_leakage(flankFunc = ScrollComp.FlankLeakage, radialFunc = ScrollComp.RadialLeakage) FP = FlowPath(key1='inlet.2', key2='sa', MdotFcn=IsentropicNozzleWrapper(), ) FP.A = pi*0.01**2/4 ScrollComp.add_flow(FP) ScrollComp.add_flow(FlowPath(key1='sa', key2='s1', MdotFcn=ScrollComp.SA_S1, MdotFcn_kwargs = dict(X_d = 0.7) ) ) ScrollComp.add_flow(FlowPath(key1 = 'sa', key2 = 's2', MdotFcn = ScrollComp.SA_S2, MdotFcn_kwargs = dict(X_d = 0.7) ) ) ScrollComp.add_flow(FlowPath(key1 = 'outlet.1', key2 = 'dd', MdotFcn = ScrollComp.DISC_DD, MdotFcn_kwargs = dict(X_d = 0.7) ) ) ScrollComp.add_flow(FlowPath(key1 = 'outlet.1', key2 = 'ddd', MdotFcn = ScrollComp.DISC_DD, MdotFcn_kwargs = dict(X_d = 0.7) ) ) # ScrollComp.add_flow(FlowPath(key1 = 'outlet.1', # key2 = 'd1', # MdotFcn = ScrollComp.DISC_D1, # MdotFcn_kwargs = dict(X_d = 0.7) # ) # ) # # FP = FlowPath(key1='outlet.1', # key2='dd', # MdotFcn=IsentropicNozzleWrapper(), # ) # FP.A = pi*0.006**2/4 # ScrollComp.add_flow(FP) # # FP = FlowPath(key1='outlet.1', # key2='ddd', # MdotFcn=IsentropicNozzleWrapper(), # ) # FP.A = pi*0.006**2/4 # ScrollComp.add_flow(FP) ScrollComp.add_flow(FlowPath(key1='d1', key2='dd', MdotFcn=ScrollComp.D_to_DD)) ScrollComp.add_flow(FlowPath(key1='d2', key2='dd', MdotFcn=ScrollComp.D_to_DD)) #Connect the callbacks for the step, endcycle, heat transfer and lump energy balance ScrollComp.connect_callbacks(step_callback = ScrollComp.step_callback, endcycle_callback = ScrollComp.endcycle_callback, heat_transfer_callback = ScrollComp.heat_transfer_callback, lumps_energy_balance_callback = ScrollComp.lump_energy_balance_callback ) from time import clock t1=clock() ScrollComp.RK45_eps = 1e-6 ScrollComp.eps_cycle = 3e-3 try: ScrollComp.precond_solve(key_inlet='inlet.1', key_outlet='outlet.2', solver_method='RK45', OneCycle = OneCycle, plot_every_cycle= False, #hmin = 1e-3 eps_cycle = 3e-3 ) except BaseException as E: print(E) raise print 'time taken',clock()-t1 del ScrollComp.FlowStorage from PDSim.misc.hdf5 import HDF5Writer h5 = HDF5Writer() import CoolProp h5.write_to_file(ScrollComp, 'CPgit_'+CoolProp.__gitrevision__+'.h5') return ScrollComp
import CoolProp.CoolProp as CP fluid = 'Propane' print(CP.enable_TTSE_LUT(fluid)) print(CP.isenabled_TTSE_LUT(fluid)) print(CP.Props('H','P',300,'Q',0,fluid)) print(CP.Props('H','P',310,'Q',0,fluid)) print(CP.Props('H','P',315,'Q',0,fluid)) # fluid = 'TestSolution-0.3' print(CP.enable_TTSE_LUT(fluid)) print(CP.isenabled_TTSE_LUT(fluid)) print(CP.Props('H','P',3000,'T',280,fluid))