def calculo(self): func = [freesteam.steam_pT, freesteam.steam_ph, freesteam.steam_ps, freesteam.steam_pv, freesteam.steam_Ts, freesteam.steam_Tx][self._thermo] fluido = func(self.var1, self.var2) self.M = unidades.Dimensionless(mEoS.H2O.M) self.Pc = unidades.Pressure(freesteam.PCRIT) self.Tc = unidades.Temperature(freesteam.TCRIT) self.rhoc = unidades.Density(freesteam.RHOCRIT*self.M) self.Tt = mEoS.H2O.Tt self.Tb = mEoS.H2O.Tb self.f_accent = unidades.Dimensionless(mEoS.H2O.f_acent) self.momentoDipolar = mEoS.H2O.momentoDipolar self.phase = self.getphase(fluido) self.x = unidades.Dimensionless(fluido.x) self.name = mEoS.H2O.name self.synonim = mEoS.H2O.synonym self.CAS = mEoS.H2O.CASNumber self.T = unidades.Temperature(fluido.T) self.P = unidades.Pressure(fluido.p) self.rho = unidades.Density(fluido.rho) self.v = unidades.SpecificVolume(1./self.rho) self.Liquido = Fluid() self.Gas = Fluid() if self.x < 1: # Liquid phase liquido = freesteam.steam_Tx(fluido.T, 0.) self.fill(self.Liquido, liquido) self.Liquido.epsilon = unidades.Tension(iapws._Tension(self.T)) if self.x > 0: vapor = freesteam.steam_Tx(fluido.T, 1.) self.fill(self.Gas, vapor) if self.x in (0, 1): self.fill(self, fluido) else: self.h = unidades.Enthalpy(self.x*self.Vapor.h+(1-self.x)*self.Liquido.h) self.s = unidades.SpecificHeat(self.x*self.Vapor.s+(1-self.x)*self.Liquido.s) self.u = unidades.SpecificHeat(self.x*self.Vapor.u+(1-self.x)*self.Liquido.u) self.a = unidades.Enthalpy(self.x*self.Vapor.a+(1-self.x)*self.Liquido.a) self.g = unidades.Enthalpy(self.x*self.Vapor.g+(1-self.x)*self.Liquido.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None)
def _Tx_k(T,x): """ given Temperature and quality, return Thermal conductivity """ fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = T + 273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).k if self.units.type == "US": val = val * 0.58 # to Btu/(hr·ft⋅F) return val
def _Tx_cp(T,x): """ given Temperature and quality, return Isobaric heat capacity""" fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = fs_T+273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).cp if self.units.type=="altSI": val=val/1000 elif self.units.type == "US": val = val / 4186.8 return val
def _Tx_rho(T,x): """ given Temperature and quality, return density """ fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = fs_T+273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).rho if self.units.type == "US": val = val * 0.06242796 return val
def _Tx_u(T,x): """ given Temperature and quality, return specific energy """ fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = fs_T+273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).u if self.units.type=="altSI": val=val/1000 elif self.units.type=="US": val = val * 0.000429922614 return val
def _px_rho(p,x=0): """ given pressure and quality, return density """ fs_p=np.float(p) fs_x=np.float(x) if self.units.type == "altSI": fs_p = fs_p*1E5 elif self.units.type == "US": fs_p=fs_p/14.5037738007*1e5 fs_val = freesteam.Tsat_p(fs_p) val=freesteam.steam_Tx(fs_val,fs_x).rho if self.units.type == "US": val = val * 0.06242796 return val
def _Tx_mu(T,x): """ given Temperature and quality, return Dynamic viscosity """ fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = fs_T+273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).mu if self.units.type=="altSI": val=val/1E5 elif self.units.type == "US": val = val * 0.0209 # to (lbf-s) / ft2 return val
def _px_u(p,x=0): """ given pressure and enthalpy, return specific energy """ fs_p=np.float(p) fs_x=np.float(x) if self.units.type == "altSI": fs_p = fs_p*1E5 elif self.units.type == "US": fs_p=fs_p/14.5037738007*1e5 fs_val = freesteam.Tsat_p(fs_p) val=freesteam.steam_Tx(fs_val,fs_x).u if self.units.type=="altSI": val=val/1000. elif self.units.type=="US": val = val * 0.000429922614 return val
def _Tx_p(T,x): """ given Temperature, return saturation pressure seems like a duplicate to _psat_T !!! """ fs_T=np.float(T) fs_x=np.float(x) if self.units.type == "altSI": fs_T = fs_T+273.15 elif self.units.type == "US": fs_T = ((fs_T-32.)/1.8) + 273.15 val=freesteam.steam_Tx(fs_T,fs_x).p if self.units.type=="altSI": val=val/1E5 elif self.units.type == "US": val=val / 1e5 * 14.5037738007 return val
def calculo(self): method = [ freesteam.steam_pT, freesteam.steam_ph, freesteam.steam_ps, freesteam.steam_pv, freesteam.steam_Ts, freesteam.steam_Tx ] func = method[self._thermo] fluido = func(self.var1, self.var2) self.x = unidades.Dimensionless(fluido.x) self.name = mEoS.H2O.name self.region = fluido.region self.synonim = mEoS.H2O.synonym self.CAS = mEoS.H2O.CASNumber self.T = unidades.Temperature(fluido.T) self.P = unidades.Pressure(fluido.p) self.phase = self.getphase(Tc=self.Tc, Pc=self.Pc, T=self.T, P=self.P, x=self.x, region=self.region) self.Tr = unidades.Dimensionless(self.T / self.Tc) self.Pr = unidades.Dimensionless(self.P / self.Pc) self.rho = unidades.Density(fluido.rho) self.v = unidades.SpecificVolume(1. / self.rho) cp0 = prop0(self.T, self.P.MPa) cp0["h"] *= 1000 cp0["s"] *= 1000 cp0["cp"] *= 1000 cp0["cv"] *= 1000 self._cp0(cp0) self.Liquido = ThermoWater() self.Gas = ThermoWater() if self.x == 0: # only liquid phase self.fill(self, fluido) self.fill(self.Liquido, fluido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) elif self.x == 1: # only vapor phase self.fill(self, fluido) self.fill(self.Gas, fluido) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) else: # two phases liquido = freesteam.steam_Tx(fluido.T, 0.) self.fill(self.Liquido, liquido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) vapor = freesteam.steam_Tx(fluido.T, 1.) self.fill(self.Gas, vapor) self.h = unidades.Enthalpy(self.x * self.Gas.h + (1 - self.x) * self.Liquido.h) self.s = unidades.SpecificHeat(self.x * self.Gas.s + (1 - self.x) * self.Liquido.s) self.u = unidades.SpecificHeat(self.x * self.Gas.u + (1 - self.x) * self.Liquido.u) self.a = unidades.Enthalpy(self.x * self.Gas.a + (1 - self.x) * self.Liquido.a) self.g = unidades.Enthalpy(self.x * self.Gas.g + (1 - self.x) * self.Liquido.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None) self.Hvap = unidades.Enthalpy(vapor["h"] - liquido["h"], "kJkg") self.Svap = unidades.SpecificHeat(vapor["s"] - liquido["s"], "kJkgK")
def calculo(self): method = [freesteam.steam_pT, freesteam.steam_ph, freesteam.steam_ps, freesteam.steam_pv, freesteam.steam_Ts, freesteam.steam_Tx] func = method[self._thermo] fluido = func(self.var1, self.var2) self.x = unidades.Dimensionless(fluido.x) self.name = mEoS.H2O.name self.region = fluido.region self.synonim = mEoS.H2O.synonym self.CAS = mEoS.H2O.CASNumber self.T = unidades.Temperature(fluido.T) self.P = unidades.Pressure(fluido.p) self.phase = self.getphase(Tc=self.Tc, Pc=self.Pc, T=self.T, P=self.P, x=self.x, region=self.region) self.Tr = unidades.Dimensionless(self.T/self.Tc) self.Pr = unidades.Dimensionless(self.P/self.Pc) self.rho = unidades.Density(fluido.rho) self.v = unidades.SpecificVolume(1./self.rho) cp0 = prop0(self.T, self.P.MPa) cp0["h"] *= 1000 cp0["s"] *= 1000 cp0["cp"] *= 1000 cp0["cv"] *= 1000 self._cp0(cp0) self.Liquido = ThermoWater() self.Gas = ThermoWater() if self.x == 0: # only liquid phase self.fill(self, fluido) self.fill(self.Liquido, fluido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) elif self.x == 1: # only vapor phase self.fill(self, fluido) self.fill(self.Gas, fluido) self.Hvap = unidades.Enthalpy(None) self.Svap = unidades.SpecificHeat(None) else: # two phases liquido = freesteam.steam_Tx(fluido.T, 0.) self.fill(self.Liquido, liquido) self.sigma = unidades.Tension(freesteam.surftens_T(self.T)) vapor = freesteam.steam_Tx(fluido.T, 1.) self.fill(self.Gas, vapor) self.h = unidades.Enthalpy( self.x*self.Gas.h+(1-self.x)*self.Liquido.h) self.s = unidades.SpecificHeat( self.x*self.Gas.s+(1-self.x)*self.Liquido.s) self.u = unidades.SpecificHeat( self.x*self.Gas.u+(1-self.x)*self.Liquido.u) self.a = unidades.Enthalpy( self.x*self.Gas.a+(1-self.x)*self.Liquido.a) self.g = unidades.Enthalpy( self.x*self.Gas.g+(1-self.x)*self.Liquido.g) self.cv = unidades.SpecificHeat(None) self.cp = unidades.SpecificHeat(None) self.cp_cv = unidades.Dimensionless(None) self.w = unidades.Speed(None) self.Hvap = unidades.Enthalpy(vapor["h"]-liquido["h"], "kJkg") self.Svap = unidades.SpecificHeat(vapor["s"]-liquido["s"], "kJkgK")
if fld.T > self.Tc: return QApplication.translate("pychemqt", "Supercritical fluid") else: return QApplication.translate("pychemqt", "Compressible liquid") # check if fld above critical pressure elif fld.T > self.Tc: return QApplication.translate("pychemqt", "Gas") # check quality if fld.x >= 1.: if self.kwargs["x"] == 1.: return QApplication.translate("pychemqt", "Saturated vapor") else: return QApplication.translate("pychemqt", "Vapor") elif 0 < fld.x < 1: return QApplication.translate("pychemqt", "Two phases") elif fld.x <= 0.: if self.kwargs["x"] == 0.: return QApplication.translate("pychemqt", "Saturated liquid") else: return QApplication.translate("pychemqt", "Liquid") if __name__ == '__main__': # fluido=Freesteam(T=373.15, x=1) # print fluido.h.kJkg, fluido.P vapor = freesteam.steam_Tx(370, 1) for key, value in vapor.__dict__.iteritems(): print key, value print dir(vapor) print ord(vapor.region)