Esempio n. 1
0
class Ui_Isoproperty(QtWidgets.QDialog):
    """Dialog to define input for isoproperty table calculations"""
    propiedades = [
        QtWidgets.QApplication.translate("pychemqt", "Temperature"),
        QtWidgets.QApplication.translate("pychemqt", "Pressure"),
        QtWidgets.QApplication.translate("pychemqt", "Density"),
        QtWidgets.QApplication.translate("pychemqt", "Volume"),
        QtWidgets.QApplication.translate("pychemqt", "Enthalpy"),
        QtWidgets.QApplication.translate("pychemqt", "Entropy"),
        QtWidgets.QApplication.translate("pychemqt", "Internal Energy")
    ]
    unidades = [
        unidades.Temperature, unidades.Pressure, unidades.Density,
        unidades.SpecificVolume, unidades.Enthalpy, unidades.SpecificHeat,
        unidades.Enthalpy, float
    ]
    keys = ["T", "P", "rho", "v", "h", "s", "u", "x"]

    def __init__(self, parent=None):
        super(Ui_Isoproperty, self).__init__(parent)
        self.setWindowTitle(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Specify Isoproperty Table"))
        layout = QtWidgets.QGridLayout(self)

        layout.addWidget(
            QtWidgets.QLabel(
                QtWidgets.QApplication.translate("pychemqt", "Hold constant")),
            1, 1)
        self.fix = QtWidgets.QComboBox()
        for propiedad in self.propiedades:
            self.fix.addItem(propiedad)
        self.fix.currentIndexChanged.connect(self.actualizarUI)
        layout.addWidget(self.fix, 1, 2)
        layout.addWidget(
            QtWidgets.QLabel(
                QtWidgets.QApplication.translate("pychemqt", "Vary")), 2, 1)
        self.vary = QtWidgets.QComboBox()
        self.vary.currentIndexChanged.connect(self.actualizarVariable)
        layout.addWidget(self.vary, 2, 2)

        line = QtWidgets.QFrame()
        line.setFrameShape(QtWidgets.QFrame.HLine)
        line.setFrameShadow(QtWidgets.QFrame.Sunken)
        layout.addWidget(line, 3, 1, 1, 2)

        self.labelFix = QtWidgets.QLabel()
        layout.addWidget(self.labelFix, 4, 1)
        self.variableFix = Entrada_con_unidades(float)
        layout.addWidget(self.variableFix, 4, 2)
        self.labelinicial = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Initial"))
        layout.addWidget(self.labelinicial, 5, 1)
        self.Inicial = Entrada_con_unidades(float)
        layout.addWidget(self.Inicial, 5, 2)
        self.labelfinal = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Final"))
        layout.addWidget(self.labelfinal, 6, 1)
        self.Final = Entrada_con_unidades(float)
        layout.addWidget(self.Final, 6, 2)
        self.labelincremento = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Increment"))
        layout.addWidget(self.labelincremento, 7, 1)
        self.Incremento = Entrada_con_unidades(float)
        layout.addWidget(self.Incremento, 7, 2)

        buttonBox = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel)
        buttonBox.accepted.connect(self.accept)
        buttonBox.rejected.connect(self.reject)
        layout.addWidget(buttonBox, 10, 1, 1, 2)

        self.actualizarUI(0)

    def actualizarUI(self, indice):
        self.vary.clear()
        propiedades = self.propiedades[:]
        if indice <= 1:
            propiedades.append(
                QtWidgets.QApplication.translate("pychemqt", "Quality"))
        del propiedades[indice]
        for propiedad in propiedades:
            self.vary.addItem(propiedad)
        self.labelFix.setText(self.propiedades[indice])
        self.variableFix.deleteLater()
        self.variableFix = Entrada_con_unidades(self.unidades[indice])
        self.layout().addWidget(self.variableFix, 4, 2)

    def actualizarVariable(self, indice):
        self.Inicial.deleteLater()
        self.Final.deleteLater()
        self.Incremento.deleteLater()
        if indice >= self.fix.currentIndex():
            indice += 1
        self.Inicial = Entrada_con_unidades(self.unidades[indice])
        self.Final = Entrada_con_unidades(self.unidades[indice])
        if self.unidades[indice] == unidades.Temperature:
            self.Incremento = Entrada_con_unidades(unidades.DeltaT)
        elif self.unidades[indice] == unidades.Pressure:
            self.Incremento = Entrada_con_unidades(unidades.DeltaP)
        else:
            self.Incremento = Entrada_con_unidades(self.unidades[indice])
        self.layout().addWidget(self.Inicial, 5, 2)
        self.layout().addWidget(self.Final, 6, 2)
        self.layout().addWidget(self.Incremento, 7, 2)
