class UI_equipment(parents.UI_equip): """Diálogo de definición de filtros de mangas""" def __init__(self, entrada=None, parent=None): """entrada: Parametro opcional de clase corriente que indica la corriente de entrada""" super(UI_equipment, self).__init__(Baghouse, entrada=False, parent=parent) self.entrada = entrada #Pestaña entrada self.Entrada = UI_corriente.Ui_corriente(entrada) self.Entrada.Changed.connect(self.cambiar_entrada) self.tabWidget.insertTab( 0, self.Entrada, QtWidgets.QApplication.translate("equipment", "Entrada", None)) #Pestaña definición rendimientos self.Rendimientos = QtWidgets.QTableWidget(1, 2) self.Rendimientos.setItemDelegateForColumn(1, CellEditor(self)) self.Rendimientos.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.Rendimientos.verticalHeader().hide() self.Rendimientos.setEditTriggers( QtWidgets.QAbstractItemView.AllEditTriggers) if self.entrada: self.rellenarTablaRendimientos() self.rendimientos = [] self.Rendimientos.cellChanged.connect(self.cambiarRendimientos) self.tabWidget.insertTab( 1, self.Rendimientos, QtWidgets.QApplication.translate("equipment", "Rendimientos", None)) #Cálculo gridLayout_Calculo = QtWidgets.QGridLayout(self.tabCalculo) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Tipo de cálculo:", None)), 1, 1, 1, 1) self.TipoCalculo = QtWidgets.QComboBox() self.TipoCalculo.addItem( QtWidgets.QApplication.translate("equipment", "Calcular caída de presión", None)) self.TipoCalculo.addItem( QtWidgets.QApplication.translate("equipment", "Calcular tiempo de filtración", None)) self.TipoCalculo.addItem( QtWidgets.QApplication.translate("equipment", "Calcular número de filtros", None)) self.TipoCalculo.currentIndexChanged.connect(self.tipoCalculoCambiado) gridLayout_Calculo.addWidget(self.TipoCalculo, 1, 2, 1, 4) gridLayout_Calculo.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 2, 1, 1, 6) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Nº de filtros:", None)), 3, 1, 1, 1) self.numFiltros = Entrada_con_unidades(int, spinbox=True, step=1, width=50, resaltado=True, min=1, start=1) self.numFiltros.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.numFiltros, 3, 2, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Tiempo de filtración:", None)), 4, 1, 1, 1) self.tiempo = Entrada_con_unidades(unidades.Time, resaltado=True) self.tiempo.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.tiempo, 4, 2, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Pérdida de presión:", None)), 5, 1, 1, 1) self.deltaP = Entrada_con_unidades(unidades.Pressure, retornar=False, readOnly=True) self.deltaP.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.deltaP, 5, 2, 1, 1) gridLayout_Calculo.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 6, 1, 1, 6) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Membranas por filtro:", None)), 7, 1, 1, 1) self.MembranaCelda = Entrada_con_unidades(int, spinbox=True, step=1, width=70, value=78, min=1) self.MembranaCelda.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.MembranaCelda, 7, 2, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Diametro de membrana:", None)), 8, 1, 1, 1) self.Diametro = Entrada_con_unidades(unidades.Length, value=unidades.Length(0.5, "ft")) self.Diametro.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Diametro, 8, 2, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Area por membrana:", None)), 9, 1, 1, 1) self.Area = Entrada_con_unidades(unidades.Area, value=unidades.Area(16, "ft2")) self.Area.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Area, 9, 2, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Resistencia filtro:", None)), 7, 4, 1, 1) self.resistenciaFiltro = Entrada_con_unidades(float, spinbox=True, step=0.01, width=70, value=0.84, min=0) self.resistenciaFiltro.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.resistenciaFiltro, 7, 5, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Resistencia torta:", None)), 8, 4, 1, 1) self.resistenciaTorta = Entrada_con_unidades(float, spinbox=True, step=0.01, width=70, value=0.1, min=0) self.resistenciaTorta.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.resistenciaTorta, 8, 5, 1, 1) gridLayout_Calculo.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Filtros en limpieza:", None)), 9, 4, 1, 1) self.Limpieza = Entrada_con_unidades(int, spinbox=True, step=1, width=70, value=1, min=0) self.Limpieza.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Limpieza, 9, 5, 1, 1) gridLayout_Calculo.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 10, 1, 1, 6) self.groupBox_Calculo = QtWidgets.QGroupBox( QtWidgets.QApplication.translate("equipment", "Datos calculados", None)) gridLayout_Calculo.addWidget(self.groupBox_Calculo, 11, 1, 1, 5) self.gridLayout_1 = QtWidgets.QGridLayout(self.groupBox_Calculo) self.gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "V<sub>gas</sub>:", None)), 0, 1, 1, 1) self.Vgas = Entrada_con_unidades(unidades.Speed, retornar=False, readOnly=True) self.gridLayout_1.addWidget(self.Vgas, 0, 2, 1, 1) self.gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Rendimiento:", None)), 1, 1, 1, 1) self.rendimientoCalculado = Entrada_con_unidades(float, readOnly=True) self.gridLayout_1.addWidget(self.rendimientoCalculado, 1, 2, 1, 1) self.gridLayout_1.addWidget( QtWidgets.QLabel( QtWidgets.QApplication.translate("equipment", "Superficie:", None)), 2, 1, 1, 1) self.superficie = Entrada_con_unidades(unidades.Area, readOnly=True) self.gridLayout_1.addWidget(self.superficie, 2, 2, 1, 1) gridLayout_Calculo.addItem( QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 12, 1, 1, 6) #Salidas self.SalidaGas = UI_corriente.Ui_corriente(readOnly=True) self.SalidaSolido = UI_corriente.Ui_corriente(readOnly=True) self.Salida.addTab( self.SalidaGas, QtWidgets.QApplication.translate("equipment", "Gas filtrado", None)) self.Salida.addTab( self.SalidaSolido, QtWidgets.QApplication.translate("equipment", "Sólidos recogidos", None)) self.tabWidget.setCurrentIndex(0) def cambiar_entrada(self, corriente): self.entrada = corriente self.rellenarTablaRendimientos() self.calculo() def rellenarTablaRendimientos(self): self.Rendimientos.clearContents() self.Rendimientos.setRowCount(len(self.entrada.solido.distribucion)) self.Rendimientos.setHorizontalHeaderLabels([ QtWidgets.QApplication.translate("equipment", "Diámetro, µm", None), QtWidgets.QApplication.translate("equipment", "Rendimiento", None) ]) for i in range(len(self.entrada.solido.distribucion)): self.Rendimientos.setRowHeight(i, 22) self.Rendimientos.setItem( i, 0, QtWidgets.QTableWidgetItem( representacion(1e6 * self.entrada.solido.diametros[i]))) self.Rendimientos.item( i, 0).setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.Rendimientos.item(i, 0).setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) self.Rendimientos.setItem(i, 1, QtWidgets.QTableWidgetItem("")) self.Rendimientos.item( i, 1).setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) def cambiarRendimientos(self, fila, columna): numero = float(self.Rendimientos.item(fila, columna).text()) if numero < 0 or numero > 1: self.Rendimientos.item(fila, columna).setText("") else: if self.rendimientos == []: self.rendimientos = [0] * self.Rendimientos.rowCount() self.rendimientos[fila] = numero def todos_datos(self): if self.TipoCalculo.currentIndex() == 0: todos_datos = self.numFiltros.value and self.tiempo.value elif self.TipoCalculo.currentIndex() == 1: todos_datos = self.numFiltros.value and self.deltaP.value else: todos_datos = self.tiempo.value and self.deltaP.value return todos_datos and self.Entrada.todos_datos() def calculo(self): if self.todos_datos(): if self.Limpieza.value == self.numFiltros.value: self.status.setState( 5, QtWidgets.QApplication.translate( "equipment", "Todos los filtros en limpieza", None)) else: self.status.setState(4) self.Equipment(entrada=self.entrada, metodo=self.TipoCalculo.currentIndex(), num_filtros=self.numFiltros.value, tiempo=self.tiempo.value, deltaP=self.deltaP.value.atm, resistenciaFiltro=self.resistenciaFiltro.value, resistenciaTorta=self.resistenciaTorta.value, limpieza=self.Limpieza.value, membranasFiltro=self.MembranaCelda.value, diametroMembrana=self.Diametro.value, areaMembrana=self.Area.value, rendimientos=self.rendimientos) self.rellenoSalida() if self.rendimientos == []: self.status.setState( 3, QtWidgets.QApplication.translate( "equipment", "Usando rendimiento por defecto", None)) else: self.status.setState(1) def rellenoSalida(self): if self.TipoCalculo.currentIndex() == 0: self.deltaP.setValue(self.Equipment.deltaP) elif self.TipoCalculo.currentIndex() == 1: self.tiempo.setValue(self.Equipment.tiempo) else: self.numFiltros.setValue(self.Equipment.num_filtros) self.Vgas.setValue(self.Equipment.Vgas) self.rendimientoCalculado.setValue(self.Equipment.rendimiento) self.superficie.setValue(self.Equipment.floorArea) self.SalidaGas.rellenar(self.Equipment.SalidaAire) self.SalidaSolido.rellenar(self.Equipment.SalidaSolido) def tipoCalculoCambiado(self, tipo_calculo): if tipo_calculo == 0: self.numFiltros.setReadOnly(False) self.numFiltros.setRetornar(True) self.numFiltros.setResaltado(True) self.tiempo.setReadOnly(False) self.tiempo.setRetornar(True) self.tiempo.setResaltado(True) self.deltaP.setReadOnly(True) self.deltaP.setRetornar(False) self.deltaP.setResaltado(False) elif tipo_calculo == 1: self.numFiltros.setReadOnly(False) self.numFiltros.setRetornar(True) self.numFiltros.setResaltado(True) self.tiempo.setReadOnly(True) self.tiempo.setRetornar(False) self.tiempo.setResaltado(False) self.deltaP.setReadOnly(False) self.deltaP.setRetornar(True) self.deltaP.setResaltado(True) else: self.numFiltros.setReadOnly(True) self.numFiltros.setRetornar(False) self.numFiltros.setResaltado(False) self.tiempo.setReadOnly(False) self.tiempo.setRetornar(True) self.tiempo.setResaltado(True) self.deltaP.setReadOnly(False) self.deltaP.setRetornar(True) self.deltaP.setResaltado(True)
class UI_equipment(UI_equip): """Gravity chamber equipment edition dialog""" Equipment = GravityChamber() def __init__(self, equipment=None, parent=None): """ equipment: Initial equipment instance to model """ super().__init__(GravityChamber, entrada=False, parent=parent) # Calculate tab lyt_Calc = QtWidgets.QGridLayout(self.tabCalculo) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Mode")), 1, 1, 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, 4) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Model")), 2, 1, 1, 1) self.modelo = QtWidgets.QComboBox() for txt in self.Equipment.TEXT_MODEL: self.modelo.addItem(txt) self.modelo.currentIndexChanged.connect(partial(self.changeParams, "modelo")) lyt_Calc.addWidget(self.modelo, 2, 2, 1, 1) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed), 3, 1, 1, 6) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Width")), 4, 1, 1, 1) self.W = Entrada_con_unidades(Length) self.W.valueChanged.connect(partial(self.changeParams, "W")) lyt_Calc.addWidget(self.W, 4, 2, 1, 1) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Height")), 5, 1, 1, 1) self.H = Entrada_con_unidades(Length) self.H.valueChanged.connect(partial(self.changeParams, "H")) lyt_Calc.addWidget(self.H, 5, 2, 1, 1) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Length")), 6, 1, 1, 1) self.L = Entrada_con_unidades(Length) self.L.valueChanged.connect(partial(self.changeParams, "L")) lyt_Calc.addWidget(self.L, 6, 2, 1, 1) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Allowable efficiency")), 7, 1, 1, 1) self.rendimientoAdmisible = Entrada_con_unidades( float, spinbox=True, max=1) self.rendimientoAdmisible.valueChanged.connect( partial(self.changeParams, "rendimientoAdmisible")) lyt_Calc.addWidget(self.rendimientoAdmisible, 7, 2, 1, 1) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Allowable speed")), 8, 1, 1, 1) self.velocidadAdmisible = Entrada_con_unidades(Speed) self.velocidadAdmisible.valueChanged.connect( partial(self.changeParams, "velocidadAdmisible")) lyt_Calc.addWidget(self.velocidadAdmisible, 8, 2, 1, 1) lyt_Calc.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Pressure loss")), 9, 1, 1, 1) self.deltaP = Entrada_con_unidades(DeltaP) self.deltaP.valueChanged.connect(partial(self.changeParams, "deltaP")) lyt_Calc.addWidget(self.deltaP, 9, 2, 1, 1) lyt_Calc.addItem(QtWidgets.QSpacerItem( 20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding), 10, 1, 1, 6) group_Calc = QtWidgets.QGroupBox(QtWidgets.QApplication.translate( "pychemqt", "Results")) lyt_Calc.addWidget(group_Calc, 11, 1, 1, 5) lyt = QtWidgets.QGridLayout(group_Calc) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Flow")), 0, 1) self.Q = Entrada_con_unidades(VolFlow, "QGas", retornar=False) self.Q.setReadOnly(True) lyt.addWidget(self.Q, 0, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "V<sub>gas</sub>")), 1, 1) self.Vgas = Entrada_con_unidades(Speed, retornar=False, readOnly=True) lyt.addWidget(self.Vgas, 1, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Efficiency")), 2, 1) self.rendimiento = Entrada_con_unidades(float, retornar=False) self.rendimiento.setReadOnly(True) lyt.addWidget(self.rendimiento, 2, 2) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Height")), 0, 4) self.HCalc = Entrada_con_unidades(Length, retornar=False) self.HCalc.setReadOnly(True) lyt.addWidget(self.HCalc, 0, 5) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Width")), 1, 4) self.WCalc = Entrada_con_unidades(Length, retornar=False) self.WCalc.setReadOnly(True) lyt.addWidget(self.WCalc, 1, 5) lyt.addWidget(QtWidgets.QLabel(QtWidgets.QApplication.translate( "pychemqt", "Length")), 2, 4) self.LCalc = Entrada_con_unidades(Length, retornar=False) self.LCalc.setReadOnly(True) lyt.addWidget(self.LCalc, 2, 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")) self.tipoCalculoCambiado(0) if equipment: self.setEquipment(equipment) def tipoCalculoCambiado(self, int): self.W.setReadOnly(int) self.W.setRetornar(not int) self.W.setResaltado(not int) self.H.setResaltado(not int) self.L.setReadOnly(int) self.L.setRetornar(not int) self.L.setResaltado(not int) self.rendimientoAdmisible.setReadOnly(not int) self.rendimientoAdmisible.setResaltado(int) self.velocidadAdmisible.setReadOnly(not int) self.velocidadAdmisible.setResaltado(False) self.changeParams("metodo", int)
class UI_equipment(UI_equip): """Gravity chamber equipment edition dialog""" Equipment = GravityChamber() def __init__(self, equipment=None, parent=None): """ equipment: Initial equipment instance to model """ super(UI_equipment, self).__init__(GravityChamber, entrada=False, parent=parent) # Calculate tab lyt_Calc = QtGui.QGridLayout(self.tabCalculo) lyt_Calc.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Mode")), 1, 1, 1, 1) self.metodo = QtGui.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, 4) lyt_Calc.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Model")), 2, 1, 1, 1) self.modelo = QtGui.QComboBox() for txt in self.Equipment.TEXT_MODEL: self.modelo.addItem(txt) self.modelo.currentIndexChanged.connect( partial(self.changeParams, "modelo")) lyt_Calc.addWidget(self.modelo, 2, 2, 1, 1) lyt_Calc.addItem( QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed), 3, 1, 1, 6) lyt_Calc.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Width")), 4, 1, 1, 1) self.W = Entrada_con_unidades(Length) self.W.valueChanged.connect(partial(self.changeParams, "W")) lyt_Calc.addWidget(self.W, 4, 2, 1, 1) lyt_Calc.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Height")), 5, 1, 1, 1) self.H = Entrada_con_unidades(Length) self.H.valueChanged.connect(partial(self.changeParams, "H")) lyt_Calc.addWidget(self.H, 5, 2, 1, 1) lyt_Calc.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Length")), 6, 1, 1, 1) self.L = Entrada_con_unidades(Length) self.L.valueChanged.connect(partial(self.changeParams, "L")) lyt_Calc.addWidget(self.L, 6, 2, 1, 1) lyt_Calc.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Allowable efficiency")), 7, 1, 1, 1) self.rendimientoAdmisible = Entrada_con_unidades(float, spinbox=True, max=1) self.rendimientoAdmisible.valueChanged.connect( partial(self.changeParams, "rendimientoAdmisible")) lyt_Calc.addWidget(self.rendimientoAdmisible, 7, 2, 1, 1) lyt_Calc.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Allowable speed")), 8, 1, 1, 1) self.velocidadAdmisible = Entrada_con_unidades(Speed) self.velocidadAdmisible.valueChanged.connect( partial(self.changeParams, "velocidadAdmisible")) lyt_Calc.addWidget(self.velocidadAdmisible, 8, 2, 1, 1) lyt_Calc.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Pressure loss")), 9, 1, 1, 1) self.deltaP = Entrada_con_unidades(DeltaP) self.deltaP.valueChanged.connect(partial(self.changeParams, "deltaP")) lyt_Calc.addWidget(self.deltaP, 9, 2, 1, 1) lyt_Calc.addItem( QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 10, 1, 1, 6) group_Calc = QtGui.QGroupBox( QtGui.QApplication.translate("pychemqt", "Results")) lyt_Calc.addWidget(group_Calc, 11, 1, 1, 5) lyt = QtGui.QGridLayout(group_Calc) lyt.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Flow")), 0, 1) self.Q = Entrada_con_unidades(VolFlow, "QGas", retornar=False) self.Q.setReadOnly(True) lyt.addWidget(self.Q, 0, 2) lyt.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "V<sub>gas</sub>")), 1, 1) self.Vgas = Entrada_con_unidades(Speed, retornar=False, readOnly=True) lyt.addWidget(self.Vgas, 1, 2) lyt.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Efficiency")), 2, 1) self.rendimiento = Entrada_con_unidades(float, retornar=False) self.rendimiento.setReadOnly(True) lyt.addWidget(self.rendimiento, 2, 2) lyt.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Height")), 0, 4) self.HCalc = Entrada_con_unidades(Length, retornar=False) self.HCalc.setReadOnly(True) lyt.addWidget(self.HCalc, 0, 5) lyt.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Width")), 1, 4) self.WCalc = Entrada_con_unidades(Length, retornar=False) self.WCalc.setReadOnly(True) lyt.addWidget(self.WCalc, 1, 5) lyt.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Length")), 2, 4) self.LCalc = Entrada_con_unidades(Length, retornar=False) self.LCalc.setReadOnly(True) lyt.addWidget(self.LCalc, 2, 5) lyt_Calc.addItem( QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 12, 1, 1, 6) # Output tab self.addSalida(QtGui.QApplication.translate("pychemqt", "Filtered gas")) self.addSalida( QtGui.QApplication.translate("pychemqt", "Collected solids")) self.tipoCalculoCambiado(0) if equipment: self.setEquipment(equipment) def tipoCalculoCambiado(self, int): self.W.setReadOnly(int) self.W.setRetornar(not int) self.W.setResaltado(not int) self.H.setResaltado(not int) self.L.setReadOnly(int) self.L.setRetornar(not int) self.L.setResaltado(not int) self.rendimientoAdmisible.setReadOnly(not int) self.rendimientoAdmisible.setResaltado(int) self.velocidadAdmisible.setReadOnly(not int) self.velocidadAdmisible.setResaltado(False) self.changeParams("metodo", int)
class UI_equipment(parents.UI_equip): """Diálogo de definición de filtros de mangas""" def __init__(self, entrada=None, parent=None): """entrada: Parametro opcional de clase corriente que indica la corriente de entrada""" super(UI_equipment, self).__init__(Baghouse, entrada=False, parent=parent) self.entrada=entrada #Pestaña entrada self.Entrada= UI_corriente.Ui_corriente(entrada) self.Entrada.Changed.connect(self.cambiar_entrada) self.tabWidget.insertTab(0, self.Entrada,QtGui.QApplication.translate("equipment", "Entrada", None, QtGui.QApplication.UnicodeUTF8)) #Pestaña definición rendimientos self.Rendimientos= QtGui.QTableWidget(1, 2) self.Rendimientos.setItemDelegateForColumn(1, CellEditor(self)) self.Rendimientos.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.Rendimientos.verticalHeader().hide() self.Rendimientos.setEditTriggers(QtGui.QAbstractItemView.AllEditTriggers) if self.entrada: self.rellenarTablaRendimientos() self.rendimientos=[] self.Rendimientos.cellChanged.connect(self.cambiarRendimientos) self.tabWidget.insertTab(1, self.Rendimientos,QtGui.QApplication.translate("equipment", "Rendimientos", None, QtGui.QApplication.UnicodeUTF8)) #Cálculo gridLayout_Calculo = QtGui.QGridLayout(self.tabCalculo) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Tipo de cálculo:", None, QtGui.QApplication.UnicodeUTF8)), 1, 1, 1, 1) self.TipoCalculo=QtGui.QComboBox() self.TipoCalculo.addItem(QtGui.QApplication.translate("equipment", "Calcular caída de presión", None, QtGui.QApplication.UnicodeUTF8)) self.TipoCalculo.addItem(QtGui.QApplication.translate("equipment", "Calcular tiempo de filtración", None, QtGui.QApplication.UnicodeUTF8)) self.TipoCalculo.addItem(QtGui.QApplication.translate("equipment", "Calcular número de filtros", None, QtGui.QApplication.UnicodeUTF8)) self.TipoCalculo.currentIndexChanged.connect(self.tipoCalculoCambiado) gridLayout_Calculo.addWidget(self.TipoCalculo, 1, 2, 1, 4) gridLayout_Calculo.addItem(QtGui.QSpacerItem(20,20,QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed),2,1,1,6) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Nº de filtros:", None, QtGui.QApplication.UnicodeUTF8)), 3, 1, 1, 1) self.numFiltros=Entrada_con_unidades(int, spinbox=True, step=1, width=50, resaltado=True, min=1, start=1) self.numFiltros.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.numFiltros,3,2,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Tiempo de filtración:", None, QtGui.QApplication.UnicodeUTF8)), 4, 1, 1, 1) self.tiempo=Entrada_con_unidades(unidades.Time, resaltado=True) self.tiempo.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.tiempo,4,2,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Pérdida de presión:", None, QtGui.QApplication.UnicodeUTF8)), 5, 1, 1, 1) self.deltaP=Entrada_con_unidades(unidades.Pressure, retornar=False, readOnly=True) self.deltaP.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.deltaP,5,2,1,1) gridLayout_Calculo.addItem(QtGui.QSpacerItem(20,20,QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed),6,1,1,6) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Membranas por filtro:", None, QtGui.QApplication.UnicodeUTF8)), 7, 1, 1, 1) self.MembranaCelda=Entrada_con_unidades(int, spinbox=True, step=1, width=70, value=78, min=1) self.MembranaCelda.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.MembranaCelda,7,2,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Diametro de membrana:", None, QtGui.QApplication.UnicodeUTF8)), 8, 1, 1, 1) self.Diametro=Entrada_con_unidades(unidades.Length, value=unidades.Length(0.5, "ft")) self.Diametro.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Diametro,8,2,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Area por membrana:", None, QtGui.QApplication.UnicodeUTF8)), 9, 1, 1, 1) self.Area=Entrada_con_unidades(unidades.Area, value=unidades.Area(16, "ft2")) self.Area.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Area,9,2,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Resistencia filtro:", None, QtGui.QApplication.UnicodeUTF8)), 7, 4, 1, 1) self.resistenciaFiltro=Entrada_con_unidades(float, spinbox=True, step=0.01, width=70, value=0.84, min=0) self.resistenciaFiltro.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.resistenciaFiltro,7,5,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Resistencia torta:", None, QtGui.QApplication.UnicodeUTF8)), 8, 4, 1, 1) self.resistenciaTorta=Entrada_con_unidades(float, spinbox=True, step=0.01, width=70, value=0.1, min=0) self.resistenciaTorta.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.resistenciaTorta,8,5,1,1) gridLayout_Calculo.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Filtros en limpieza:", None, QtGui.QApplication.UnicodeUTF8)), 9, 4, 1, 1) self.Limpieza=Entrada_con_unidades(int, spinbox=True, step=1, width=70, value=1, min=0) self.Limpieza.valueChanged.connect(self.calculo) gridLayout_Calculo.addWidget(self.Limpieza,9,5,1,1) gridLayout_Calculo.addItem(QtGui.QSpacerItem(20,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding),10,1,1,6) self.groupBox_Calculo = QtGui.QGroupBox(QtGui.QApplication.translate("equipment", "Datos calculados", None, QtGui.QApplication.UnicodeUTF8)) gridLayout_Calculo.addWidget(self.groupBox_Calculo,11,1,1,5) self.gridLayout_1 = QtGui.QGridLayout(self.groupBox_Calculo) self.gridLayout_1.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "V<sub>gas</sub>:", None, QtGui.QApplication.UnicodeUTF8)),0,1,1,1) self.Vgas=Entrada_con_unidades(unidades.Speed, retornar=False, readOnly=True) self.gridLayout_1.addWidget(self.Vgas,0,2,1,1) self.gridLayout_1.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Rendimiento:", None, QtGui.QApplication.UnicodeUTF8)),1,1,1,1) self.rendimientoCalculado=Entrada_con_unidades(float, readOnly=True) self.gridLayout_1.addWidget(self.rendimientoCalculado,1,2,1,1) self.gridLayout_1.addWidget(QtGui.QLabel(QtGui.QApplication.translate("equipment", "Superficie:", None, QtGui.QApplication.UnicodeUTF8)),2,1,1,1) self.superficie=Entrada_con_unidades(unidades.Area, readOnly=True) self.gridLayout_1.addWidget(self.superficie,2,2,1,1) gridLayout_Calculo.addItem(QtGui.QSpacerItem(20,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding),12,1,1,6) #Salidas self.SalidaGas= UI_corriente.Ui_corriente(readOnly=True) self.SalidaSolido= UI_corriente.Ui_corriente(readOnly=True) self.Salida.addTab(self.SalidaGas,QtGui.QApplication.translate("equipment", "Gas filtrado", None, QtGui.QApplication.UnicodeUTF8)) self.Salida.addTab(self.SalidaSolido,QtGui.QApplication.translate("equipment", "Sólidos recogidos", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setCurrentIndex(0) def cambiar_entrada(self, corriente): self.entrada=corriente self.rellenarTablaRendimientos() self.calculo() def rellenarTablaRendimientos(self): self.Rendimientos.clearContents() self.Rendimientos.setRowCount(len(self.entrada.solido.distribucion)) self.Rendimientos.setHorizontalHeaderLabels([QtGui.QApplication.translate("equipment", "Diámetro, µm", None, QtGui.QApplication.UnicodeUTF8), QtGui.QApplication.translate("equipment", "Rendimiento", None, QtGui.QApplication.UnicodeUTF8)]) for i in range(len(self.entrada.solido.distribucion)): self.Rendimientos.setRowHeight(i, 22) self.Rendimientos.setItem(i, 0, QtGui.QTableWidgetItem(representacion(1e6*self.entrada.solido.diametros[i]))) self.Rendimientos.item(i, 0).setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) self.Rendimientos.item(i, 0).setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled) self.Rendimientos.setItem(i, 1, QtGui.QTableWidgetItem("")) self.Rendimientos.item(i, 1).setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) def cambiarRendimientos(self, fila, columna): numero=float(self.Rendimientos.item(fila, columna).text()) if numero<0 or numero >1: self.Rendimientos.item(fila, columna).setText("") else: if self.rendimientos==[]: self.rendimientos=[0]*self.Rendimientos.rowCount() self.rendimientos[fila]=numero def todos_datos(self): if self.TipoCalculo.currentIndex()==0: todos_datos=self.numFiltros.value and self.tiempo.value elif self.TipoCalculo.currentIndex()==1: todos_datos=self.numFiltros.value and self.deltaP.value else: todos_datos=self.tiempo.value and self.deltaP.value return todos_datos and self.Entrada.todos_datos() def calculo(self): if self.todos_datos(): if self.Limpieza.value==self.numFiltros.value: self.status.setState(5, QtGui.QApplication.translate("equipment", "Todos los filtros en limpieza", None, QtGui.QApplication.UnicodeUTF8)) else: self.status.setState(4) self.Equipment(entrada=self.entrada, metodo=self.TipoCalculo.currentIndex(), num_filtros=self.numFiltros.value, tiempo=self.tiempo.value, deltaP=self.deltaP.value.atm, resistenciaFiltro=self.resistenciaFiltro.value, resistenciaTorta=self.resistenciaTorta.value, limpieza=self.Limpieza.value, membranasFiltro=self.MembranaCelda.value, diametroMembrana=self.Diametro.value, areaMembrana=self.Area.value, rendimientos=self.rendimientos) self.rellenoSalida() if self.rendimientos==[]: self.status.setState(3, QtGui.QApplication.translate("equipment", "Usando rendimiento por defecto", None, QtGui.QApplication.UnicodeUTF8)) else: self.status.setState(1) def rellenoSalida(self): if self.TipoCalculo.currentIndex()==0: self.deltaP.setValue(self.Equipment.deltaP) elif self.TipoCalculo.currentIndex()==1: self.tiempo.setValue(self.Equipment.tiempo) else: self.numFiltros.setValue(self.Equipment.num_filtros) self.Vgas.setValue(self.Equipment.Vgas) self.rendimientoCalculado.setValue(self.Equipment.rendimiento) self.superficie.setValue(self.Equipment.floorArea) self.SalidaGas.rellenar(self.Equipment.SalidaAire) self.SalidaSolido.rellenar(self.Equipment.SalidaSolido) def tipoCalculoCambiado(self, tipo_calculo): if tipo_calculo==0: self.numFiltros.setReadOnly(False) self.numFiltros.setRetornar(True) self.numFiltros.setResaltado(True) self.tiempo.setReadOnly(False) self.tiempo.setRetornar(True) self.tiempo.setResaltado(True) self.deltaP.setReadOnly(True) self.deltaP.setRetornar(False) self.deltaP.setResaltado(False) elif tipo_calculo==1: self.numFiltros.setReadOnly(False) self.numFiltros.setRetornar(True) self.numFiltros.setResaltado(True) self.tiempo.setReadOnly(True) self.tiempo.setRetornar(False) self.tiempo.setResaltado(False) self.deltaP.setReadOnly(False) self.deltaP.setRetornar(True) self.deltaP.setResaltado(True) else: self.numFiltros.setReadOnly(True) self.numFiltros.setRetornar(False) self.numFiltros.setResaltado(False) self.tiempo.setReadOnly(False) self.tiempo.setRetornar(True) self.tiempo.setResaltado(True) self.deltaP.setReadOnly(False) self.deltaP.setRetornar(True) self.deltaP.setResaltado(True)