diff options
Diffstat (limited to 'DockWidgetMatStm.py')
-rw-r--r-- | DockWidgetMatStm.py | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/DockWidgetMatStm.py b/DockWidgetMatStm.py new file mode 100644 index 0000000..76ecb11 --- /dev/null +++ b/DockWidgetMatStm.py @@ -0,0 +1,332 @@ +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * +from PyQt5.QtGui import * +from PyQt5.uic import loadUiType +import pandas as pd +from functools import partial +from component_selector import * +from collections import defaultdict +from Graphics import * + +ui_dialog,_ = loadUiType('DockWidgetMatStm.ui') + +class DockWidgetMatStm(QDockWidget,ui_dialog): + + def __init__(self,name,comptype,obj,container,parent=None): + QDockWidget.__init__(self,parent) + self.setupUi(self) + self.setWindowTitle(obj.name) + self.name=name + self.obj=obj + self.type = comptype + self.inputdict = {} + self.x_pclist = [] + self.modes() + self.comboBox.currentIndexChanged.connect(self.modeSelection) + + print("constructor ", self.inputdict) + self.pushButton_2.clicked.connect(self.param) + self.dict = {} + + self.nameType = None + self.container = container + + header = QTreeWidgetItem(['Compound','Value','Unit']) + self.mTreeWidget.setHeaderItem(header) + self.lTreeWidget.setHeaderItem(header) + self.vTreeWidget.setHeaderItem(header) + + self.mTreeWidget.itemClicked.connect(lambda : self.printer(self.mTreeWidget.currentItem())) + self.lTreeWidget.itemClicked.connect(lambda : self.printer(self.lTreeWidget.currentItem())) + self.vTreeWidget.itemClicked.connect(lambda : self.printer(self.vTreeWidget.currentItem())) + + + def printer(self, treeItem ): + foldername = treeItem.text(0) + comment = treeItem.text(1) + data = treeItem.text(2) + print(foldername , ': ' , comment , ' (' + data + ')') + + # input data tab + def modes(self): + modesList = self.obj.modesList + if(modesList): + for j in modesList: + self.comboBox.addItem(str(j)) + self.modeSelection() + else: + self.inputdict= {} + self.inputdict = self.obj.paramgetter() + self.inputparamslist() + + def modeSelection(self): + self.inputdict= {} + for i in reversed(range(self.formLayout.count())): + self.formLayout.removeRow(i) + self.inputdict = self.obj.paramgetter(self.comboBox.currentText()) + self.inputparamslist() + + def inputparamslist(self): + try: + print("inputparamslist ", self.inputdict) + for c,i in enumerate(self.inputdict): + if(i=="thermoPackage"): + print("thermo1") + combo = QComboBox() + self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] + print("thermo2") + for j in self.lines: + combo.addItem(str(j)) + lay = QGridLayout() + lay.addWidget(QLabel(i+":"), 0,0, alignment=Qt.AlignLeft) + lay.addWidget(combo, 0, 1, alignment=Qt.AlignRight) + self.formLayout.addRow(lay) + self.inputdict[i] = combo + print("thermo") + elif(i=="condType"): + combo = QComboBox() + self.lines = ["Total","Partial"] + for j in self.lines: + combo.addItem(str(j)) + lay = QGridLayout() + lay.addWidget(QLabel("Condensor Type :"+":"), 0, 0, alignment=Qt.AlignLeft) + lay.addWidget(combo, 0, 1, alignment=Qt.AlignCenter) + self.formLayout.addRow(lay) + self.inputdict[i] = combo + elif(i=="x_pc"): + noc = len(compound_selected) + print(noc) + self.x_pclist.clear() + + gp = QGroupBox("Mole Fractions") + lay = QGridLayout() + for j in range(noc): + l = QLineEdit() + if self.inputdict[i] != '': + l.setText(str(self.obj.variables[compound_selected[j]]['value'])) + self.inputdict[i] = "x_pc" + lay.addWidget(QLabel(str(compound_selected[j])+":"),j,0, alignment=Qt.AlignLeft) + lay.addWidget(l,j,1, alignment=Qt.AlignCenter) + self.x_pclist.append(l) + + gp.setLayout(lay) + self.formLayout.addRow(gp) + else: + print("elseloop") + l = QLineEdit() + if self.inputdict[i] != None: + l.setText(str(self.inputdict[i])) + lay = QGridLayout() + lay.addWidget(QLabel(i+":"),0,0, alignment=Qt.AlignLeft) + lay.addWidget(l,0,1, alignment=Qt.AlignCenter) + if(i != 'MolFlow'): + lay.addWidget(QLabel(self.obj.variables[i]['unit']),0,2, alignment=Qt.AlignCenter) + else: + lay.addWidget(QLabel("mol/s"),0,2, alignment=Qt.AlignCenter) + self.formLayout.addRow(lay) + self.inputdict[i] = l + + except Exception as e: + print(e) + + def Show_Error(self): + QMessageBox.about(self, 'Important', "Please fill all fields with data") + + def param(self): + try: + self.dict={} + + print("param.inputdict ", self.inputdict) + for i in self.inputdict: + if(i=="thermoPackage"): + if (self.inputdict[i].currentText()): + self.dict[i] = self.inputdict[i].currentText() + else: + self.Show_Error() + break + elif(i=="condType"): + if (self.inputdict[i].currentText()): + self.dict[i] = self.inputdict[i].currentText() + else: + self.Show_Error() + break + elif(i =="x_pc"): + l=[] + mf = [] + total_moles = 0 + for mol_frac in self.x_pclist: + if (mol_frac.text()): + l.append(mol_frac.text()) + total_moles += float(l[-1]) + else: + self.Show_Error() + break + for c in range(len(compound_selected)): + mf.append(str(float(l[c])/total_moles)) + self.obj.variables[compound_selected[c]]['value'] = str(float(l[c])/total_moles) + self.x_pclist[c].setText(mf[-1]) + self.dict[i] = ",".join(mf) + else: + if (self.inputdict[i].text()): + self.dict[i] = self.inputdict[i].text() + else: + print(self.inputdict[i].text()) + self.Show_Error() + break + + print("param ", self.dict) + self.obj.paramsetter(self.dict) + self.hide() + + except Exception as e: + print(e) + + + @staticmethod + def showResult(lst): + #DockWidget1.flag = True + for i in lst: + i.resultsCategory(i.name) + #i.show() + + # result data tab + def resultsCategory(self,name): + flag = True + try: + print("Under result category name ", name) + result=self.container.result + obj = self.container.fetchObject(name) + + d = {"Mole Fraction":"x_pc", "Mass Fraction":"xm_pc", "Mole Flow":"F_pc", "Mass Flow":"Fm_pc"} + lst = list(d.keys()) + klst = list(d.values()) + + p = {"Pressure":"P", "Temperature":"T","Vapour Phase Mole Fraction":"xvap", "Phase Molar Enthalpy":"H_p", + "Phase Molar Entropy":"S_p", "Molar Flow Rate":"F_p"} + + # Amounts Tab + if obj.type == 'MaterialStream': + l = [] # list for basis names + for basis in d: + propertyname = name + '.' + d[basis] + print("basis ", basis, propertyname) + for i in result[0]: + if (propertyname in i): + l.append(i) + print(l) + + j = 0 + t = 0 + namee = klst[j] + print("namee ", namee) + + for i,k in enumerate(l): + ind = result[0].index(k) + print("index ", ind) + print("str ", k) + resultval = str(result[-1][ind]) + print("######Resultsfetch####",resultval) + print(k[k.find(".")+1:k.find("[")]) + obj.variables[k.split('.')[1]]['value'] = resultval + if namee in k: + if i%3 == 0: + if(flag): + mroot = QTreeWidgetItem(self.mTreeWidget, [lst[j]]) + child = QTreeWidgetItem(mroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + elif i%3 == 1: + if(flag): + lroot = QTreeWidgetItem(self.lTreeWidget, [lst[j]]) + child = QTreeWidgetItem(lroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + elif i%3 == 2: + if (flag): + vroot = QTreeWidgetItem(self.vTreeWidget, [lst[j]]) + child = QTreeWidgetItem(vroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + t += 1 + flag = False + else: + j += 1 + t = 0 + namee = klst[j] + flag = True + if i%3 == 0: + if (flag): + mroot = QTreeWidgetItem(self.mTreeWidget, [lst[j]]) + child = QTreeWidgetItem(mroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + elif i%3 == 1: + if (flag): + lroot = QTreeWidgetItem(self.lTreeWidget, [lst[j]]) + child = QTreeWidgetItem(lroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + elif i%3 == 2: + if (flag): + vroot = QTreeWidgetItem(self.vTreeWidget, [lst[j]]) + child = QTreeWidgetItem(vroot, [compound_selected[t], str(resultval),obj.variables[k.split('.')[1]]['unit']]) + t += 1 + flag = False + #print(obj.variables) + + # Phase Properties Tab + phaseResLst = [] + for phase in p: + propertyname = name + '.' + p[phase] + print("phase ", phase, propertyname) + for i in result[0]: + if i.find('['): + if (propertyname == i[0:i.find('[')]): + phaseResLst.append(i) + if propertyname == i: + phaseResLst.append(i) + print(phaseResLst) + + self.mTableWidget.setRowCount(0) + self.lTableWidget.setRowCount(0) + self.vTableWidget.setRowCount(0) + + for i,val in enumerate(phaseResLst): + ind = result[0].index(val) + resultval = str(result[-1][ind]) + print(resultval, i, val) + obj.variables[val.split('.')[1]]['value'] = resultval + if '[' in val: + print(val) + temp = val[val.find('.')+1:val.find('[')] + print(temp) + if '1' in val.split('.')[1]: + print(obj.variables[val.split('.')[1]]['name']) + mrowPosition = self.mTableWidget.rowCount() + self.mTableWidget.insertRow(mrowPosition) + self.mTableWidget.setItem(mrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) + self.mTableWidget.setItem(mrowPosition , 1, QTableWidgetItem(resultval)) + self.mTableWidget.setItem(mrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) + self.mTableWidget.resizeColumnsToContents() + + if '2' in val.split('.')[1]: + lrowPosition = self.lTableWidget.rowCount() + self.lTableWidget.insertRow(lrowPosition) + self.lTableWidget.setItem(lrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) + self.lTableWidget.setItem(lrowPosition , 1, QTableWidgetItem(resultval)) + self.lTableWidget.setItem(lrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) + self.lTableWidget.resizeColumnsToContents() + if '3' in val.split('.')[1]: + vrowPosition = self.vTableWidget.rowCount() + self.vTableWidget.insertRow(vrowPosition) + self.vTableWidget.setItem(vrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) + self.vTableWidget.setItem(vrowPosition , 1, QTableWidgetItem(resultval)) + self.vTableWidget.setItem(vrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) + self.vTableWidget.resizeColumnsToContents() + if not '[' in val: + #print(p[val.split('.')[1]]) + print(obj.variables[val.split('.')[1]]['name']) + mrowPosition = self.mTableWidget.rowCount() + self.mTableWidget.insertRow(mrowPosition) + self.mTableWidget.setItem(mrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) + self.mTableWidget.setItem(mrowPosition , 1, QTableWidgetItem(resultval)) + self.mTableWidget.setItem(mrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) + self.mTableWidget.resizeColumnsToContents() + + print(obj.variables) + + except Exception as e: + print(e) + + +
\ No newline at end of file |