Ejemplo n.º 1
0
    def calculo(self):
        Gas = self.kwargs["entradaGas"]
        Liquido = self.kwargs["entradaLiquido"]
        sigma = Liquido.sigma
        rhoL = Liquido.Liquido.rho
        muL = Liquido.Liquido.mu

        self.Dt = Length(self.kwargs["diametro"])
        self.Lt = Length(self.kwargs["Lt"])

        if self.kwargs["k"]:
            self.k = Dimensionless(self.kwargs["k"])
        else:
            self.k = Dimensionless(1000.)
        if self.kwargs["f"]:
            self.f = Dimensionless(self.kwargs["f"])
        else:
            self.f = Dimensionless(0.5)

        self.At = Area(pi/4*self.Dt**2)
        self.Vg = Speed(Gas.Q/self.At)
        self.R = Liquido.Q/Gas.Q
        self.dd = Length(58600/self.Vg*(sigma/rhoL)**0.5+597*(
            muL/sigma**0.5/rhoL**0.5)**0.45*(1000*self.R)**1.5)

        self.rendimiento_parcial = self._Efficiency()
        self.rendimiento = self._GlobalEfficiency(self.rendimiento_parcial)

        if self.statusDeltaP:
            self.deltaP = self._deltaP()
        else:
            self.deltaP = DeltaP(0)

        self.CalcularSalidas(Gas)
        self.Pin = min(Gas.P, Liquido.P)
Ejemplo n.º 2
0
 def cambiarCurvaVista(self, ind):
     self.curva = self.curvas[ind]
     self.diametro.setValue(self.curva[0])
     self.rpm.setValue(self.curva[1])
     q = [
         VolFlow(i).__getattribute__(
             VolFlow.__units__[self.unidadesCaudal.currentIndex()])
         for i in self.curva[2]
     ]
     h = [
         Length(i).__getattribute__(
             Length.__units__[self.unidadesCarga.currentIndex()])
         for i in self.curva[3]
     ]
     P = [
         Power(i).__getattribute__(
             Power.__units__[self.unidadesPotencia.currentIndex()])
         for i in self.curva[4]
     ]
     n = [
         Length(i).__getattribute__(
             Length.__units__[self.unidadesNPSH.currentIndex()])
         for i in self.curva[5]
     ]
     self.Tabla.setMatrix(transpose([q, h, P, n]))
     self.Tabla.addRow()
Ejemplo n.º 3
0
    def calculo(self):
        self.entrada = self.kwargs["entrada"]
        self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"])

        if self.kwargs["Pout"]:
            DeltaP = Pressure(self.kwargs["Pout"] - self.entrada.P)
        elif self.kwargs["deltaP"]:
            DeltaP = Pressure(self.kwargs["deltaP"])
        elif self.kwargs["Carga"]:
            DeltaP = Pressure(self.kwargs["Carga"] * self.entrada.Liquido.rho *
                              g)
        else:
            DeltaP = Pressure(0)

        if self.kwargs["usarCurva"]:
            if self.kwargs["diametro"] != self.kwargs["curvaCaracteristica"][
                    0] or self.kwargs["velocidad"] != self.kwargs[
                        "curvaCaracteristica"][1]:
                self.curvaActual = self.calcularCurvaActual()
            else:
                self.curvaActual = self.kwargs["curvaCaracteristica"]
            self.Ajustar_Curvas_Caracteristicas()

        if not self.kwargs["usarCurva"]:
            head = Length(DeltaP / g / self.entrada.Liquido.rho)
            power = Power(head * g * self.entrada.Liquido.rho *
                          self.entrada.Q / self.rendimientoCalculado)
            P_freno = Power(power * self.rendimientoCalculado)
        elif not self.kwargs["incognita"]:
            head = Length(polyval(self.CurvaHQ, self.entrada.Q))
            self.DeltaP = Pressure(head * g * self.entrada.Liquido.rho)
            power = Power(self.entrada.Q * DeltaP)
            P_freno = Power(polyval(self.CurvaPotQ, self.entrada.Q))
            self.rendimientoCalculado = Dimensionless(power / P_freno)
        else:
            head = Length(self.DeltaP / g / self.entrada.Liquido.rho)
            caudalvolumetrico = roots(
                [self.CurvaHQ[0], self.CurvaHQ[1], self.CurvaHQ[2] - head])[0]
            power = Power(caudalvolumetrico * self.DeltaP)
            self.entrada = Corriente(
                self.entrada.T, self.entrada.P.atm,
                caudalvolumetrico * self.entrada.Liquido.rho * 3600,
                self.entrada.mezcla, self.entrada.solido)
            P_freno = Power(polyval(self.CurvaPotQ, caudalvolumetrico))
            self.rendimientoCalculado = Dimensionless(power / P_freno)

        self.headCalculada = head
        self.power = power
        self.P_freno = P_freno
        self.salida = [self.entrada.clone(P=self.entrada.P + DeltaP)]
        self.Pin = self.entrada.P
        self.PoutCalculada = self.salida[0].P
        self.Q = self.entrada.Q.galUSmin
        self.volflow = self.entrada.Q