Esempio n. 2
0
class Ui_Saturation(QtWidgets.QDialog):
    """Dialog to define input for a two-phase saturation table calculation"""
    def __init__(self, method=None, fluid=None, parent=None):
        """
        Parameters
        ----------
        method: str
            name of method of calculation, meos, coolprop or refprop
        fluid: int
            Index of fluid in list
        """
        super(Ui_Saturation, self).__init__(parent)
        self.setWindowTitle(
            QtWidgets.QApplication.translate("pychemqt", "Saturation Table"))
        layout = QtWidgets.QGridLayout(self)

        gboxType = QtWidgets.QGroupBox(
            QtWidgets.QApplication.translate("pychemqt", "Interphase"))
        layout.addWidget(gboxType, 1, 1, 1, 2)
        layoutg1 = QtWidgets.QGridLayout(gboxType)
        self.VL = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Vapor-Liquid (boiling line)"))
        layoutg1.addWidget(self.VL, 1, 1)
        self.SL = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Solid-Liquid (melting line"))
        layoutg1.addWidget(self.SL, 2, 1)
        self.SV = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Solid-Vapor (Sublimation line)"))
        layoutg1.addWidget(self.SV, 3, 1)

        groupboxVariar = QtWidgets.QGroupBox(
            QtWidgets.QApplication.translate("pychemqt", "Change"))
        layout.addWidget(groupboxVariar, 1, 3, 1, 2)
        layoutg2 = QtWidgets.QGridLayout(groupboxVariar)
        self.VariarTemperatura = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt", "Temperature"))
        self.VariarTemperatura.toggled.connect(self.updateVar)
        layoutg2.addWidget(self.VariarTemperatura, 1, 1)
        self.VariarPresion = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt", "Pressure"))
        self.VariarPresion.toggled.connect(self.updateVar)
        layoutg2.addWidget(self.VariarPresion, 2, 1)
        self.VariarXconT = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Quality at fixed temperature"))
        self.VariarXconT.toggled.connect(self.updateVar)
        layoutg2.addWidget(self.VariarXconT, 3, 1)
        self.VariarXconP = QtWidgets.QRadioButton(
            QtWidgets.QApplication.translate("pychemqt",
                                             "Quality at fixed pressure"))
        self.VariarXconP.toggled.connect(self.updateVar)
        layoutg2.addWidget(self.VariarXconP, 4, 1)

        line = QtWidgets.QFrame()
        line.setFrameShape(QtWidgets.QFrame.HLine)
        line.setFrameShadow(QtWidgets.QFrame.Sunken)
        layout.addWidget(line, 2, 1, 1, 4)

        self.labelFix = QtWidgets.QLabel()
        layout.addWidget(self.labelFix, 4, 3)
        self.variableFix = Entrada_con_unidades(float)
        layout.addWidget(self.variableFix, 4, 4)
        self.labelinicial = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Initial"))
        layout.addWidget(self.labelinicial, 4, 1)
        self.Inicial = Entrada_con_unidades(float)
        layout.addWidget(self.Inicial, 4, 2)
        self.labelfinal = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Final"))
        layout.addWidget(self.labelfinal, 5, 1)
        self.Final = Entrada_con_unidades(float)
        layout.addWidget(self.Final, 5, 2)
        self.labelincremento = QtWidgets.QLabel(
            QtWidgets.QApplication.translate("pychemqt", "Increment"))
        layout.addWidget(self.labelincremento, 6, 1)
        self.Incremento = Entrada_con_unidades(float)
        layout.addWidget(self.Incremento, 6, 2)

        buttonBox = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel)
        buttonBox.accepted.connect(self.accept)
        buttonBox.rejected.connect(self.reject)
        layout.addWidget(buttonBox, 10, 1, 1, 4)

        if method:
            self.fluido = getClassFluid(method, fluid)
            if isinstance(self.fluido,
                          meos.MEoS) and (self.fluido._Melting_Pressure !=
                                          meos.MEoS._Melting_Pressure
                                          or self.fluido._melting):
                self.SL.setEnabled(True)
            else:
                self.SL.setEnabled(False)

            if isinstance(self.fluido,
                          meos.MEoS) and (self.fluido._sublimation
                                          or self.fluido._Sublimation_Pressure
                                          != meos.MEoS._Sublimation_Pressure):
                self.SV.setEnabled(True)
            else:
                self.SV.setEnabled(False)

        self.VL.setChecked(True)
        self.VariarTemperatura.setChecked(True)
        self.updateVary()
        self.VL.toggled.connect(self.updateVary)

    def updateVary(self):
        """Update state for option to choose for properties to change"""
        self.VariarXconP.setEnabled(self.VL.isChecked())
        self.VariarXconT.setEnabled(self.VL.isChecked())
        self.VariarTemperatura.setChecked(not self.VL.isChecked())

    def updateVar(self, bool):
        """Update input values units and text"""
        if bool:
            # Select initial values
            fix, inicial, final, step = 0, 0, 0, 0
            if self.VL.isChecked():
                if self.sender() == self.VariarXconT:
                    fix = ceil((self.fluido.Tc - self.fluido.Tt) / 2)
                    inicial = 0
                    final = 1
                    step = 0.1
                elif self.sender() == self.VariarXconP:
                    fix = ceil(self.fluido.Pc / 2)
                    inicial = 0
                    final = 1
                    step = 0.1
                elif self.sender() == self.VariarTemperatura:
                    inicial = ceil(self.fluido.Tt)
                    final = floor(self.fluido.Tc)
                    step = 1.

            self.Inicial.deleteLater()
            self.Final.deleteLater()
            self.Incremento.deleteLater()
            if self.sender() == self.VariarXconT:
                self.labelFix.setVisible(True)
                self.labelFix.setText(unidades.Temperature.__title__)
                self.variableFix.deleteLater()
                self.variableFix = Entrada_con_unidades(unidades.Temperature,
                                                        value=fix)
                self.layout().addWidget(self.variableFix, 4, 4)
                unidadVariable = float
                self.labelinicial.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Initial quality"))
                self.labelfinal.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Final quality"))

            elif self.sender() == self.VariarXconP:
                self.labelFix.setVisible(True)
                self.labelFix.setText(unidades.Pressure.__title__)
                self.variableFix.deleteLater()
                self.variableFix = Entrada_con_unidades(unidades.Pressure,
                                                        value=fix)
                self.layout().addWidget(self.variableFix, 4, 4)
                unidadVariable = float
                self.labelinicial.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Initial quality"))
                self.labelfinal.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Final quality"))

            elif self.sender() == self.VariarTemperatura:
                self.labelFix.setVisible(False)
                self.variableFix.setVisible(False)
                unidadVariable = unidades.Temperature
                self.labelinicial.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Initial temperature"))
                self.labelfinal.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Final temperature"))

            else:
                self.labelFix.setVisible(False)
                self.variableFix.setVisible(False)
                unidadVariable = unidades.Pressure
                self.labelinicial.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Initial pressure"))
                self.labelfinal.setText(
                    QtWidgets.QApplication.translate("pychemqt",
                                                     "Final pressure"))

            self.Inicial = Entrada_con_unidades(unidadVariable, value=inicial)
            self.Final = Entrada_con_unidades(unidadVariable, value=final)
            if unidadVariable == unidades.Temperature:
                unidadDelta = unidades.DeltaT
            elif unidadVariable == unidades.Pressure:
                unidadDelta = unidades.DeltaP
            else:
                unidadDelta = unidadVariable

            self.Incremento = Entrada_con_unidades(unidadDelta, value=step)
            self.layout().addWidget(self.Inicial, 4, 2)
            self.layout().addWidget(self.Final, 5, 2)
            self.layout().addWidget(self.Incremento, 6, 2)