summaryrefslogtreecommitdiff
path: root/src/main/python/DockWidgets/DockWidgetDistillationColumn.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/python/DockWidgets/DockWidgetDistillationColumn.py')
-rw-r--r--src/main/python/DockWidgets/DockWidgetDistillationColumn.py390
1 files changed, 0 insertions, 390 deletions
diff --git a/src/main/python/DockWidgets/DockWidgetDistillationColumn.py b/src/main/python/DockWidgets/DockWidgetDistillationColumn.py
deleted file mode 100644
index 7895b32..0000000
--- a/src/main/python/DockWidgets/DockWidgetDistillationColumn.py
+++ /dev/null
@@ -1,390 +0,0 @@
-import os, sys
-
-current = os.path.dirname(os.path.realpath(__file__))
-parent = os.path.dirname(current)
-parentPath = os.path.dirname(parent)
-sys.path.append(parentPath)
-
-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 collections import defaultdict
-
-from python.utils.ComponentSelector import *
-from python.DockWidgets.DistillationColumnStagewiseResults import DistillationColumnStagewiseResults
-from python.utils.Graphics import *
-
-ui_dialog,_ = loadUiType(parentPath+'/ui/DockWidgets/DockWidgetDistillationColumn.ui')
-
-
-class DockWidgetDistillationColumn(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.input_dict = []
- self.pushButton_2.clicked.connect(self.param)
- self.dict = []
- self.input_params_list()
- self.name_type = None
- self.container = container
- self.stage_res_table = DistillationColumnStagewiseResults()
- self.stageResultsButton.clicked.connect(self.showStagewiseResults)
-
- # input data tab
-
- def input_params_list(self):
- try:
- print("input_params_list ", self.input_dict)
-
- # tab 1
-
- l1 = QLineEdit()
- l1.setFixedWidth(80)
- l1.setText(str(self.obj.variables['Nt']['value']))
- self.lay1.addWidget(QLabel(self.obj.variables['Nt']['name'] + " :"), 0 ,0, alignment=Qt.AlignLeft)
- self.lay1.addWidget(l1,0,1, alignment=Qt.AlignLeft)
- self.input_dict.append(l1)
-
- for i in range(self.obj.variables['Ni']['value']):
- print(i)
- l = QLineEdit()
- l.setFixedWidth(80)
- if len(self.obj.variables['InT_s']['value']) is not 0:
- l.setText(str(self.obj.variables['InT_s']['value'][i]))
- self.lay1.addWidget(QLabel(self.obj.variables['InT_s']['name'] +" " + str(i+1) + " location :"),2*(i+1),0, alignment=Qt.AlignLeft)
- self.lay1.addWidget(l,2*(i+1),1, alignment=Qt.AlignLeft)
- self.input_dict.append(l)
-
- # tab 2
- self.l4.setText(self.obj.variables['Ctype']['name']+":")
-
- self.u1.setText(self.obj.variables['Ctype']['unit'])
- self.l5.setText(self.obj.variables['Pcond']['name']+":")
- self.le5.setText(str(self.obj.variables['Pcond']['value']))
- self.u2.setText(self.obj.variables['Pcond']['unit'])
- self.l6.setText(self.obj.variables['C_Spec']['name']+":")
- self.le6.setText(str(self.obj.variables['C_Spec']['value']))
- self.l7.setText("Compounds :")
-
- self.cb5.addItem("Total")
- self.cb5.addItem("Partial")
- self.cb5.setCurrentText(self.obj.variables['Ctype']['value'])
-
- for j in self.obj.Cspec_list:
- self.cb1.addItem(str(j))
- self.cb1.setCurrentText(self.obj.variables['C_Spec']['type'])
- for j in self.obj.compounds:
- self.cb2.addItem(str(j))
- self.cb2.setCurrentText(self.obj.variables['C_Spec']['comp'])
-
- self.cb2.setDisabled(True)
- self.cb1.currentIndexChanged.connect(self.fun2)
-
- self.le5.setFixedWidth(80)
- self.le6.setFixedWidth(80)
- self.le7.setFixedWidth(80)
- self.le8.setFixedWidth(80)
- self.cb1.setFixedWidth(180)
- self.cb2.setFixedWidth(80)
- self.cb3.setFixedWidth(180)
- self.cb4.setFixedWidth(80)
- self.cb5.setFixedWidth(80)
- self.u2.setAlignment(Qt.AlignLeft)
- self.u3.setAlignment(Qt.AlignLeft)
-
- self.input_dict.append(self.cb5)
- self.input_dict.append(self.le5)
- self.input_dict.append(self.cb1)
- self.input_dict.append(self.cb2)
- self.input_dict.append(self.le6)
-
- # tab3
- self.l8.setText(self.obj.variables['Preb']['name']+":")
- self.le7.setText(str(self.obj.variables['Preb']['value']))
- self.u3.setText(self.obj.variables['Preb']['unit'])
- self.l9.setText(self.obj.variables['R_Spec']['name']+":")
- self.le8.setText(str(self.obj.variables['R_Spec']['value']))
- self.l10.setText('Compounds')
-
- for j in self.obj.Rspec_list:
- self.cb3.addItem(str(j))
- self.cb3.setCurrentText(self.obj.variables['R_Spec']['type'])
- for j in self.obj.compounds:
- self.cb4.addItem(str(j))
- self.cb4.setCurrentText(self.obj.variables['R_Spec']['comp'])
- self.cb4.setDisabled(True)
- self.cb3.currentIndexChanged.connect(self.fun3)
-
- self.input_dict.append(self.le7)
- self.input_dict.append(self.cb3)
- self.input_dict.append(self.cb4)
- self.input_dict.append(self.le8)
-
- self.lines = [line.rstrip('\n') for line in open(parentPath+'/python/utils/thermopackage.txt')]
- for j in self.lines:
- self.cbTP.addItem(str(j))
- self.cbTP.setCurrentText(self.obj.variables['thermo_package']['value'])
-
- self.input_dict.append(self.cbTP)
-
- # self.input_dict = [self.le1, self.le2, self.le3, self.cb5, self.le5, self.cb1, self.cb2, self.le6, self.le7, self.cb3, self.cb4, self.le8]
-
- except Exception as e:
- print(e)
-
- def update_compounds(self):
- self.cb2.clear()
- self.cb4.clear()
- for j in self.obj.compounds:
- self.cb2.addItem(str(j))
- self.cb2.setCurrentText(self.obj.variables['C_Spec']['comp'])
- for j in self.obj.compounds:
- self.cb4.addItem(str(j))
- self.cb4.setCurrentText(self.obj.variables['R_Spec']['comp'])
-
- def fun2(self):
- if self.cb1.currentText() == 'Compound Molar Fraction' or self.cb1.currentText() == 'Compound Molar Flow (mol/s)':
- self.cb2.setDisabled(False)
- else:
- self.cb2.setDisabled(True)
-
- def fun3(self):
- if self.cb3.currentText() == 'Compound Molar Fraction' or self.cb3.currentText() == 'Compound Molar Flow (mol/s)':
- self.cb4.setDisabled(False)
- else:
- self.cb4.setDisabled(True)
-
- def Show_Error(self):
- QMessageBox.about(self, 'Important', "Please fill all fields with data")
-
- def param(self):
- try:
- self.dict= []
- temp = 0
- print("param.input_dict ", self.input_dict)
- self.dict.append(int(self.input_dict[0].text()))
-
- for i in range(self.obj.variables['Ni']['value']):
- self.dict.append(int(self.input_dict[i+1].text()))
- temp = i + 1
- print(temp)
-
- # print(temp)
- # print(self.input_dict[temp+1])
- self.dict.append(self.input_dict[temp+1].currentText())
- # print(temp+1)
- self.dict.append(int(self.input_dict[temp+2].text()))
- #print(temp+2)
- self.dict.append(self.input_dict[temp+3].currentText())
- #print(temp+3)
- self.dict.append(self.input_dict[temp+4].currentText())
- #print(temp+4)
- self.dict.append(int(self.input_dict[temp+5].text()))
- #print(temp+5)
- self.dict.append(int(self.input_dict[temp+6].text()))
- #print(temp+6)
- self.dict.append(self.input_dict[temp+7].currentText())
- #print(temp+7)
- self.dict.append(self.input_dict[temp+8].currentText())
- #print(temp+8)
- self.dict.append(int(self.input_dict[temp+9].text()))
- #print(temp+9)
- self.dict.append(self.input_dict[temp+10].currentText())
- #print(temp + 10)
-
- #print("param ", self.dict)
- self.obj.param_setter(self.dict)
- if(self.isVisible()):
- currentVal = self.parent().container.graphics.graphicsView.horizontalScrollBar().value()
- self.parent().container.graphics.graphicsView.horizontalScrollBar().setValue(currentVal-189)
- self.hide()
-
- except Exception as e:
- print(e)
-
- def showStagewiseResults(self):
- self.stage_res_table.show()
-
- @staticmethod
- def showResult(lst):
- # DockWidget1.flag = True
- for i in lst:
- try:
- i.results_category(i.name)
- except AttributeError:
- pass
-
- def clear_results(self):
- self.tableWidget.setRowCount(0)
- self.stage_res_table.T_table.setRowCount(0)
- self.stage_res_table.T_table.setColumnCount(0)
- self.stage_res_table.x_pc_table.setRowCount(0)
- self.stage_res_table.x_pc_table.setColumnCount(0)
-
- # result data tab
- def results_category(self,name):
- flag = True
- try:
- #print("Under result category name ", name)
- result = self.container.result
- obj = self.container.fetch_object(name)
- self.tableWidget.setRowCount(0)
- variKeys = obj.result_parameters
- #print(variKeys)
- for i, val in enumerate(variKeys):
- propertyname = name + '.' + val
- #print(i, val, propertyname)
- if propertyname in result[0]:
- ind = result[0].index(propertyname)
- resultval = str(result[-1][ind])
- obj.variables[val]['value'] = result[-1][ind]
- #print("######Resultsfetch####", val, resultval)
- rowPosition = self.tableWidget.rowCount()
- self.tableWidget.insertRow(rowPosition)
- self.tableWidget.setItem(rowPosition, 0, QTableWidgetItem(obj.variables[val]['name']))
- self.tableWidget.setItem(rowPosition, 1, QTableWidgetItem(resultval))
- self.tableWidget.setItem(rowPosition, 2, QTableWidgetItem(obj.variables[val]['unit']))
- self.tableWidget.resizeColumnsToContents()
-
- # Stagewise Results
- Nt = self.obj.variables['Nt']['value']
- Nc = len(self.obj.compounds)
- # initializing temporary arrays
- Stages_T = [None for i in range(Nt)]
- # Can be uncommented when F_p and F_pc implemented in modelica table
- # Stages_F_p = [[None for i in range(3)] for j in range(Nt)]
- # Stages_F_pc = [[[None for i in range(3)] for j in range(Nc)] for k in range(Nt)]
- Stages_x_pc = [[[None for i in range(3)] for j in range(Nc)] for k in range(Nt)]
-
- Stages_res_varikeys = ['T']
- for i in range(Nc):
- for j in range(3):
- Stages_res_varikeys.append('x_pc[' + str(j + 1) + ',' + str(i + 1) + ']')
-
- for v in Stages_res_varikeys:
- propertyname = name + '.condenser.' + v
- if propertyname in result[0]:
- ind = result[0].index(propertyname)
- if v == 'T':
- Stages_T[0] = result[-1][ind]
- # Can be uncommented when F_p is implemented in modelica model
- # elif v == 'F_p':
- # if result[0][ind][result[0][ind].index('[') + 1] == '1':
- # Stages_F_p[0][0] = result[-1][ind]
- # elif result[0][ind][result[0][ind].index('[') + 1] == '2':
- # Stages_F_p[0][1] = result[-1][ind]
- # else:
- # Stages_F_p[0][2] = result[-1][ind]
- else:
- #print(ind)
- phase_no = int(result[0][ind][result[0][ind].index('[') + 1])
- comp_no = int(result[0][ind][result[0][ind].index(']') - 1])
- Stages_x_pc[0][comp_no - 1][phase_no - 1] = result[-1][ind]
- # Can be uncommented and improved when F_pc implemented in modelica model
- # if v == 'F_pc':
- # Stages_F_pc[0][comp_no - 1][phase_no - 1] = result[-1][ind]
- # else:
- # Stages_x_pc[0][comp_no - 1][phase_no - 1] = result[-1][ind]
-
- for i in range(1, Nt - 1):
- propertyname = name + '.tray[' + str(i) + '].' + v
- if propertyname in result[0]:
- ind = result[0].index(propertyname)
- if v == 'T':
- Stages_T[i] = result[-1][ind]
- # Can be uncommented when F_p implemented in modelica model
- # elif v == 'F_p':
- # if result[0][ind][result[0][ind].index('[') + 1] == '1':
- # Stages_F_p[i][0] = result[-1][ind]
- # elif result[0][ind][result[0][ind].index('[') + 1] == '2':
- # Stages_F_p[i][1] = result[-1][ind]
- # else:
- # Stages_F_p[i][2] = result[-1][ind]
- else:
- # print(ind)
- # print(result[0][ind])
- phase_no = int(result[0][ind].split('.')[-1][result[0][ind].split('.')[-1].index('[') + 1])
- comp_no = int(result[0][ind].split('.')[-1][result[0][ind].split('.')[-1].index(']') - 1])
- Stages_x_pc[i][comp_no - 1][phase_no - 1] = result[-1][ind]
- # Can be uncommented when F_pc implemented in modelica model
- # if v == 'F_pc':
- # Stages_F_pc[i][comp_no - 1][phase_no - 1] = result[-1][ind]
- # else:
- # Stages_x_pc[i][comp_no - 1][phase_no - 1] = result[-1][ind]
-
- propertyname = name + '.reboiler.' + v
- if propertyname in result[0]:
- ind = result[0].index(propertyname)
- if v == 'T':
- Stages_T[-1] = result[-1][ind]
- # Can be uncommented when F_p implemented in modelica model
- # elif v == 'F_p':
- # if result[0][ind][result[0][ind].index('[') + 1] == '1':
- # Stages_F_p[-1][0] = result[-1][ind]
- # elif result[0][ind][result[0][ind].index('[') + 1] == '2':
- # Stages_F_p[-1][1] = result[-1][ind]
- # else:
- # Stages_F_p[-1][2] = result[-1][ind]
- else:
- print(ind)
- phase_no = int(result[0][ind][result[0][ind].index('[') + 1])
- comp_no = int(result[0][ind][result[0][ind].index(']') - 1])
- Stages_x_pc[-1][comp_no - 1][phase_no - 1] = result[-1][ind]
- # Can be uncommented when F_pc implemented in modelica model
- # if v == 'F_pc':
- # Stages_F_pc[-1][comp_no - 1][phase_no - 1] = result[-1][ind]
- # else:
- # Stages_x_pc[-1][comp_no - 1][phase_no - 1] = result[-1][ind]
-
- # Assigning temp variables to obj variabes
- self.obj.variables['Stages.T']['value'] = Stages_T
- # Can be uncommented when F_p and F_pc implemented in modelica model
- # self.obj.variables['Stages.F_p']['value'] = Stages_F_p
- # self.obj.variables['Stages.F_pc']['value'] = Stages_F_pc
- self.obj.variables['Stages.x_pc']['value'] = Stages_x_pc
-
- # filling stagewise result table
- tables = [self.stage_res_table.T_table, self.stage_res_table.x_pc_table]
- # Can be uncommented when F_p and F_pc implemented in modelica model
- # tables = [self.stage_res_table.T_table, self.stage_res_table.F_p_table, self.stage_res_table.F_pc_table, self.stage_res_table.x_pc_table]
-
- for t in tables:
- t.setRowCount(Nt)
- t.setVerticalHeaderItem(0, QTableWidgetItem('Condenser'))
- t.setVerticalHeaderItem(Nt -1, QTableWidgetItem('Reboiler'))
- for i in range(1, Nt - 1):
- t.setVerticalHeaderItem(i, QTableWidgetItem('Stage ' + str(i)))
-
- T_table = self.stage_res_table.T_table
- T_table.setColumnCount(1)
- for i in range(Nt):
- T_table.setItem(i, 0, QTableWidgetItem(Stages_T[i]))
-
- x_pc_table = self.stage_res_table.x_pc_table
- x_pc_table.setColumnCount(2*Nc)
- for i in range(Nc):
- x_pc_table.setHorizontalHeaderItem(2*i, QTableWidgetItem(self.obj.compounds[i] + '(Vapor)'))
- x_pc_table.setHorizontalHeaderItem(2*i + 1, QTableWidgetItem(self.obj.compounds[i] + '(Liquid)'))
-
- for i in range(Nt):
- for j in range(Nc):
- x_pc_table.setItem(i, 2*j, QTableWidgetItem(Stages_x_pc[i][j][1]))
- x_pc_table.setItem(i, 2 * j + 1, QTableWidgetItem(Stages_x_pc[i][j][2]))
-
- for t in tables:
- t.resizeColumnsToContents()
- except Exception as e:
- print(e)
-
- def closeEvent(self,event):
- scrollHVal = self.parent().container.graphics.graphicsView.horizontalScrollBarVal
- currentVal = self.parent().container.graphics.graphicsView.horizontalScrollBar().value()
- self.parent().container.graphics.graphicsView.horizontalScrollBar().setValue(currentVal-189) \ No newline at end of file