Ejemplo n.º 4
0
    def calculo(self):
        entrada = self.kwargs["entrada"]
        self.rendimientoCalculado = Dimensionless(self.kwargs["rendimiento"])

        if self.kwargs["Pout"]:
            DeltaP = Pressure(self.kwargs["Pout"] - entrada.P)
        elif self.kwargs["deltaP"]:
            DeltaP = Pressure(self.kwargs["deltaP"])
        elif self.kwargs["Carga"]:
            DeltaP = Pressure(self.kwargs["Carga"] * entrada.Liquido.rho * g)
        else:
            DeltaP = Pressure(0)

        if self.kwargs["usarCurva"]:
            b1 = self.kwargs["diametro"] != self.kwargs["curvaCaracteristica"][
                0]  # noqa
            b2 = self.kwargs["velocidad"] != self.kwargs[
                "curvaCaracteristica"][1]  # noqa
            if b1 or b2:
                self.curvaActual = self.calcularCurvaActual()
            else:
                self.curvaActual = self.kwargs["curvaCaracteristica"]
            self.Ajustar_Curvas_Caracteristicas()

        if not self.kwargs["usarCurva"]:
            head = Length(DeltaP / g / entrada.Liquido.rho)
            power = Power(head * g * entrada.Liquido.rho * entrada.Q /
                          self.rendimientoCalculado)
            P_freno = Power(power * self.rendimientoCalculado)
        elif not self.kwargs["incognita"]:
            head = Length(polyval(self.CurvaHQ, entrada.Q))
            DeltaP = Pressure(head * g * entrada.Liquido.rho)
            power = Power(entrada.Q * DeltaP)
            P_freno = Power(polyval(self.CurvaPotQ, entrada.Q))
            self.rendimientoCalculado = Dimensionless(power / P_freno)
        else:
            head = Length(self.DeltaP / g / entrada.Liquido.rho)
            poli = [self.CurvaHQ[0], self.CurvaHQ[1], self.CurvaHQ[2] - head]
            Q = roots(poli)[0]
            power = Power(Q * self.DeltaP)
            entrada = entrada.clone(split=Q / entrada.Q)
            P_freno = Power(polyval(self.CurvaPotQ, Q))
            self.rendimientoCalculado = Dimensionless(power / P_freno)

        self.deltaP = DeltaP
        self.headCalculada = head
        self.power = power
        self.P_freno = P_freno
        self.salida = [entrada.clone(P=entrada.P + DeltaP)]
        self.Pin = entrada.P
        self.PoutCalculada = self.salida[0].P
        self.volflow = entrada.Q
        self.cp_cv = entrada.Liquido.cp_cv
Ejemplo n.º 5
0
    def calculo(self):
        self.entradaGas = self.kwargs["entradaGas"]
        self.entradaLiquido = self.kwargs["entradaLiquido"]
        self.Dt = Length(self.kwargs["diametro"])
        self.Lt = Length(self.kwargs["Lt"])

        if self.kwargs["k"]:
            self.k = Dimensionless(self.kwargs["k"])
        else:
            self.k = Dimensionless(1000.)
        if self.kwargs["f"]:
            self.f = Dimensionless(self.kwargs["f"])
        else:
            self.f = Dimensionless(0.5)

        self.At = Area(pi / 4 * self.Dt**2)
        self.Vg = Speed(self.entradaGas.Q / self.At)
        self.R = self.entradaLiquido.Q / self.entradaGas.Q
        self.dd = Length(58600 *
                         (self.entradaLiquido.Liquido.sigma /
                          self.entradaLiquido.Liquido.rho)**0.5 / self.Vg**2 +
                         597 * (self.entradaLiquido.Liquido.mu /
                                self.entradaLiquido.Liquido.epsilon**0.5 /
                                self.entradaLiquido.Liquido.rho**0.5)**0.45 *
                         (1000 * self.R)**1.5)

        self.efficiency_i = self._Efficiency()
        self.efficiencyCalc = self._GlobalEfficiency(self.efficiency_i)

        if self.statusDeltaP:
            self.deltaP = self._deltaP()
        else:
            self.deltaP = DeltaP(0)

        Solido_NoCapturado, Solido_Capturado = self.entradaGas.solido.Separar(
            self.efficiency_i)
        self.Pin = min(self.entradaGas.P, self.entradaLiquido.P)
        self.Pout = Pressure(self.Pin - self.deltaP)
        self.Min = self.entradaGas.solido.caudal
        self.Dmin = self.entradaGas.solido.diametro_medio
        self.Mr = Solido_NoCapturado.caudal
        self.Dmr = Solido_NoCapturado.diametro_medio
        self.Ms = Solido_Capturado.caudal
        self.Dms = Solido_Capturado.diametro_medio

        self.salida = []
        self.salida.append(
            self.entradaGas.clone(solido=Solido_NoCapturado,
                                  P=self.Pin - self.deltaP))
        self.salida.append(
            self.entradaLiquido.clone(solido=Solido_Capturado,
                                      P=self.Pin - self.deltaP))
