示例#1
0
    def calculo(self):
        self.entrada = self.kwargs["entrada"]
        metodo = self.kwargs["metodo"]
        self.Pout = Pressure(self.kwargs["Pout"])
        razon = self.kwargs["razon"]
        self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"])
        if self.kwargs["etapas"]:
            self.etapas = self.kwargs["etapas"]
        else:
            self.etapas = 1.
        self.power = Power(self.kwargs["trabajo"])

        def f(Pout, rendimiento):
            W_ideal = self.__Wideal(Pout)
            power = W_ideal * self.entrada.caudalmasico.gs / rendimiento
            return power

        if metodo in [0, 3] or (metodo == 5 and self.Pout):
            if self.etapas == 1:
                razon = self.Pout.atm / self.entrada.P.atm
            else:
                razon = (self.Pout.atm / self.entrada.P.atm)**(1. /
                                                               self.etapas)
        elif metodo in [1, 4] or (metodo == 5 and razon):
            if self.etapas == 1:
                self.Pout = Pressure(self.entrada.P * razon)
            else:
                self.Pout = Pressure(razon**self.etapas * self.entrada.P)

        if metodo in [0, 1]:
            Wideal = self.__Wideal(self.Pout.atm)
            power = Wideal * self.entrada.caudalmasico.gs / self.rendimientoCalculado
            self.power = Power(power * self.etapas)
        elif metodo == 2:
            funcion = lambda P: f(P, self.rendimientoCalculado) - self.power
            self.Pout = Pressure(fsolve(funcion, self.entrada.P + 1))
            if self.etapas == 1:
                razon = self.Pout / self.entrada.P
            else:
                razon = (self.Pout / self.entrada.P)**(1. / self.etapas)
        elif metodo in [3, 4]:
            funcion = lambda rendimiento: f(self.Pout.atm, rendimiento
                                            ) - self.power
            self.rendimientoCalculado = Dimensionless(fsolve(funcion, 0.5))
        elif metodo == 5:
            Wideal = self.__Wideal(self.Pout.atm)
            caudalmasico = MassFlow(
                self.power * self.rendimientoCalculado / Wideal, "gs")
            self.Tout = self.__Tout(Wideal)
            self.entrada = self.entrada.clone(caudalMasico=caudalmasico)

        Wideal = self.__Wideal(self.Pout.atm)
        self.Tout = Temperature(self.__Tout(Wideal))
        self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)]
        self.razonCalculada = Dimensionless(self.Pout / self.entrada.P)
        self.deltaT = DeltaT(self.salida[0].T - self.entrada.T)
        self.deltaP = DeltaP(self.salida[0].P - self.entrada.P)
        self.cp_cv = self.entrada.Gas.cp_cv
        self.Pin = self.entrada.P
        self.Tin = self.entrada.T
示例#2
0
    def calculo(self):
        self.entrada = self.kwargs["entrada"]
        self.Pout = Pressure(self.kwargs["Pout"])
        self.razon = Dimensionless(self.kwargs["razon"])
        self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"])
        self.power = Power(-abs(self.kwargs["trabajo"]))

        def f(Pout, rendimiento):
            W_ideal = self.__Wideal(Pout)
            power = W_ideal * self.entrada.caudalmasico.gs * rendimiento
            return power

        self.cp_cv = self.entrada.Gas.cp_cv

        if self.kwargs["metodo"] in [0, 3] or \
                (self.kwargs["metodo"] == 5 and self.Pout):
            self.razon = Dimensionless(self.Pout / self.entrada.P)
        elif self.kwargs["metodo"] in [1, 4] or \
                (self.kwargs["metodo"] == 5 and self.razon):
            self.Pout = Pressure(self.entrada.P * self.razon)

        if self.kwargs["metodo"] in [0, 1]:
            Wideal = self.__Wideal(self.Pout)
            G = self.entrada.caudalmasico.gs
            self.power = Power(Wideal * G * self.rendimientoCalculado)
        elif self.kwargs["metodo"] == 2:

            def function(P):
                return f(P, self.rendimientoCalculado) - self.power

            self.Pout = Pressure(fsolve(function, self.entrada.P.atm + 1),
                                 "atm")
            self.razon = Dimensionless(self.Pout / self.entrada.P)
        elif self.kwargs["metodo"] in [3, 4]:

            def function(rendimiento):
                return f(self.Pout.atm, rendimiento) - self.power

            self.rendimientoCalculado = Dimensionless(fsolve(function, 0.5))
        elif self.kwargs["metodo"] == 5:
            Wideal = self.__Wideal(self.Pout)
            G = MassFlow(self.power / self.rendimientoCalculado / Wideal, "gs")
            self.Tout = self.__Tout(Wideal)
            self.entrada = self.entrada.clone(caudalMasico=G)

        Wideal = self.__Wideal(self.Pout)
        self.Tout = Temperature(self.__Tout(Wideal))
        self.razonCalculada = Dimensionless(self.Pout / self.entrada.P)
        self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)]
        self.deltaT = DeltaT(self.salida[0].T - self.entrada.T)
        self.deltaP = DeltaP(self.salida[0].P - self.entrada.P)
        self.Pin = self.entrada.P
        self.Tin = self.entrada.T
示例#3
0
 def readStatefromJSON(self, state):
     """Load instance parameter from saved file"""
     self.Pout = Pressure(state["Pout"])
     self.Tout = Temperature(state["Tout"])
     self.rendimientoCalculado = Dimensionless(state["rendimientoCalculado"])  # noqa
     self.power = Power(state["power"])
     self.razonCalculada = Dimensionless(state["razonCalculada"])
     self.razon = Dimensionless(state["razon"])
     self.deltaT = DeltaT(state["deltaT"])
     self.deltaP = DeltaP(state["deltaP"])
     self.cp_cv = Dimensionless(state["cp_cv"])
     self.Pin = Pressure(state["Pin"])
     self.Tin = Temperature(state["Tin"])
     self.cp_cv = Dimensionless(state["cp_cv"])
     self.statusCoste = state["statusCoste"]
     if self.statusCoste:
         self.C_adq = Currency(state["C_adq"])
         self.C_inst = Currency(state["C_inst"])
     self.salida = [None]