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()
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)
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
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
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))
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
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))
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 ]
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]
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)
def __init__(self, equipment=None, parent=None): """ equipment: Initial equipment instance to model """ super().__init__(Baghouse, entrada=False, parent=parent) # Efficiency tab title = [QtWidgets.QApplication.translate("pychemqt", "Diameter") + ", " + Length.text("ParticleDiameter"), QtWidgets.QApplication.translate("pychemqt", "Efficiency")] self.efic = Tabla(2, horizontalHeader=title, filas=1, stretch=False) self.efic.setColumnReadOnly(0, True) self.efic.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.efic.editingFinished.connect(self.cambiarRendimientos) self.tabWidget.insertTab( 1, self.efic, QtWidgets.QApplication.translate("pychemqt", "Efficiencies")) # Calculate tab lyt_Calc = QtWidgets.QGridLayout(self.tabCalculo) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Mode")), 1, 1) self.metodo = QtWidgets.QComboBox() for txt in self.Equipment.TEXT_TIPO: self.metodo.addItem(txt) self.metodo.currentIndexChanged.connect(self.tipoCalculoCambiado) lyt_Calc.addWidget(self.metodo, 1, 2, 1, 3) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 2, 1, 1, 6) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "No cells")), 3, 1) self.num_filtros = Entrada_con_unidades( int, spinbox=True, step=1, min=1, width=50, resaltado=True, start=1) self.num_filtros.valueChanged.connect( partial(self.changeParams, "num_filtros")) lyt_Calc.addWidget(self.num_filtros, 3, 2) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Time")), 4, 1) self.tiempo = Entrada_con_unidades(Time, resaltado=True) self.tiempo.valueChanged.connect(partial(self.changeParams, "tiempo")) lyt_Calc.addWidget(self.tiempo, 4, 2) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Pressure drop")), 5, 1) self.deltaP = Entrada_con_unidades(Pressure, retornar=False) self.deltaP.setReadOnly(True) self.deltaP.valueChanged.connect(partial(self.changeParams, "deltaP")) lyt_Calc.addWidget(self.deltaP, 5, 2) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 6, 1, 1, 6) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Bags per cell")), 7, 1) self.membranasFiltro = Entrada_con_unidades(int, spinbox=True, step=1, min=1) self.membranasFiltro.valueChanged.connect( partial(self.changeParams, "membranasFiltro")) lyt_Calc.addWidget(self.membranasFiltro, 7, 2) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Bag diameter")), 8, 1) self.diametroMembrana = Entrada_con_unidades(Length) self.diametroMembrana.valueChanged.connect( partial(self.changeParams, "diametroMembrana")) lyt_Calc.addWidget(self.diametroMembrana, 8, 2) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Area per bag")), 9, 1) self.areaMembrana = Entrada_con_unidades(Area) self.areaMembrana.valueChanged.connect( partial(self.changeParams, "areaMembrana")) lyt_Calc.addWidget(self.areaMembrana, 9, 2) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Cloth resistence")), 7, 4) self.resistenciaFiltro = Entrada_con_unidades(float) self.resistenciaFiltro.valueChanged.connect( partial(self.changeParams, "resistenciaFiltro")) lyt_Calc.addWidget(self.resistenciaFiltro, 7, 5) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Cake resistence")), 8, 4) self.resistenciaTorta = Entrada_con_unidades(float) self.resistenciaTorta.valueChanged.connect( partial(self.changeParams, "resistenciaTorta")) lyt_Calc.addWidget(self.resistenciaTorta, 8, 5) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Cells cleaned")), 9, 4) self.limpieza = Entrada_con_unidades(int, spinbox=True, step=1, min=0) self.limpieza.valueChanged.connect( partial(self.changeParams, "limpieza")) lyt_Calc.addWidget(self.limpieza, 9, 5) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 10, 1, 1, 6) groupbox = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("pychemqt", "Results")) lyt_Calc.addWidget(groupbox, 11, 1, 1, 5) lyt = QtWidgets.QGridLayout(groupbox) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "No cells")), 1, 1) self.num_filtrosCalc = Entrada_con_unidades(int, readOnly=True) lyt.addWidget(self.num_filtrosCalc, 1, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Time")), 2, 1) self.tiempoCalc = Entrada_con_unidades(Time, readOnly=True) lyt.addWidget(self.tiempoCalc, 2, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Pressure drop")), 3, 1) self.deltaPCalc = Entrada_con_unidades(Pressure, readOnly=True) lyt.addWidget(self.deltaPCalc, 3, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Gas velocity")), 1, 4) self.Vgas = Entrada_con_unidades(Speed, retornar=False, readOnly=True) lyt.addWidget(self.Vgas, 1, 5) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Efficiency")), 2, 4) self.rendimiento = Entrada_con_unidades(float, readOnly=True) lyt.addWidget(self.rendimiento, 2, 5) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Area")), 3, 4) self.floorArea = Entrada_con_unidades(Area, readOnly=True) lyt.addWidget(self.floorArea, 3, 5) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 12, 1, 1, 6) # Output tab self.addSalida( QtWidgets.QApplication.translate("pychemqt", "Filtered gas")) self.addSalida( QtWidgets.QApplication.translate("pychemqt", "Collected solids")) if equipment: self.setEquipment(equipment)
def __init__(self, equipment=None, parent=None): """ equipment: Initial equipment instance to model """ super().__init__(Baghouse, entrada=False, parent=parent) # Efficiency tab title = [ QtWidgets.QApplication.translate("pychemqt", "Diameter") + ", " + Length.text("ParticleDiameter"), QtWidgets.QApplication.translate("pychemqt", "Efficiency") ] self.efic = Tabla(2, horizontalHeader=title, filas=1, stretch=False) self.efic.setColumnReadOnly(0, True) self.efic.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.efic.editingFinished.connect(self.cambiarRendimientos) self.tabWidget.insertTab( 1, self.efic, QtWidgets.QApplication.translate("pychemqt", "Efficiencies")) # Calculate tab lyt_Calc = QtWidgets.QGridLayout(self.tabCalculo) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Mode")), 1, 1) self.metodo = QtWidgets.QComboBox() for txt in self.Equipment.TEXT_TIPO: self.metodo.addItem(txt) self.metodo.currentIndexChanged.connect(self.tipoCalculoCambiado) lyt_Calc.addWidget(self.metodo, 1, 2, 1, 3) lyt_Calc.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 2, 1, 1, 6) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "No cells")), 3, 1) self.num_filtros = Entrada_con_unidades(int, spinbox=True, step=1, min=1, width=50, resaltado=True, start=1) self.num_filtros.valueChanged.connect( partial(self.changeParams, "num_filtros")) lyt_Calc.addWidget(self.num_filtros, 3, 2) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Time")), 4, 1) self.tiempo = Entrada_con_unidades(Time, resaltado=True) self.tiempo.valueChanged.connect(partial(self.changeParams, "tiempo")) lyt_Calc.addWidget(self.tiempo, 4, 2) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Pressure drop")), 5, 1) self.deltaP = Entrada_con_unidades(Pressure, retornar=False) self.deltaP.setReadOnly(True) self.deltaP.valueChanged.connect(partial(self.changeParams, "deltaP")) lyt_Calc.addWidget(self.deltaP, 5, 2) lyt_Calc.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 6, 1, 1, 6) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Bags per cell")), 7, 1) self.membranasFiltro = Entrada_con_unidades(int, spinbox=True, step=1, min=1) self.membranasFiltro.valueChanged.connect( partial(self.changeParams, "membranasFiltro")) lyt_Calc.addWidget(self.membranasFiltro, 7, 2) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Bag diameter")), 8, 1) self.diametroMembrana = Entrada_con_unidades(Length) self.diametroMembrana.valueChanged.connect( partial(self.changeParams, "diametroMembrana")) lyt_Calc.addWidget(self.diametroMembrana, 8, 2) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Area per bag")), 9, 1) self.areaMembrana = Entrada_con_unidades(Area) self.areaMembrana.valueChanged.connect( partial(self.changeParams, "areaMembrana")) lyt_Calc.addWidget(self.areaMembrana, 9, 2) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Cloth resistence")), 7, 4) self.resistenciaFiltro = Entrada_con_unidades(float) self.resistenciaFiltro.valueChanged.connect( partial(self.changeParams, "resistenciaFiltro")) lyt_Calc.addWidget(self.resistenciaFiltro, 7, 5) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Cake resistence")), 8, 4) self.resistenciaTorta = Entrada_con_unidades(float) self.resistenciaTorta.valueChanged.connect( partial(self.changeParams, "resistenciaTorta")) lyt_Calc.addWidget(self.resistenciaTorta, 8, 5) lyt_Calc.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Cells cleaned")), 9, 4) self.limpieza = Entrada_con_unidades(int, spinbox=True, step=1, min=0) self.limpieza.valueChanged.connect( partial(self.changeParams, "limpieza")) lyt_Calc.addWidget(self.limpieza, 9, 5) lyt_Calc.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 10, 1, 1, 6) groupbox = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("pychemqt", "Results")) lyt_Calc.addWidget(groupbox, 11, 1, 1, 5) lyt = QtWidgets.QGridLayout(groupbox) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "No cells")), 1, 1) self.num_filtrosCalc = Entrada_con_unidades(int, readOnly=True) lyt.addWidget(self.num_filtrosCalc, 1, 2) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Time")), 2, 1) self.tiempoCalc = Entrada_con_unidades(Time, readOnly=True) lyt.addWidget(self.tiempoCalc, 2, 2) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Pressure drop")), 3, 1) self.deltaPCalc = Entrada_con_unidades(Pressure, readOnly=True) lyt.addWidget(self.deltaPCalc, 3, 2) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Gas velocity")), 1, 4) self.Vgas = Entrada_con_unidades(Speed, retornar=False, readOnly=True) lyt.addWidget(self.Vgas, 1, 5) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Efficiency")), 2, 4) self.rendimiento = Entrada_con_unidades(float, readOnly=True) lyt.addWidget(self.rendimiento, 2, 5) lyt.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("pychemqt", "Area")), 3, 4) self.floorArea = Entrada_con_unidades(Area, readOnly=True) lyt.addWidget(self.floorArea, 3, 5) lyt_Calc.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 12, 1, 1, 6) # Output tab self.addSalida( QtWidgets.QApplication.translate("pychemqt", "Filtered gas")) self.addSalida( QtWidgets.QApplication.translate("pychemqt", "Collected solids")) if equipment: self.setEquipment(equipment)