def curveIndexChanged(self, index): """Show the composition unit appropiated to the new curve selected""" if index == 3: header = ["wt.%", "Tb, " + Temperature.text()] else: header = ["Vol.%", "Tb, " + Temperature.text()] self.curvaDestilacion.tabla.setHorizontalHeaderLabels(header)
def config(self, config): self.ax.set_autoscale_on(False) chart = config.getboolean("Psychr", "chart") xlabel = "Tdb, " + Temperature.text() ylabel = "%s, %s/%s" % ( QtWidgets.QApplication.translate("pychemqt", "Absolute humidity"), Mass.text(), Mass.text()) tmin = Temperature(config.getfloat("Psychr", "isotdbStart")).config() tmax = Temperature(config.getfloat("Psychr", "isotdbEnd")).config() wmin = config.getfloat("Psychr", "isowStart") wmax = config.getfloat("Psychr", "isowEnd") if chart: self.ax.set_xlabel(xlabel, size="large") self.ax.set_ylabel(ylabel, size="large") self.ax.set_xlim(tmin, tmax) self.ax.set_ylim(wmin, wmax) self.ax.yaxis.set_ticks_position("right") self.ax.yaxis.set_label_position("right") self.ax.figure.subplots_adjust(left=0.05, top=0.95) else: self.ax.set_xlabel(ylabel, size="large") self.ax.set_ylabel(xlabel, size="large") self.ax.set_xlim(wmin, wmax) self.ax.set_ylim(tmin, tmax) self.ax.xaxis.set_ticks_position("top") self.ax.xaxis.set_label_position("top") self.ax.figure.subplots_adjust(right=0.95, bottom=0.05) kw = formatLine(config, "Psychr", "crux") self.lx = self.ax.axhline(**kw) # the horiz line self.ly = self.ax.axvline(**kw) # the vert line
def config(self, config): self.ax.set_autoscale_on(False) chart = config.getboolean("Psychr", "chart") xlabel = "Tdb, " + Temperature.text() ylabel = "%s, %s/%s" % ( QtWidgets.QApplication.translate("pychemqt", "Absolute humidity"), Mass.text(), Mass.text()) tmin = Temperature(config.getfloat("Psychr", "isotdbStart")).config() tmax = Temperature(config.getfloat("Psychr", "isotdbEnd")).config() wmin = Temperature(config.getfloat("Psychr", "isowStart")).config() wmax = Temperature(config.getfloat("Psychr", "isowEnd")).config() if chart: self.ax.set_xlabel(xlabel, size="large") self.ax.set_ylabel(ylabel, size="large") self.ax.set_xlim(tmin, tmax) self.ax.set_ylim(wmin, wmax) self.ax.yaxis.set_ticks_position("right") self.ax.yaxis.set_label_position("right") self.ax.figure.subplots_adjust(left=0.05, top=0.95) else: self.ax.set_xlabel(ylabel, size="large") self.ax.set_ylabel(xlabel, size="large") self.ax.set_xlim(wmin, wmax) self.ax.set_ylim(tmin, tmax) self.ax.xaxis.set_ticks_position("top") self.ax.xaxis.set_label_position("top") self.ax.figure.subplots_adjust(right=0.95, bottom=0.05) kw = formatLine(config, "Psychr", "crux") self.lx = self.ax.axhline(**kw) # the horiz line self.ly = self.ax.axvline(**kw) # the vert line
def plot(self): """Plot chart""" self.plt.clearPointData() self.plt.ax.clear() chart = self.Preferences.getboolean("Psychr", "chart") self.plt.config(self.Preferences) filename = conf_dir+"%s_%i.json" % ( PsychroState().__class__.__name__, self.inputs.P.value) if os.path.isfile(filename): with open(filename, "r") as archivo: data = json.load(archivo) self.status.setText(QtWidgets.QApplication.translate( "pychemqt", "Loading cached data...")) QtWidgets.QApplication.processEvents() else: self.progressBar.setVisible(True) self.status.setText(QtWidgets.QApplication.translate( "pychemqt", "Calculating data...")) QtWidgets.QApplication.processEvents() data = PsychroState.calculatePlot(self) with open(filename, "w") as file: json.dump(data, file, indent=4) self.progressBar.setVisible(False) self.status.setText( QtWidgets.QApplication.translate("pychemqt", "Plotting...")) QtWidgets.QApplication.processEvents() # Saturation line t = [Temperature(ti).config() for ti in data["t"]] Hs = data["Hs"] format = formatLine(self.Preferences, "Psychr", "saturation") if chart: self.plt.plot(t, Hs, **format) else: self.plt.plot(Hs, t, **format) # Iso dew bulb temperaure lines, vertial lines in normal h-Tdb plot, # vertical in mollier diagram format = formatLine(self.Preferences, "Psychr", "isotdb") for i, T in enumerate(t): if chart: self.plt.plot([T, T], [0, Hs[i]], **format) else: self.plt.plot([0, Hs[i]], [T, T], **format) # Iso humidity lines, horizontal lines in normal h-Tdb plot, vertical # in mollier diagram H = data["H"] th = data["th"] tm = Temperature(self.Preferences.getfloat("Psychr", "isotdbEnd")) format = formatLine(self.Preferences, "Psychr", "isow") for i, H in enumerate(H): ts = Temperature(th[i]).config() if chart: self.plt.plot([ts, tm.config()], [H, H], **format) else: self.plt.plot([H, H], [ts, tm.config()], **format) # Iso relative humidity lines format = formatLine(self.Preferences, "Psychr", "isohr") for Hr, H0 in list(data["Hr"].items()): if chart: self.plt.plot(t, H0, **format) self.drawlabel("isohr", t, H0, Hr, "%") else: self.plt.plot(H0, t, **format) self.drawlabel("isohr", H0, t, Hr, "%") # Iso wet bulb temperature lines format = formatLine(self.Preferences, "Psychr", "isotwb") for T, (H, Tw) in list(data["Twb"].items()): value = Temperature(T).config() Tw_conf = [Temperature(Twi).config() for Twi in Tw] txt = Temperature.text() if chart: self.plt.plot(Tw_conf, H, **format) self.drawlabel("isotwb", Tw_conf, H, value, txt) else: self.plt.plot(H, Tw_conf, **format) self.drawlabel("isotwb", H, Tw_conf, value, txt) # Isochor lines format = formatLine(self.Preferences, "Psychr", "isochor") for v, (Td, H) in list(data["v"].items()): value = SpecificVolume(v).config() Td_conf = [Temperature(Tdi).config() for Tdi in Td] txt = SpecificVolume.text() if chart: self.plt.plot(Td_conf, H, **format) self.drawlabel("isochor", Td_conf, H, value, txt) else: self.plt.plot(H, Td_conf, **format) self.drawlabel("isochor", H, Td_conf, value, txt) if self.plt.state: self.plt.createCrux(self.plt.state, chart) self.plt.draw() self.status.setText("%s %s" % ( QtWidgets.QApplication.translate("pychemqt", "Using"), PsychroState().__class__.__name__[3:]))
def __init__(self, parent=None): super(Definicion_Petro, self).__init__(parent) self.setWindowTitle(QtGui.QApplication.translate( "pychemqt", "Petrol component definition")) layout = QtGui.QGridLayout(self) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Name")), 1, 1) self.nombre = QtGui.QLineEdit() self.nombre.textChanged.connect(partial(self.changeParams, "name")) layout.addWidget(self.nombre, 1, 2, 1, 4) layout.addItem(QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed), 2, 1, 1, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Boiling point")), 3, 1) self.Tb = Entrada_con_unidades(Temperature) self.Tb.valueChanged.connect(partial(self.changeParams, "Tb")) layout.addWidget(self.Tb, 3, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Molecular Weight")), 4, 1) self.M = Entrada_con_unidades(float, textounidad="g/mol") self.M.valueChanged.connect(partial(self.changeParams, "M")) layout.addWidget(self.M, 4, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Specific Gravity")), 5, 1) self.SG = Entrada_con_unidades(float) self.SG.valueChanged.connect(partial(self.changeParams, "SG")) layout.addWidget(self.SG, 5, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "API gravity")), 6, 1) self.API = Entrada_con_unidades(float) self.API.valueChanged.connect(partial(self.changeParams, "API")) layout.addWidget(self.API, 6, 2) layout.addWidget(QtGui.QLabel("K watson:"), 7, 1) self.Kw = Entrada_con_unidades(float) self.Kw.valueChanged.connect(partial(self.changeParams, "Kw")) layout.addWidget(self.Kw, 7, 2) layout.addWidget(QtGui.QLabel("C/H:"), 8, 1) self.CH = Entrada_con_unidades(float) self.CH.valueChanged.connect(partial(self.changeParams, "CH")) layout.addWidget(self.CH, 8, 2) layout.addWidget(QtGui.QLabel(u"ν<sub>100F</sub>:"), 9, 1) self.v100 = Entrada_con_unidades(Diffusivity) self.v100.valueChanged.connect(partial(self.changeParams, "v100")) layout.addWidget(self.v100, 9, 2) layout.addWidget(QtGui.QLabel(u"ν<sub>210F</sub>:"), 10, 1) self.v210 = Entrada_con_unidades(Diffusivity) self.v210.valueChanged.connect(partial(self.changeParams, "v210")) layout.addWidget(self.v210, 10, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Refraction index")), 11, 1) self.n = Entrada_con_unidades(float) self.n.valueChanged.connect(partial(self.changeParams, "n")) layout.addWidget(self.n, 11, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Huang parameter")), 12, 1) self.I = Entrada_con_unidades(float) self.I.valueChanged.connect(partial(self.changeParams, "I")) layout.addWidget(self.I, 12, 2) layout.addWidget(QtGui.QLabel("%S"), 13, 1) self.S = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.S.valueChanged.connect(partial(self.changeParams, "S")) layout.addWidget(self.S, 13, 2) layout.addWidget(QtGui.QLabel("%H"), 14, 1) self.H = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.H.valueChanged.connect(partial(self.changeParams, "H")) layout.addWidget(self.H, 14, 2) layout.addWidget(QtGui.QLabel("%N"), 15, 1) self.N = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.N.valueChanged.connect(partial(self.changeParams, "N")) layout.addWidget(self.N, 15, 2) layout.addWidget(QtGui.QLabel(QtGui.QApplication.translate( "pychemqt", "Carbons number")), 19, 1) self.carbonos = Entrada_con_unidades(int, width=50, spinbox=True, step=1, start=7, min=5, max=100) self.N.valueChanged.connect(partial(self.changeParams, "Nc")) layout.addWidget(self.carbonos, 19, 2) layout.addItem(QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 3, 3, 15, 1) self.checkCurva = QtGui.QCheckBox(QtGui.QApplication.translate( "pychemqt", "Define destillation curve")) layout.addWidget(self.checkCurva, 3, 4, 1, 2) self.tipoCurva = QtGui.QComboBox() self.tipoCurva.addItem("ASTM D86") self.tipoCurva.addItem("TBP") self.tipoCurva.addItem("EFV") self.tipoCurva.addItem("ASTM D1186") self.tipoCurva.addItem("ASTM D2887 (SD)") self.tipoCurva.setEnabled(False) layout.addWidget(self.tipoCurva, 4, 4, 1, 2) self.textoPresion = QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Pressure")) self.textoPresion.setEnabled(False) layout.addWidget(self.textoPresion, 5, 4) self.presion = Entrada_con_unidades(Pressure, value=101325.) self.presion.setEnabled(False) self.presion.valueChanged.connect(partial(self.changeParams, "P_dist")) layout.addWidget(self.presion, 5, 5) self.curvaDestilacion = Tabla( 2, filas=1, horizontalHeader=["%dist", "Tb, "+Temperature.text()], verticalHeader=False, dinamica=True) self.curvaDestilacion.setEnabled(False) self.curvaDestilacion.editingFinished.connect(self.changeCurva) layout.addWidget(self.curvaDestilacion, 6, 4, 13, 2) self.checkBlend = QtGui.QCheckBox(QtGui.QApplication.translate( "pychemqt", "Blend if its necessary")) layout.addWidget(self.checkBlend, 19, 4, 1, 2) self.checkCurva.toggled.connect(self.tipoCurva.setEnabled) self.checkCurva.toggled.connect(self.presion.setEnabled) self.checkCurva.toggled.connect(self.textoPresion.setEnabled) self.checkCurva.toggled.connect(self.curvaDestilacion.setEnabled) layout.addItem(QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed), 20, 1, 1, 2) self.checkCrudo = QtGui.QCheckBox(QtGui.QApplication.translate( "pychemqt", "Use petrol fraction from list")) self.checkCrudo.toggled.connect(self.changeUnknown) layout.addWidget(self.checkCrudo, 21, 1, 1, 2) self.crudo = QtGui.QComboBox() self.crudo.setEnabled(False) self.crudo.addItem("") for i in crudo[1:]: self.crudo.addItem("%s (%s) API: %s %S: %s" % (i[0], i[1], i[3], i[4])) # i[0]+" ("+i[1]+")"+" API: "+str(i[3])+" %S: "+str(i[4])) self.crudo.currentIndexChanged.connect(partial( self.changeParams, "indice")) layout.addWidget(self.crudo, 23, 1, 1, 5) layout.addWidget(QtGui.QLabel("Pseudo C+"), 24, 1) self.Cplus = Entrada_con_unidades(int, width=50, spinbox=True, step=1, min=6) self.Cplus.valueChanged.connect(partial(self.changeParams, "Cplus")) layout.addWidget(self.Cplus, 24, 2) self.checkCrudo.toggled.connect(self.crudo.setEnabled) self.checkCrudo.toggled.connect(self.Cplus.setEnabled) layout.addItem(QtGui.QSpacerItem(5, 5, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 29, 1, 1, 2) newComponent.loadUI(self) self.Petroleo = Petroleo() self.Crudo = Crudo()
def __init__(self, parent=None): super(Definicion_Petro, self).__init__(parent) self.setWindowTitle( QtGui.QApplication.translate("pychemqt", "Petrol component definition")) layout = QtGui.QGridLayout(self) layout.addWidget( QtGui.QLabel(QtGui.QApplication.translate("pychemqt", "Name")), 1, 1) self.nombre = QtGui.QLineEdit() self.nombre.textChanged.connect(partial(self.changeParams, "name")) layout.addWidget(self.nombre, 1, 2, 1, 4) layout.addItem( QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed), 2, 1, 1, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Boiling point")), 3, 1) self.Tb = Entrada_con_unidades(Temperature) self.Tb.valueChanged.connect(partial(self.changeParams, "Tb")) layout.addWidget(self.Tb, 3, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Molecular Weight")), 4, 1) self.M = Entrada_con_unidades(float, textounidad="g/mol") self.M.valueChanged.connect(partial(self.changeParams, "M")) layout.addWidget(self.M, 4, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Specific Gravity")), 5, 1) self.SG = Entrada_con_unidades(float) self.SG.valueChanged.connect(partial(self.changeParams, "SG")) layout.addWidget(self.SG, 5, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "API gravity")), 6, 1) self.API = Entrada_con_unidades(float) self.API.valueChanged.connect(partial(self.changeParams, "API")) layout.addWidget(self.API, 6, 2) layout.addWidget(QtGui.QLabel("K watson:"), 7, 1) self.Kw = Entrada_con_unidades(float) self.Kw.valueChanged.connect(partial(self.changeParams, "Kw")) layout.addWidget(self.Kw, 7, 2) layout.addWidget(QtGui.QLabel("C/H:"), 8, 1) self.CH = Entrada_con_unidades(float) self.CH.valueChanged.connect(partial(self.changeParams, "CH")) layout.addWidget(self.CH, 8, 2) layout.addWidget(QtGui.QLabel(u"ν<sub>100F</sub>:"), 9, 1) self.v100 = Entrada_con_unidades(Diffusivity) self.v100.valueChanged.connect(partial(self.changeParams, "v100")) layout.addWidget(self.v100, 9, 2) layout.addWidget(QtGui.QLabel(u"ν<sub>210F</sub>:"), 10, 1) self.v210 = Entrada_con_unidades(Diffusivity) self.v210.valueChanged.connect(partial(self.changeParams, "v210")) layout.addWidget(self.v210, 10, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Refraction index")), 11, 1) self.n = Entrada_con_unidades(float) self.n.valueChanged.connect(partial(self.changeParams, "n")) layout.addWidget(self.n, 11, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Huang parameter")), 12, 1) self.I = Entrada_con_unidades(float) self.I.valueChanged.connect(partial(self.changeParams, "I")) layout.addWidget(self.I, 12, 2) layout.addWidget(QtGui.QLabel("%S"), 13, 1) self.S = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.S.valueChanged.connect(partial(self.changeParams, "S")) layout.addWidget(self.S, 13, 2) layout.addWidget(QtGui.QLabel("%H"), 14, 1) self.H = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.H.valueChanged.connect(partial(self.changeParams, "H")) layout.addWidget(self.H, 14, 2) layout.addWidget(QtGui.QLabel("%N"), 15, 1) self.N = Entrada_con_unidades(float, spinbox=True, step=1.0, max=100) self.N.valueChanged.connect(partial(self.changeParams, "N")) layout.addWidget(self.N, 15, 2) layout.addWidget( QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Carbons number")), 19, 1) self.carbonos = Entrada_con_unidades(int, width=50, spinbox=True, step=1, start=7, min=5, max=100) self.N.valueChanged.connect(partial(self.changeParams, "Nc")) layout.addWidget(self.carbonos, 19, 2) layout.addItem( QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 3, 3, 15, 1) self.checkCurva = QtGui.QCheckBox( QtGui.QApplication.translate("pychemqt", "Define destillation curve")) layout.addWidget(self.checkCurva, 3, 4, 1, 2) self.tipoCurva = QtGui.QComboBox() self.tipoCurva.addItem("ASTM D86") self.tipoCurva.addItem("TBP") self.tipoCurva.addItem("EFV") self.tipoCurva.addItem("ASTM D1186") self.tipoCurva.addItem("ASTM D2887 (SD)") self.tipoCurva.setEnabled(False) layout.addWidget(self.tipoCurva, 4, 4, 1, 2) self.textoPresion = QtGui.QLabel( QtGui.QApplication.translate("pychemqt", "Pressure")) self.textoPresion.setEnabled(False) layout.addWidget(self.textoPresion, 5, 4) self.presion = Entrada_con_unidades(Pressure, value=101325.) self.presion.setEnabled(False) self.presion.valueChanged.connect(partial(self.changeParams, "P_dist")) layout.addWidget(self.presion, 5, 5) self.curvaDestilacion = Tabla( 2, filas=1, horizontalHeader=["%dist", "Tb, " + Temperature.text()], verticalHeader=False, dinamica=True) self.curvaDestilacion.setEnabled(False) self.curvaDestilacion.editingFinished.connect(self.changeCurva) layout.addWidget(self.curvaDestilacion, 6, 4, 13, 2) self.checkBlend = QtGui.QCheckBox( QtGui.QApplication.translate("pychemqt", "Blend if its necessary")) layout.addWidget(self.checkBlend, 19, 4, 1, 2) self.checkCurva.toggled.connect(self.tipoCurva.setEnabled) self.checkCurva.toggled.connect(self.presion.setEnabled) self.checkCurva.toggled.connect(self.textoPresion.setEnabled) self.checkCurva.toggled.connect(self.curvaDestilacion.setEnabled) layout.addItem( QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed), 20, 1, 1, 2) self.checkCrudo = QtGui.QCheckBox( QtGui.QApplication.translate("pychemqt", "Use petrol fraction from list")) self.checkCrudo.toggled.connect(self.changeUnknown) layout.addWidget(self.checkCrudo, 21, 1, 1, 2) self.crudo = QtGui.QComboBox() self.crudo.setEnabled(False) self.crudo.addItem("") for i in crudo[1:]: self.crudo.addItem("%s (%s) API: %s %S: %s" % (i[0], i[1], i[3], i[4])) # i[0]+" ("+i[1]+")"+" API: "+str(i[3])+" %S: "+str(i[4])) self.crudo.currentIndexChanged.connect( partial(self.changeParams, "indice")) layout.addWidget(self.crudo, 23, 1, 1, 5) layout.addWidget(QtGui.QLabel("Pseudo C+"), 24, 1) self.Cplus = Entrada_con_unidades(int, width=50, spinbox=True, step=1, min=6) self.Cplus.valueChanged.connect(partial(self.changeParams, "Cplus")) layout.addWidget(self.Cplus, 24, 2) self.checkCrudo.toggled.connect(self.crudo.setEnabled) self.checkCrudo.toggled.connect(self.Cplus.setEnabled) layout.addItem( QtGui.QSpacerItem(5, 5, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 29, 1, 1, 2) newComponent.loadUI(self) self.Petroleo = Petroleo() self.Crudo = Crudo()
def plot(self): """Plot chart""" self.plt.clearPointData() self.plt.ax.clear() chart = self.Preferences.getboolean("Psychr", "chart") self.plt.config(self.Preferences) filename = conf_dir+"%s_%i.pkl" % ( PsychroState().__class__.__name__, self.inputs.P.value) if os.path.isfile(filename): with open(filename, "rb") as archivo: data = pickle.load(archivo) self.status.setText(QtWidgets.QApplication.translate( "pychemqt", "Loading cached data...")) QtWidgets.QApplication.processEvents() else: self.progressBar.setVisible(True) self.status.setText(QtWidgets.QApplication.translate( "pychemqt", "Calculating data...")) QtWidgets.QApplication.processEvents() data = PsychroState.calculatePlot(self) pickle.dump(data, open(filename, "wb")) self.progressBar.setVisible(False) self.status.setText( QtWidgets.QApplication.translate("pychemqt", "Plotting...")) QtWidgets.QApplication.processEvents() # Saturation line t = [Temperature(ti).config() for ti in data["t"]] Hs = data["Hs"] format = formatLine(self.Preferences, "Psychr", "saturation") if chart: self.plt.plot(t, Hs, **format) else: self.plt.plot(Hs, t, **format) # Iso dew bulb temperaure lines, vertial lines in normal h-Tdb plot, # vertical in mollier diagram format = formatLine(self.Preferences, "Psychr", "isotdb") for i, T in enumerate(t): if chart: self.plt.plot([T, T], [0, Hs[i]], **format) else: self.plt.plot([0, Hs[i]], [T, T], **format) # Iso humidity lines, horizontal lines in normal h-Tdb plot, vertical # in mollier diagram H = data["H"] th = data["th"] tm = Temperature(self.Preferences.getfloat("Psychr", "isotdbEnd")) format = formatLine(self.Preferences, "Psychr", "isow") for i, H in enumerate(H): if chart: self.plt.plot([th[i], tm.config()], [H, H], **format) else: self.plt.plot([H, H], [th[i], tm.config()], **format) # Iso relative humidity lines format = formatLine(self.Preferences, "Psychr", "isohr") for Hr, H0 in list(data["Hr"].items()): if chart: self.plt.plot(t, H0, **format) self.drawlabel("isohr", t, H0, Hr, "%") else: self.plt.plot(H0, t, **format) self.drawlabel("isohr", H0, t, Hr, "%") # Iso wet bulb temperature lines format = formatLine(self.Preferences, "Psychr", "isotwb") for T, (H, Tw) in list(data["Twb"].items()): value = Temperature(T).config() txt = Temperature.text() if chart: self.plt.plot(Tw, H, **format) self.drawlabel("isotwb", Tw, H, value, txt) else: self.plt.plot(H, Tw, **format) self.drawlabel("isotwb", H, Tw, value, txt) # Isochor lines format = formatLine(self.Preferences, "Psychr", "isochor") for v, (Td, H) in list(data["v"].items()): value = SpecificVolume(v).config() txt = SpecificVolume.text() if chart: self.plt.plot(Td, H, **format) self.drawlabel("isochor", Td, H, value, txt) else: self.plt.plot(H, Td, **format) self.drawlabel("isochor", H, Td, value, txt) if self.plt.state: self.plt.createCrux(self.plt.state, chart) self.plt.draw() self.status.setText("%s %s" % ( QtWidgets.QApplication.translate("pychemqt", "Using"), PsychroState().__class__.__name__[3:]))