예제 #1
0
    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)
예제 #2
0
        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
예제 #3
0
        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
예제 #4
0
        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
예제 #5
0
        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
예제 #6
0
        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
예제 #7
0
        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
예제 #8
0
        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
예제 #9
0
        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
예제 #10
0
    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")
예제 #11
0
파일: freeSteam.py 프로젝트: bkt92/pychemqt
    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")
예제 #12
0
            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)