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)
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)