Ejemplo n.º 6
0
 def readStatefromJSON(self, solid):
     if solid:
         self._bool = True
         self.status = solid["status"]
         self.ids = solid["ids"]
         self.componente = [Componente(int(i)) for i in self.ids]
         self.caudalUnitario = [MassFlow(q) for q in solid["unitFlow"]]
         self.caudal = MassFlow(solid["caudal"])
         self.diametros = [Length(d, "m", "ParticleDiameter") for d in solid["diametros"]]
         self.fracciones = solid["fracciones"]
         self.fracciones_acumuladas = solid["fracciones_acumuladas"]
         self.diametro_medio = Length(solid["diametro_medio"])
         self.rho = Density(solid["rho"])
         self.T = Temperature(solid["T"])
     else:
         self._bool = False
         self.status = False
Ejemplo n.º 7
0
    def calculo(self):
        if self.kwargs["solids"] is not None:
            self.ids = self.kwargs["solids"]
        else:
            Config = getMainWindowConfig()
            txt = Config.get("Components", "Solids")
            if isinstance(txt, str):
                self.ids = eval(txt)
            else:
                self.ids = txt
        self.componente = [Componente(int(i)) for i in self.ids]

        caudal = self.kwargs.get("caudalSolido", [])
        diametro_medio = self.kwargs.get("diametroMedio", 0.0)
        fraccion = self.kwargs.get("distribucion_fraccion", [])
        diametros = self.kwargs.get("distribucion_diametro", [])

        if self.status == 0:
            self._bool = False
            return
        else:
            self._bool = True

        self.caudalUnitario = [MassFlow(i) for i in caudal]
        self.caudal = MassFlow(sum(self.caudalUnitario))
        self.diametros = diametros
        self.fracciones = fraccion
        if self.status == 2:
            self.diametros = [
                Length(i, "m", magnitud="ParticleDiameter") for i in diametros
            ]
            self.fracciones = fraccion
            diametro_medio = 0
            self.fracciones_acumuladas = [0]
            for di, xi in zip(diametros, fraccion):
                diametro_medio += di * xi
                self.fracciones_acumuladas.append(
                    xi + self.fracciones_acumuladas[-1])
            del self.fracciones_acumuladas[0]
        self.diametro_medio = Length(diametro_medio,
                                     magnitud="ParticleDiameter")
        self.RhoS(self.kwargs.get("T", 300))
Ejemplo n.º 8
0
 def CalcularCurva(self):
     caudal = []
     carga = []
     potencia = []
     NPSH = []
     for i in range(1, self.Tabla.rowCount() - 1):
         q = VolFlow(float(self.Tabla.item(i, 0).text()),
                     VolFlow.__units__[self.unidadesCaudal.currentIndex()])
         caudal.append(q)
         h = Length(float(self.Tabla.item(i, 1).text()),
                    Length.__units__[self.unidadesCarga.currentIndex()])
         carga.append(h)
         P = Power(float(self.Tabla.item(i, 2).text()),
                   Power.__units__[self.unidadesPotencia.currentIndex()])
         potencia.append(P)
         n = Length(float(self.Tabla.item(i, 3).text()),
                    Length.__units__[self.unidadesNPSH.currentIndex()])
         NPSH.append(n)
     return [
         self.diametro.value, self.rpm.value, caudal, carga, potencia, NPSH
     ]
Ejemplo n.º 9
0
    def readStatefromJSON(self, state):
        """Load instance parameter from saved file"""
        self.deltaP = DeltaP(state["deltaP"])
        self.rendimientoCalculado = Dimensionless(
            state["rendimientoCalculado"])  # noqa
        self.headCalculada = Length(state["headCalculada"])
        self.power = Power(state["power"])
        self.P_freno = Power(state["P_freno"])
        self.Pin = Pressure(state["Pin"])
        self.PoutCalculada = Pressure(state["PoutCalculada"])
        self.volflow = VolFlow(state["volflow"])
        self.cp_cv = Dimensionless(state["cp_cv"])
        self.statusCoste = state["statusCoste"]

        if self.statusCoste:
            self.C_bomba = Currency(state["C_bomba"])
            self.C_motor = Currency(state["C_motor"])
            self.C_adq = Currency(state["C_adq"])
            self.C_inst = Currency(state["C_inst"])

        if self.kwargs["usarCurva"]:
            pass
        self.salida = [None]
Ejemplo n.º 10
0
def _height(P):
    """
    Inverted _Pbar function

    Parameters
    ------------
    P : float
        Standard barometric pressure, [Pa]

    Returns
    -------
    Z : float
        Altitude, [m]

    Examples
    --------
    Selected point from Table 1 in [1]_

    >>> "%0.0f" % _height(107478)
    '-500'
    """
    P_atm = P/101325.
    Z = 1/2.25577e-5*(1-exp(log(P_atm)/5.2559))
    return Length(Z)