summaryrefslogtreecommitdiff
path: root/DockWidgetMatStm.py
diff options
context:
space:
mode:
Diffstat (limited to 'DockWidgetMatStm.py')
-rw-r--r--DockWidgetMatStm.py332
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