예제 #1
0
파일: pipe.py 프로젝트: puttak/CheProcess
 def readStatefromJSON(self, state):
     """Load instance parameter from saved file"""
     self.L = unidades.Length(state["L"])
     self.rho = unidades.Density(state["rho"])
     self.mu = unidades.Viscosity(state["mu"])
     self.material = state["material"]
     self.Dn = state["Dn"]
     self.rugosidad = unidades.Length(state["rugosidad"])
     self.De = unidades.Length(state["De"])
     self.w = unidades.Length(state["w"])
     self.Di = unidades.Length(state["Di"])
     self.eD = unidades.Dimensionless(state["eD"])
     self.seccion = unidades.Area(state["seccion"])
     self.A = unidades.Area(state["A"])
     self.V = unidades.Speed(state["V"])
     self.Re = unidades.Dimensionless(state["Re"])
     self.K = unidades.Dimensionless(state["K"])
     self.DeltaP_h = unidades.DeltaP(state["DeltaP_h"])
     self.DeltaP_ac = unidades.DeltaP(state["DeltaP_ac"])
     self.f = unidades.Dimensionless(state["f"])
     self.DeltaP_f = unidades.DeltaP(state["DeltaP_f"])
     self.DeltaP_v = unidades.DeltaP(state["DeltaP_v"])
     self.DeltaP = unidades.DeltaP(state["DeltaP"])
     self.DeltaP_100ft = unidades.Dimensionless(state["DeltaP_100ft"])
     self.Tout = unidades.Temperature(state["Tout"])
     self.Heat = unidades.Power(state["Heat"])
     self.Pin = unidades.Pressure(state["Pin"])
     self.Pout = unidades.Pressure(state["Pout"])
     self.statusCoste = state["statusCoste"]
     if self.statusCoste:
         self.C_adq = unidades.Currency(state["C_adq"])
         self.C_inst = unidades.Currency(state["C_inst"])
     self.salida = [None]
예제 #2
0
파일: pipe.py 프로젝트: edusegzy/pychemqt
    def calculo(self):
        self.entrada = self.kwargs["entrada"]
        self.L = unidades.Length(self.kwargs["l"])

        if self.entrada.x == 0:
            self.rho = self.entrada.Liquido.rho
            self.mu = self.entrada.Liquido.mu
        else:
            self.rho = self.entrada.Gas.rho
            self.mu = self.entrada.Gas.mu

        self.material = self.kwargs["material"][0] + " " + self.kwargs[
            "material"][1]
        self.Dn = self.kwargs["material"][3]
        self.rugosidad = unidades.Length(self.kwargs["material"][2], "mm")
        self.De = unidades.Length(self.kwargs["material"][6], "mm")
        self.w = unidades.Length(self.kwargs["material"][5], "mm")
        self.Di = unidades.Length((self.De - 2 * self.w))
        self.eD = unidades.Dimensionless(self.rugosidad / self.Di)
        self.seccion = unidades.Area(pi / 4 * self.Di**2)
        self.A = unidades.Area(pi * self.De * self.L)
        self.V = unidades.Speed(self.entrada.Q / self.seccion)
        self.Re = Re(self.Di, self.V, self.rho, self.mu)
        K = 0
        for accesorio in self.kwargs["accesorios"]:
            K += accesorio[2] * accesorio[3]
        self.K = unidades.Dimensionless(K)
        self.DeltaP_h = unidades.Pressure(g * self.kwargs["h"] * self.rho)
        self.DeltaP_ac = unidades.Pressure(self.K * self.V**2 / 2 * self.rho)

        self.f = f_friccion(self.Re, self.eD)
        self.DeltaP_f = self.__DeltaP_friccion()
        #TODO:
        self.DeltaP_v = unidades.Pressure(0)

        self.DeltaP = unidades.Pressure(self.DeltaP_f + self.DeltaP_ac +
                                        self.DeltaP_h)
        self.DeltaP_100ft = self.DeltaP * 100 / self.L.ft
        self.Pout = unidades.Pressure(self.entrada.P - self.DeltaP)

        if self.kwargs["thermal"] == 0:
            self.Tout = self.entrada.T
            self.Heat = unidades.Power(0)
        else:
            cambiador = Heat_Exchanger()
            cambiador.calculo(entrada=self.entrada,
                              modo=self.kwargs["thermal"],
                              Heat=self.kwargs["Q"],
                              deltaP=self.DeltaP,
                              A=self.A,
                              U=self.kwargs["U"],
                              Text=self.kwargs["Text"])
            self.Tout = cambiador.salida[0].T
            self.Heat = cambiador.Heat

        self.salida = [self.entrada.clone(T=self.Tout, P=self.Pout)]
        self.Pin = self.entrada.P
        self.Pout = self.salida[0].P
예제 #3
0
    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)