From 7b8e2551b97b4d18a3769ee3a9bc6409f27427d8 Mon Sep 17 00:00:00 2001 From: pravindalve Date: Wed, 24 Jun 2020 13:59:35 +0530 Subject: issue with updating database while creating new file fixed --- Container.py | 1 - DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6125 -> 6125 bytes .../DockWidgetCompoundSeparator.cpython-37.pyc | Bin 3187 -> 3187 bytes .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4204 -> 4204 bytes .../__pycache__/DockWidgetFlash.cpython-37.pyc | Bin 2913 -> 2913 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8757 -> 8757 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2233 -> 2233 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 3382 -> 3382 bytes .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2764 -> 2764 bytes Undo.dat | Bin 64582 -> 107976 bytes mainApp.py | 2 +- 11 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Container.py b/Container.py index 26f6250..5469de2 100644 --- a/Container.py +++ b/Container.py @@ -190,7 +190,6 @@ class Container(): try: DockWidget.show_result(NodeItem.get_dock_widget()) except AttributeError: - print(NodeItem.name + ' does not have dockwidget') pass def flat_list(lst): diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 80d0ae1..73e3283 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc index e5023b1..a017f6c 100644 Binary files a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index 0584a29..9edcc3b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc index 7eaaef7..634882d 100644 Binary files a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index a99f092..ad1e8f3 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index 52a0ca1..fa45bf4 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 85449f8..7e4a733 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index 19250d9..ea2d2ea 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index 9adaab5..47f2cf8 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/mainApp.py b/mainApp.py index e49d4e2..462887f 100644 --- a/mainApp.py +++ b/mainApp.py @@ -227,7 +227,7 @@ class MainApp(QMainWindow,ui): ''' def new(self): self.undo_redo_helper() - self.comp.tableWidget.setRowCount(0) + self.comp = ComponentSelector(self) self.textBrowser.append("[" + str(self.current_time()) + "] New flowsheet is created ... ") dock_widget_lst.clear() -- cgit From 304347a14fb0a5d770717e08f10efaed84d51902 Mon Sep 17 00:00:00 2001 From: pravindalve Date: Thu, 25 Jun 2020 12:51:06 +0530 Subject: Bug fixes for Splitter --- .gitignore | 3 ++- DockWidgets/DockWidgetSplitter.py | 14 +++++++------- .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2764 -> 2751 bytes Graphics.py | 2 +- Undo.dat | Bin 107976 -> 135899 bytes UnitOperations.py | 19 +++++++++++-------- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 7796682..f1134d7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ Simulator/simulateEQN.mos __pycache__/* .idea/* DockWidgets/__pycache__/* -undo.dat \ No newline at end of file +undo.dat +test.py diff --git a/DockWidgets/DockWidgetSplitter.py b/DockWidgets/DockWidgetSplitter.py index 262bd45..c1c0120 100644 --- a/DockWidgets/DockWidgetSplitter.py +++ b/DockWidgets/DockWidgetSplitter.py @@ -30,9 +30,9 @@ class DockWidgetSplitter(QDockWidget,ui_dialog): try: print("input_params_list ", self.input_dict) - self.l1.setText(self.obj.variables['NOO']['name']+":") - self.le1.setText(str(self.obj.variables['NOO']['value'])) - self.u1.setText(self.obj.variables['NOO']['unit']) + self.l1.setText(self.obj.variables['No']['name']+":") + self.le1.setText(str(self.obj.variables['No']['value'])) + self.u1.setText(self.obj.variables['No']['unit']) for i in self.obj.CalcType_modes: self.cb2.addItem(str(i)) @@ -52,12 +52,12 @@ class DockWidgetSplitter(QDockWidget,ui_dialog): print(e) def fun(self): - if self.cb2.currentText() == 'Mole Flow Specs': + if self.cb2.currentText() == 'Molar_Flow': self.u3.setText('mol/s') self.u4.setText('mol/s') - elif self.cb2.currentText() == 'Mass Flow Specs': - self.u3.setText('kg/s') - self.u4.setText('kg/s') + elif self.cb2.currentText() == 'Mass_Flow': + self.u3.setText('g/s') + self.u4.setText('g/s') else: self.u3.setText('') self.u4.setText('') diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index ea2d2ea..045ca3d 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index 0fa3306..fd02d39 100644 --- a/Graphics.py +++ b/Graphics.py @@ -472,7 +472,7 @@ class NodeItem(QtWidgets.QGraphicsItem): if ok and text: self.nop = int(text) self.obj.no_of_outputs = self.nop - self.obj.variables['NOO']['value'] = self.nop + self.obj.variables['No']['value'] = self.nop self.dock_widget = None lst.append(self) diff --git a/Undo.dat b/Undo.dat index 47f2cf8..09e1639 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 006c015..ea7c916 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -131,7 +131,7 @@ class UnitOperation(): for k in self.parameters: self.OM_data_init += ', ' self.OM_data_init += k + ' = ' + ('"' + self.variables[k]['value'] + '"' if isinstance(self.variables[k]['value'], str) - else str(self.variables[k]['value'])) + else str(json.dumps(self.variables[k]['value']).replace('[', '{').replace(']', '}'))) self.OM_data_init += ');\n' return self.OM_data_init @@ -153,6 +153,8 @@ class UnitOperation(): self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out[' + str(strcount) + ']);\n') strcount += 1 else: + print(self.input_stms) + print(self.output_stms) self.OM_data_eqn += ('connect(' + self.name + '.Out,' + self.output_stms[0].name + '.In);\n') if self.mode: @@ -377,29 +379,30 @@ class Splitter(UnitOperation): self.no_of_outputs = 3 # self.input_stms = None - self.CalcType_modes = ['Split Ratios', 'Mole Flow Specs', 'Mass Flow Specs'] + self.CalcType_modes = ['Split_Ratio', 'Molar_Flow', 'Mass_Flow'] - self.parameters = ['NOO', 'CalcType']#, 'SpecVal_s' + self.parameters = ['No', 'CalcType', 'SpecVal_s'] type(self).counter += 1 self.variables = { - 'NOO' : {'name':'No. of Output', 'value':3, 'unit':''}, + 'No' : {'name':'No. of Output', 'value':3, 'unit':''}, 'CalcType' : {'name':'Calculation Type', 'value':self.CalcType_modes[0], 'unit':''}, 'SpecVal_s' : {'name':'Specification Value', 'value':[50,50], 'unit':''} } specval = self.variables['SpecVal_s']['value'] # [50,50] self.specval = json.dumps(specval).replace('[','{').replace(']','}') + print(self.specval) def param_setter(self,params): print("param_setter ", params) - self.variables['NOO']['value'] = int(params[0]) + self.variables['No']['value'] = int(params[0]) self.variables['CalcType']['value'] = params[1] self.variables['SpecVal_s']['value'] = [float(params[2]), float(params[3])] - if self.variables['CalcType']['value'] == 'Mole Flow Specs': + if self.variables['CalcType']['value'] == 'Molar_Flow': self.variables['SpecVal_s']['unit'] = 'mol/s' - elif self.variables['CalcType']['value'] == 'Mass Flow Specs': - self.variables['SpecVal_s']['unit'] = 'kg/s' + elif self.variables['CalcType']['value'] == 'Mass_Flow': + self.variables['SpecVal_s']['unit'] = 'g/s' print(self.variables) class Mixer(UnitOperation): -- cgit From da8e13197c906ee90ba8672567b6670a291eb2c1 Mon Sep 17 00:00:00 2001 From: pravindalve Date: Thu, 25 Jun 2020 14:56:00 +0530 Subject: Generalization for integer and float variables in flowsheet_initialization --- DockWidgets/DockWidgetMixer.py | 2 +- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6125 -> 6125 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2233 -> 2244 bytes Simulator/Simulator/UnitOperations/Splitter.mo | 4 ++-- Undo.dat | Bin 135899 -> 183065 bytes UnitOperations.py | 4 ++-- 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DockWidgets/DockWidgetMixer.py b/DockWidgets/DockWidgetMixer.py index 28cbff0..01bfd48 100644 --- a/DockWidgets/DockWidgetMixer.py +++ b/DockWidgets/DockWidgetMixer.py @@ -52,7 +52,7 @@ class DockWidgetMixer(QDockWidget,ui_dialog): try: self.dict={} print("param.input_dict ", self.input_dict) - self.dict = [int(self.input_dict[0].text()),self.input_dict[1].currentText()] + self.dict = [int(self.input_dict[0].text()), '"' + self.input_dict[1].currentText() + '"'] print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 73e3283..0733a15 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index fa45bf4..6bfb174 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/Simulator/Simulator/UnitOperations/Splitter.mo b/Simulator/Simulator/UnitOperations/Splitter.mo index 8b03997..9871ea7 100644 --- a/Simulator/Simulator/UnitOperations/Splitter.mo +++ b/Simulator/Simulator/UnitOperations/Splitter.mo @@ -5,7 +5,7 @@ model Splitter //Header Files and Parameters extends Simulator.Files.Icons.Splitter; parameter Simulator.Files.ChemsepDatabase.GeneralProperties C[Nc]; - parameter Integer Nc = 2 "Number of Components", No = 2 "Number of outlet streams"; + parameter Integer Nc = 3 "Number of Components", No = 2 "Number of outlet streams"; parameter String CalcType "Split_Ratio, Mass_Flow or Molar_Flow"; //============================================================================= @@ -21,7 +21,7 @@ model Splitter Real Pout_s[No](each min = 0, each start = Pg) "Outlet Pressure"; Real Tout_s[No](each min = 0, each start = Tg) "Outlet Temperature"; - Real xout_sc[No, Nc](each min = 0, each max = 1, start = xguess) "Outlet Mixture Molar Fraction"; + Real xout_sc[No, Nc](each min = 0, each max = 1) "Outlet Mixture Molar Fraction"; Real Fout_c[No](each min = 0, start = Fg) "Outlet Mixture Molar Flow"; Real Fmout_c[No](each min = 0, start = Fg) "Outlet Mixture Mass Flow"; diff --git a/Undo.dat b/Undo.dat index 09e1639..2fa64d0 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index ea7c916..595a49d 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -130,8 +130,8 @@ class UnitOperation(): for k in self.parameters: self.OM_data_init += ', ' - self.OM_data_init += k + ' = ' + ('"' + self.variables[k]['value'] + '"' if isinstance(self.variables[k]['value'], str) - else str(json.dumps(self.variables[k]['value']).replace('[', '{').replace(']', '}'))) + self.OM_data_init += k + ' = ' + (json.dumps(self.variables[k]['value']) if json.dumps(self.variables[k]['value']).replace('"', '').replace('_', '').isalpha() + else json.dumps(self.variables[k]['value']).replace('[', '{').replace(']', '}').replace('"', '')) self.OM_data_init += ');\n' return self.OM_data_init -- cgit From a69bc3eb0486d949c024bb5b373b14c0618d2220 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Wed, 8 Jul 2020 16:25:01 +0630 Subject: Compound Separator bug fixed. --- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6125 -> 6107 bytes .../DockWidgetCompoundSeparator.cpython-37.pyc | Bin 3187 -> 3169 bytes .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4204 -> 4186 bytes .../__pycache__/DockWidgetFlash.cpython-37.pyc | Bin 2913 -> 2895 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8757 -> 8739 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2244 -> 2226 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 3382 -> 3364 bytes .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2751 -> 2733 bytes Undo.dat | Bin 183065 -> 64907 bytes UnitOperations.py | 68 +++++++++++++++------ 10 files changed, 51 insertions(+), 17 deletions(-) diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 0733a15..f1fa8b5 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc index a017f6c..ecad97b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index 9edcc3b..e5f9002 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc index 634882d..c706582 100644 Binary files a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index ad1e8f3..e42b5d7 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index 6bfb174..ab2fad7 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 7e4a733..1c34a04 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index 045ca3d..bcd36dc 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index 2fa64d0..ebae531 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 595a49d..5a67b2f 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -136,6 +136,7 @@ class UnitOperation(): self.OM_data_init += ');\n' return self.OM_data_init + def OM_Flowsheet_Equation(self): self.OM_data_eqn = '' @@ -286,29 +287,62 @@ class CompoundSeparator(UnitOperation): type(self).counter += 1 self.variables = { 'SepStrm' : {'name':'Separation Stream', 'value':1, 'unit':''}, - #'SepVal' : {'name':'Separation Value', 'value':[], 'unit':''}, - #'SepFact' : {'name':'Separaction Factor', 'value':'', 'unit':''}, + 'SepVal_c' : {'name':'Separation Value', 'value':[], 'unit':''}, + 'SepFact_c' : {'name':'Separaction Factor', 'value':[], 'unit':''}, } - - for i in self.compounds: - self.variables[i] = {'name':'SepVal_'+i, 'value':'', 'type':'', 'unit':''} - # self.SepFact = json.dumps(self.variables['SepFact']['value']).replace('[','{').replace(']','}') - # self.SepStrm = str(self.variables['SepStrm']['value']) - # self.SepVal = json.dumps(self.variables['SepVal']['value']).replace('[','{').replace(']','}') def param_setter(self,params): - print("param_setter ", params) - if params[0]: + print("param_setter CompSep ", params) + + if (params[0]): self.variables['SepStrm']['value'] = 1 - elif params[1]: + else: self.variables['SepStrm']['value'] = 2 + + for index, i in enumerate(range(2, len(params))): + print(index, i) + if (i %2 != 0): + self.variables['SepVal_c']['value'].append(float(params[i])) + else: + self.variables['SepFact_c']['value'].append(params[i].split(' ')[0]) + + print(self.variables['SepStrm']['value'], self.variables['SepFact_c']['value'], self.variables['SepVal_c']['value']) - j = 2 - for i in self.compounds: - self.variables[i]['type'] = params[j] - self.variables[i]['value'] = float(params[j+1]) - j += 2 - print(self.variables) + self.variables['SepFact_c']['value'] = json.dumps(self.variables['SepFact_c']['value']).replace('[','{').replace(']','}') + self.variables['SepStrm']['value'] = str(self.variables['SepStrm']['value']) + self.variables['SepVal_c']['value'] = json.dumps(self.variables['SepVal_c']['value']).replace('[','{').replace(']','}') + + print(self.variables['SepStrm']['value'], self.variables['SepFact_c']['value'], self.variables['SepVal_c']['value']) + + + def OM_Flowsheet_Initialize(self): + self.OM_data_init = '' + comp_count = len(self.compounds) + self.OM_data_init = self.OM_data_init + ( + "Simulator.UnitOperations.CompoundSeparator " + self.name + "(Nc = " + str(comp_count)) + self.OM_data_init = self.OM_data_init + (", C = {") + comp = str(self.compounds).strip('[').strip(']') + comp = comp.replace("'", "") + self.OM_data_init = self.OM_data_init + comp + ("},") + self.OM_data_init = self.OM_data_init + ("SepFact_c = "+self.variables['SepFact_c']['value']+",SepStrm = " + self.variables['SepStrm']['value'] + ");\n") #+ ", sepFactVal = " + self.variables['SepVal_c']['value'] + + return self.OM_data_init + + + def OM_Flowsheet_Equation(self): + self.OM_data_eqn = '' + + self.OM_data_eqn += ('connect(' + self.name + '.In,' + self.input_stms[0].name + '.Out);\n') + + strcount = 1 + for strm in self.output_stms: + self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out' + str(strcount) + ');\n') + strcount += 1 + + self.OM_data_eqn += (self.name + '.SepVal_c ' + '=' + self.variables['SepVal_c']['value'] + ';\n') + + return self.OM_data_eqn + class Flash(UnitOperation): def __init__(self,name='Flash'): -- cgit From dafe790599284515c1db8bbf58946aae531bb551 Mon Sep 17 00:00:00 2001 From: pravindalve Date: Wed, 8 Jul 2020 16:39:05 +0530 Subject: Flash bugs fixed --- DockWidgets/DockWidgetFlash.py | 2 +- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6107 -> 6125 bytes .../DockWidgetCompoundSeparator.cpython-37.pyc | Bin 3169 -> 3187 bytes .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4186 -> 4204 bytes .../__pycache__/DockWidgetFlash.cpython-37.pyc | Bin 2895 -> 2914 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8739 -> 8757 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2226 -> 2244 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 3364 -> 3382 bytes .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2733 -> 2751 bytes Undo.dat | Bin 64907 -> 64377 bytes UnitOperations.py | 33 +++++++++++++++++---- 11 files changed, 29 insertions(+), 6 deletions(-) diff --git a/DockWidgets/DockWidgetFlash.py b/DockWidgets/DockWidgetFlash.py index 6098b27..1634169 100644 --- a/DockWidgets/DockWidgetFlash.py +++ b/DockWidgets/DockWidgetFlash.py @@ -29,7 +29,7 @@ class DockWidgetFlash(QDockWidget,ui_dialog): try: print("input_params_list ", self.input_dict) - self.l1.setText(self.obj.variables['thermoPackage']['name']+":") + self.l1.setText(self.obj.variables['thermo_package']['name']+":") self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] for j in self.lines: self.cb1.addItem(str(j)) diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index f1fa8b5..0733a15 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc index ecad97b..a017f6c 100644 Binary files a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index e5f9002..9edcc3b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc index c706582..7a0568c 100644 Binary files a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index e42b5d7..ad1e8f3 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index ab2fad7..6bfb174 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 1c34a04..7e4a733 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index bcd36dc..045ca3d 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index ebae531..ea109b2 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 5a67b2f..faf54de 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -38,7 +38,7 @@ class UnitOperation(): self.for_naming = [] self.multidict = [] self.thermo_pack_req = False - self.thermo_package = None + self.thermo_package = 'RaoultsLaw' def param_getter(self,mode=None): params = {} @@ -116,11 +116,18 @@ class UnitOperation(): C = str(self.compounds).strip('[').strip(']') C = C.replace("'", "") self.OM_data_init += ',C = {' + C + '}' - - for k,v in self.parameters.items(): + + # if len(self.parameters) > 0: + # for k,v in self.parameters.items(): + # self.OM_data_init += ', ' + # self.OM_data_init += k + ' = ' + str(v) + + for k in self.parameters: self.OM_data_init += ', ' - self.OM_data_init += k + ' = ' + str(v) - self.OM_data_init += ');\n' + self.OM_data_init += k + ' = ' + (json.dumps(self.variables[k]['value']) if json.dumps(self.variables[k]['value']).replace('"', '').replace('_', '').isalpha() + else json.dumps(self.variables[k]['value']).replace('[', '{').replace(']', '}').replace('"', '')) + + self.OM_data_init += ');\n' else: self.OM_data_init += 'Simulator.UnitOperations.' + self.type + ' ' + self.name + '(Nc = ' + str(len(self.compounds)) @@ -349,11 +356,15 @@ class Flash(UnitOperation): UnitOperation.__init__(self) self.name = name + str(Flash.counter) self.type = 'Flash' + self.extra = ['Flash'] + self.for_naming = ['Flash'] self.no_of_inputs = 1 self.no_of_outputs = 2 self.input_stms = [] self.output_stms = [] self.count = Flash.counter + self.thermo_pack_req = True + self.parameters = ['BTdef', 'Tdef', 'BPdef', 'Pdef'] type(self).counter += 1 self.variables = { @@ -372,6 +383,18 @@ class Flash(UnitOperation): self.variables['Pdef']['value'] = params[4] print(self.variables) + def OM_Flowsheet_Equation(self): + self.OM_data_eqn = '' + + self.OM_data_eqn += ('connect(' + self.name + '.In,' + self.input_stms[0].name + '.Out);\n') + + strcount = 1 + for strm in self.output_stms: + self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out' + str(strcount) + ');\n') + strcount += 1 + + return self.OM_data_eqn + class Pump(UnitOperation): def __init__(self,name='Pump'): UnitOperation.__init__(self) -- cgit From 2cd248a0ae312672d63a55cf6ac72436e515b2e6 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Thu, 9 Jul 2020 15:49:58 +0630 Subject: Fixed connection problems for Valve, ShortcutColumn and DistillationColumn --- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6125 -> 6107 bytes .../DockWidgetCompoundSeparator.cpython-37.pyc | Bin 3187 -> 3169 bytes .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4204 -> 4186 bytes .../__pycache__/DockWidgetFlash.cpython-37.pyc | Bin 2914 -> 2896 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8757 -> 8739 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2244 -> 2226 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 3382 -> 3364 bytes .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2751 -> 2733 bytes Undo.dat | Bin 64377 -> 63193 bytes UnitOperations.py | 6 ------ 10 files changed, 6 deletions(-) diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 0733a15..f1fa8b5 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc index a017f6c..ecad97b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index 9edcc3b..e5f9002 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc index 7a0568c..3054328 100644 Binary files a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index ad1e8f3..e42b5d7 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index 6bfb174..ab2fad7 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 7e4a733..1c34a04 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index 045ca3d..bcd36dc 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index ea109b2..436d91a 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index faf54de..90111d1 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -177,8 +177,6 @@ class ShortcutColumn(UnitOperation): self.type = 'ShortcutColumn' self.no_of_inputs = 1 self.no_of_outputs = 2 - self.input_stms = None - self.output_stms = None self.EngStm1 = EngStm(name='EngStm1'+self.name) self.EngStm2 = EngStm(name='EngStm2'+self.name) self.count = ShortcutColumn.counter @@ -225,8 +223,6 @@ class DistillationColumn(UnitOperation): self.EngStm2 = EngStm(name='EngStm2'+self.name) self.count = DistillationColumn.counter - self.input_stms = None - self.output_stms = None # self.modes_list = ['RR', 'Nout', 'T'] self.modes_list = [] self.parameters = [''] @@ -418,8 +414,6 @@ class Valve(UnitOperation): UnitOperation.__init__(self) self.name = name + str(Valve.counter) self.type = 'Valve' - self.input_stms = None - self.output_stms = None self.modes_list = ['Pdel', 'Pout'] type(self).counter += 1 -- cgit From 4754490bd9f60c89f66f886e399abc9ea91e932a Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Fri, 10 Jul 2020 22:00:01 +0630 Subject: Result issues fixed and optional input for DistillationColumn --- Container.py | 6 ++---- DockWidgets/DockWidget.py | 7 ++++--- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6107 -> 6155 bytes Graphics.py | 6 ++++++ Undo.dat | Bin 63193 -> 4777 bytes UnitOperations.py | 3 ++- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Container.py b/Container.py index 5469de2..ec46706 100644 --- a/Container.py +++ b/Container.py @@ -186,11 +186,9 @@ class Container(): self.msg_browser() self.result=self.flowsheet.result_data print("under Eqn mode simulation") + print("710 ", self.result) - try: - DockWidget.show_result(NodeItem.get_dock_widget()) - except AttributeError: - pass + DockWidget.show_result(NodeItem.get_dock_widget()) def flat_list(lst): flat_lst=[] diff --git a/DockWidgets/DockWidget.py b/DockWidgets/DockWidget.py index 6fc7731..2b1cdb9 100644 --- a/DockWidgets/DockWidget.py +++ b/DockWidgets/DockWidget.py @@ -187,10 +187,11 @@ class DockWidget(QDockWidget,ui_dialog): @staticmethod def show_result(lst): - #DockWidget1.flag = True for i in lst: - i.results_category(i.name) - #i.show() + try: + i.results_category(i.name) + except AttributeError: + pass # result data tab def results_category(self,name): diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index f1fa8b5..b042722 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index fd02d39..47aa4ea 100644 --- a/Graphics.py +++ b/Graphics.py @@ -473,6 +473,12 @@ class NodeItem(QtWidgets.QGraphicsItem): self.nop = int(text) self.obj.no_of_outputs = self.nop self.obj.variables['No']['value'] = self.nop + elif self.obj.type == 'DistillationColumn': + text, ok = QInputDialog.getText(self.container.graphicsView, 'DistillationColumn', 'Enter number of input:') + if ok and text: + self.nin = int(text) + self.obj.no_of_inputs = self.nin + self.obj.variables['NI']['value'] = self.nin self.dock_widget = None lst.append(self) diff --git a/Undo.dat b/Undo.dat index 436d91a..b3b7c48 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 90111d1..7105606 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -214,7 +214,7 @@ class DistillationColumn(UnitOperation): def __init__(self,name='DistillationColumn'): self.name = name + str(DistillationColumn.counter) self.type = 'DistillationColumn' - self.no_of_inputs = 2 + self.no_of_inputs = 1 self.no_of_outputs = 2 self.compounds = compound_selected @@ -232,6 +232,7 @@ class DistillationColumn(UnitOperation): type(self).counter += 1 self.variables = { + 'NI' : {'name':'Number of Input', 'value':2, 'unit':''}, 'RR' : {'name':'Reflux Ratio', 'value':None, 'unit':''}, 'T' : {'name':'Temperature', 'value':300, 'unit':'K'}, 'Nout' : {'name':'No of Sidedraws', 'value':None, 'unit':''}, -- cgit From badd3b0787acaf3cbecdd9a9935d34de886fb5c2 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Thu, 16 Jul 2020 20:45:15 +0630 Subject: Fetching results for input data of MaterialStream --- DockWidgets/DockWidgetMaterialStream.py | 75 ++++++++++----------- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6155 -> 6155 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8739 -> 8853 bytes Streams.py | 24 ++++--- Undo.dat | Bin 4777 -> 31950 bytes 5 files changed, 52 insertions(+), 47 deletions(-) diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index 78959fc..130b290 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -40,13 +40,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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): modes_list = self.obj.modes_list @@ -69,6 +62,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): def input_params_list(self): try: print("input_params_list ", self.input_dict) + for c,i in enumerate(self.input_dict): if(i=="thermo_package"): print("thermo1") @@ -83,39 +77,31 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): self.formLayout.addRow(lay) self.input_dict[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.input_dict[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.input_dict[i] != '': - l.setText(str(self.obj.variables[compound_selected[j]]['value'])) + l.setText(str(self.obj.variables['x_pc']['value'][j])) + print('l = ', str(self.obj.variables['x_pc']['value'][j])) + self.input_dict[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) - + self.x_pclist.append(l) gp.setLayout(lay) - self.formLayout.addRow(gp) + self.formLayout.addRow(gp) else: print("elseloop") l = QLineEdit() if self.input_dict[i] != None: l.setText(str(self.input_dict[i])) + lay = QGridLayout() lay.addWidget(QLabel(i+":"),0,0, alignment=Qt.AlignLeft) lay.addWidget(l,0,1, alignment=Qt.AlignCenter) @@ -124,8 +110,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): else: lay.addWidget(QLabel("mol/s"),0,2, alignment=Qt.AlignCenter) self.formLayout.addRow(lay) - self.input_dict[i] = l - + self.input_dict[i] = l except Exception as e: print(e) @@ -144,12 +129,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): else: self.show_error() break - elif(i=="condType"): - if (self.input_dict[i].currentText()): - self.dict[i] = self.input_dict[i].currentText() - else: - self.show_error() - break elif(i =="x_pc"): l=[] mf = [] @@ -197,6 +176,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): result=self.container.result obj = self.container.fetch_object(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()) @@ -206,21 +186,21 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): # Amounts Tab if obj.type == 'MaterialStream': - l = [] # list for basis names + ll = [] # 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) + ll.append(i) + print(ll) j = 0 t = 0 namee = klst[j] print("namee ", namee) - for i,k in enumerate(l): + for i,k in enumerate(ll): ind = result[0].index(k) print("index ", ind) print("str ", k) @@ -323,10 +303,27 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): self.mTableWidget.setItem(mrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) self.mTableWidget.resizeColumnsToContents() - print(obj.variables) - except Exception as e: - print(e) - + # updating the input data from fetched results from simulation + print(self.comboBox.currentText()) + + self.input_dict = {} + self.input_dict = self.obj.param_getter(self.comboBox.currentText()) + print("before", self.input_dict) + self.input_dict.pop("x_pc") + temp = self.input_dict.pop('thermo_package') + for i in range(len(compound_selected)): + print(i) + self.input_dict['x_pc[1,' + str(i+1) + ']'] = self.obj.variables['x_pc[1,' + str(i+1) +']']['value'] + self.input_dict['thermo_package'] = temp + print("after", self.input_dict) + + # chaning index for updating the input data + indexx = self.comboBox.currentIndex() + self.comboBox.setCurrentIndex(1) + self.comboBox.setCurrentIndex(indexx) + - \ No newline at end of file + + except Exception as e: + print(e) \ No newline at end of file diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index b042722..fec7953 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index e42b5d7..16bd08d 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/Streams.py b/Streams.py index 81586f1..c987b4c 100644 --- a/Streams.py +++ b/Streams.py @@ -38,7 +38,7 @@ class MaterialStream(): 'xvap' : {'name':'Vapour Phase Mole Fraction', 'value':None, 'unit':'g/s'}, 'H_p[1]' : {'name':'Mixture Phase Molar Entalpy', 'value':None, 'unit':'g/s'}, 'S_p[1]' : {'name':'Mixture Phase Molar Entropy', 'value':None, 'unit':'g/s'}, - 'F_p[1]' : {'name':'Mixture Molar Flow Rate', 'value':None, 'unit':'g/s'}, + 'F_p[1]' : {'name':'Mixture Molar Flow Rate', 'value':100, 'unit':'g/s'}, 'H_p[2]' : {'name':'Liquid Phase Molar Entalpy', 'value':None, 'unit':'g/s'}, 'S_p[2]' : {'name':'Liquid Phase Molar Entropy', 'value':None, 'unit':'g/s'}, @@ -48,7 +48,7 @@ class MaterialStream(): 'S_p[3]' : {'name':'Vapour Phase Molar Entropy', 'value':None, 'unit':'g/s'}, 'F_p[3]' : {'name':'Vapour Molar Flow Rate', 'value':None, 'unit':'g/s'}, - 'x_pc' : {'name':'Mole Fraction', 'value':1.0, 'unit':'mol/s'}, + 'x_pc' : {'name':'Mole Fraction', 'value':[], 'unit':'mol/s'}, 'xm_pc' : {'name':'Mass Fraction', 'value':None, 'unit':'g/s'}, 'F_pc' : {'name':'Mole Flow', 'value':100, 'unit':'mol/s'}, @@ -57,8 +57,9 @@ class MaterialStream(): self.init_variables() def init_variables(self): + Nc = len(self.compound_names) for i, val in enumerate(self.compound_names): - self.variables['x_pc[1,'+ str(i+1)+']'] = {'name':val + ' Mixture Mole Fraction', 'value':None, 'unit':'mol/s'} + self.variables['x_pc[1,'+ str(i+1)+']'] = {'name':val + ' Mixture Mole Fraction', 'value':round(1/Nc,4), 'unit':'mol/s'} self.variables['xm_pc[1,'+ str(i+1)+']'] = {'name':val + ' Mixture Mass Fraction', 'value':None, 'unit':'g/s'} self.variables['F_pc[1,'+ str(i+1)+']'] = {'name':val + ' Mixture Mole Flow', 'value':None, 'unit':'mol/s'} self.variables['Fm_pc[1,'+ str(i+1)+']'] = {'name':val + ' Mixture Mass Flow', 'value':None, 'unit':'g/s'} @@ -79,31 +80,38 @@ class MaterialStream(): def param_getter(self,mode): dict = {} + temp = [] + for i, val in enumerate(self.compound_names): + temp.append(self.variables['x_pc[1,' + str(i+1) + ']']['value']) + self.variables['x_pc']['value'] = temp + if(mode=="PT"): self.mode1 = 'P' self.mode2 = 'T' + dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['T']['value'], - "MolFlow":self.variables['F_pc']['value'],"x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'],"x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + elif(mode=="PH"): self.mode1 = 'P' self.mode2 = 'H_p[1]' dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['H_p[1]']['value'], - "MolFlow":self.variables['F_pc']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} elif(mode=="PVF"): self.mode1 = 'P' self.mode2 = 'xvap' dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['xvap']['value'], - "MolFlow":self.variables['F_pc']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} elif(mode=="TVF"): self.mode1 = 'T' self.mode2 = 'xvap' dict = {self.mode1:self.variables['T']['value'], self.mode2:self.variables['xvap']['value'], - "MolFlow":self.variables['F_pc']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} elif(mode=="PS"): self.mode1 = 'P' self.mode2 = 'S_p[1]' dict = {self.mode1:self.variables['P']['value'], self.mode2: self.variables['S_p[1]']['value'], - "MolFlow":self.variables['F_pc']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} return dict diff --git a/Undo.dat b/Undo.dat index b3b7c48..0c1911d 100644 Binary files a/Undo.dat and b/Undo.dat differ -- cgit From b43d2c8eef88b48f2db6f118805a3f621a0a13d3 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Fri, 17 Jul 2020 21:30:55 +0630 Subject: Fixed ShortcutColumn --- DockWidgets/DockWidgetShortcutColumn.py | 39 ++++++++++++++++---- DockWidgets/DockWidgetShortcutColumn.ui | 34 ++++++++++++++++-- .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 3364 -> 4160 bytes Undo.dat | Bin 31950 -> 70485 bytes UnitOperations.py | 40 +++++++++++++++++++-- 5 files changed, 102 insertions(+), 11 deletions(-) diff --git a/DockWidgets/DockWidgetShortcutColumn.py b/DockWidgets/DockWidgetShortcutColumn.py index af81441..fc5c34f 100644 --- a/DockWidgets/DockWidgetShortcutColumn.py +++ b/DockWidgets/DockWidgetShortcutColumn.py @@ -34,12 +34,13 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): print("input_params_list ", self.input_dict) self.l1.setText(self.obj.variables['HKey']['name']+":") + self.l2.setText(self.obj.variables['LKey']['name']+":") + print(self.obj.compounds) for i in self.obj.compounds: self.cb1.addItem(str(i)) self.cb2.addItem(str(i)) - self.l2.setText(self.obj.variables['LKey']['name']+":") self.l3.setText(self.obj.variables['HKey_x_pc']['name']+":") self.le3.setText(str(self.obj.variables['HKey_x_pc']['value'])) @@ -84,14 +85,40 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): except Exception as e: print(e) - @staticmethod def show_result(lst): - #DockWidget1.flag = True for i in lst: - i.resultsCategory(i.name) - #i.show() + try: + i.results_category(i.name) + except AttributeError: + pass # result data tab def results_category(self,name): - pass \ No newline at end of file + 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() + + print(obj.variables) + + except Exception as e: + print(e) \ No newline at end of file diff --git a/DockWidgets/DockWidgetShortcutColumn.ui b/DockWidgets/DockWidgetShortcutColumn.ui index c66e699..47595ec 100644 --- a/DockWidgets/DockWidgetShortcutColumn.ui +++ b/DockWidgets/DockWidgetShortcutColumn.ui @@ -33,8 +33,8 @@ 10 40 - 351 - 321 + 381 + 611 @@ -287,6 +287,36 @@ Results + + + + + 3 + + + 110 + + + true + + + + Attribute + + + + + Value + + + + + Unit + + + + + diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 1c34a04..560bdac 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index 0c1911d..b2f107b 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 7105606..54f9334 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -123,6 +123,8 @@ class UnitOperation(): # self.OM_data_init += k + ' = ' + str(v) for k in self.parameters: + if(k == 'HKey_x_pc' or k == 'LKey_x_pc'): + continue self.OM_data_init += ', ' self.OM_data_init += k + ' = ' + (json.dumps(self.variables[k]['value']) if json.dumps(self.variables[k]['value']).replace('"', '').replace('_', '').isalpha() else json.dumps(self.variables[k]['value']).replace('[', '{').replace(']', '}').replace('"', '')) @@ -181,7 +183,12 @@ class ShortcutColumn(UnitOperation): self.EngStm2 = EngStm(name='EngStm2'+self.name) self.count = ShortcutColumn.counter + self.extra = ['ShortcutColumn'] + self.for_naming = ['ShortcutColumn'] + self.thermo_pack_req = True + self.parameters = ['HKey', 'LKey', 'HKey_x_pc', 'LKey_x_pc', 'Ctype', 'Pcond', 'Preb', 'RR'] + self.result_parameters = ['RRmin', 'Ntmin', 'Nt', 'Intray', 'Fliqstrip', 'Fliqrec', 'Fvapstrip', 'Fvaprec', 'Qc', 'Qr'] type(self).counter += 1 self.variables = { @@ -190,16 +197,28 @@ class ShortcutColumn(UnitOperation): 'HKey_x_pc' : {'name':'Heavy Key Mole Fraction', 'value':0.01, 'unit':'mol/s'}, 'LKey_x_pc' : {'name':'Light Key Mole Fraction', 'value':0.01, 'unit':'mol/s'}, 'Ctype' : {'name':'Condensor Type', 'value':None, 'unit':''}, - 'thermo_package' : {'name':'Thermo Package', 'value':'Raoults_Law', 'unit':''}, + 'thermo_package' : {'name':'Thermo Package', 'value':'Raoults_Law', 'unit':''}, 'Pcond' : {'name':'Condensor Pressure', 'value':101325, 'unit':'Pa'}, 'Preb' : {'name':'Reboiler Pressure', 'value':101325, 'unit':'Pa'}, 'RR' : {'name':'Reflux Ratio', 'value':1.5, 'unit':''}, + + 'RRmin' : {'name':'Minimum Reflux Ratio', 'value': None , 'unit':''}, + 'Ntmin' : {'name':'Minimum Number of Stages', 'value': None, 'unit':''}, + 'Nt' : {'name':'Actual Number of Stages', 'value': None, 'unit':''}, + 'Intray' : {'name':'Optimal Feed Stage', 'value': None, 'unit':''}, + 'Fliqstrip' : {'name':'Stripping Liquid', 'value': None, 'unit':'mol/s'}, + 'Fliqrec' : {'name':'Rectification Liquid', 'value': None, 'unit':'mol/s'}, + 'Fvapstrip' : {'name':'Stripping Vapor', 'value': None, 'unit':'mol/s'}, + 'Fvaprec' : {'name':'Recification Vapour', 'value': None, 'unit':'mol/s'}, + 'Qc' : {'name':'Conderser Duty', 'value': None, 'unit':'W'}, + 'Qr' : {'name':'Reboiler Duty', 'value': None, 'unit':'W'}, + } def param_setter(self,params): print("param_setter ", params) - self.variables['HKey']['value'] = params[0] - self.variables['LKey']['value'] = params[1] + self.variables['HKey']['value'] = self.compounds.index(params[0]) + 1 + self.variables['LKey']['value'] = self.compounds.index(params[1]) + 1 self.variables['HKey_x_pc']['value'] = params[2] self.variables['LKey_x_pc']['value'] = params[3] self.variables['Ctype']['value'] = params[4] @@ -209,6 +228,21 @@ class ShortcutColumn(UnitOperation): print(self.variables) + def OM_Flowsheet_Equation(self): + self.OM_data_eqn = '' + + self.OM_data_eqn += ('connect(' + self.name + '.In,' + self.input_stms[0].name + '.Out);\n') + + strcount = 1 + for strm in self.output_stms: + self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out' + str(strcount) + ');\n') + strcount += 1 + + self.OM_data_eqn += (self.name + '.x_pc[2, ' + self.name + '.HKey] = ' + str(self.variables['HKey_x_pc']['value']) + ';\n') + self.OM_data_eqn += (self.name + '.x_pc[3, ' + self.name + '.LKey] = ' + str(self.variables['LKey_x_pc']['value']) + ';\n') + + return self.OM_data_eqn + class DistillationColumn(UnitOperation): def __init__(self,name='DistillationColumn'): -- cgit From 8b296f3d098669a6cb4f20511aaa3b42ac4510ba Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Tue, 21 Jul 2020 22:02:16 +0630 Subject: Fixed updating Tooltip values from fetched results --- Container.py | 17 ++++++++++++----- DockWidgets/DockWidget.py | 4 +++- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6155 -> 6155 bytes Graphics.py | 13 +++++++++++++ Undo.dat | Bin 70485 -> 31950 bytes mainApp.py | 2 -- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Container.py b/Container.py index ec46706..e2b1f29 100644 --- a/Container.py +++ b/Container.py @@ -171,25 +171,32 @@ class Container(): self.flowsheet.add_compound_list(self.compounds) print("######## connection master#########\n",self.conn) for i in self.unit_operations : - print("here",i) - self.flowsheet.add_unit_operations(i) + print("here",i) + self.flowsheet.add_unit_operations(i) if mode=='SM': self.msg.append("["+str(self.current_time())+"] Simulating in Sequential mode ... ") self.flowsheet.simulate_SM(self.ip,self.op) self.msg_browser() self.result=self.flowsheet.result_data - print("under SEQ mode simulation") + elif mode=='EQN': self.msg.append("["+str(self.current_time())+"] Simulating in equation mode ... ") self.flowsheet.simulate_EQN() self.msg_browser() self.result=self.flowsheet.result_data print("under Eqn mode simulation") - print("710 ", self.result) - + print("710 ") + print("under SEQ mode simulation") + DockWidget.show_result(NodeItem.get_dock_widget()) + for i in self.graphics.scene.items(): + if (isinstance(i, NodeItem)): + i.update_tooltip() + + + def flat_list(lst): flat_lst=[] for sublist in lst: diff --git a/DockWidgets/DockWidget.py b/DockWidgets/DockWidget.py index 2b1cdb9..a32d125 100644 --- a/DockWidgets/DockWidget.py +++ b/DockWidgets/DockWidget.py @@ -218,4 +218,6 @@ class DockWidget(QDockWidget,ui_dialog): self.tableWidget.resizeColumnsToContents() except Exception as e: - print(e) \ No newline at end of file + print(e) + + \ No newline at end of file diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index fec7953..81a4e00 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index 47aa4ea..f013691 100644 --- a/Graphics.py +++ b/Graphics.py @@ -41,6 +41,7 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): self.graphicsView = graphicsView self.pos = None self.unit_operations = unit_operations + # self.node_item_list = [] def get_scene(self): return self.scene @@ -50,6 +51,9 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): def create_node_item(self,unit_operation, container): print("in create node item function") + # node_item = NodeItem(unit_operation, container, self.graphicsView) + # self.node_item_list.append(node_item) + # return node_item return NodeItem(unit_operation, container, self.graphicsView) # def boundingRect(self): @@ -604,6 +608,15 @@ class NodeItem(QtWidgets.QGraphicsItem): stack.append(self.dock_widget) self.graphicsView.setInteractive(True) + def update_tooltip(self): + default_tooltip = f"{self.name}\n\n" + default_tooltip_dict = self.obj.param_getter(self.obj.modes_list[0]) + for i, j in default_tooltip_dict.items(): + if j is not None: + default_tooltip = default_tooltip + f" {i} : {j}\n" + print("default tooltip ", default_tooltip_dict) + self.setToolTip(default_tooltip) + def findMainWindow(self): ''' diff --git a/Undo.dat b/Undo.dat index b2f107b..4a35e7c 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/mainApp.py b/mainApp.py index 462887f..d8ba5fc 100644 --- a/mainApp.py +++ b/mainApp.py @@ -262,8 +262,6 @@ class MainApp(QMainWindow,ui): self.graphicsView.setMouseTracking(True) self.graphicsView.keyPressEvent=self.delete_call - - ''' Function for undo ''' -- cgit From d2cb7dadd3554586ccd0b88af7418b24877991e8 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Mon, 27 Jul 2020 21:08:14 +0630 Subject: Partially fixed DistillationColumn --- Container.py | 12 +--- DockWidgets/DockWidgetDistillationColumn.py | 65 +++++++++++++++++---- DockWidgets/DockWidgetDistillationColumn.ui | 36 ++---------- .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4186 -> 4926 bytes Graphics.py | 27 +-------- Undo.dat | Bin 31950 -> 1641 bytes UnitOperations.py | 47 ++++++--------- 7 files changed, 84 insertions(+), 103 deletions(-) diff --git a/Container.py b/Container.py index e2b1f29..6da3b25 100644 --- a/Container.py +++ b/Container.py @@ -93,19 +93,14 @@ class Container(): ''' def delete(self,l): for item in l: - print('deleted objects ', item) self.scene.removeItem(item) for i in dock_widget_lst: if i.name == item.name: i.hide() del i break - for i in dock_widget_lst: - print(i.name) - print("delete ", dock_widget_lst) + if hasattr(item,'input'): - print("In input ") - print(item.input) for x in item.input: if x.new_line: self.scene.removeItem(x.new_line) @@ -114,8 +109,6 @@ class Container(): self.scene.removeItem(x.other_line) del x.other_line if hasattr(item,'output'): - print("in output ") - print(item.output) for x in item.output: if x.new_line: self.scene.removeItem(x.new_line) @@ -171,7 +164,6 @@ class Container(): self.flowsheet.add_compound_list(self.compounds) print("######## connection master#########\n",self.conn) for i in self.unit_operations : - print("here",i) self.flowsheet.add_unit_operations(i) if mode=='SM': @@ -186,8 +178,6 @@ class Container(): self.msg_browser() self.result=self.flowsheet.result_data print("under Eqn mode simulation") - print("710 ") - print("under SEQ mode simulation") DockWidget.show_result(NodeItem.get_dock_widget()) diff --git a/DockWidgets/DockWidgetDistillationColumn.py b/DockWidgets/DockWidgetDistillationColumn.py index 65e9932..a3650e0 100644 --- a/DockWidgets/DockWidgetDistillationColumn.py +++ b/DockWidgets/DockWidgetDistillationColumn.py @@ -34,10 +34,20 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): print("input_params_list ", self.input_dict) # tab 1 - self.l1.setText(self.obj.variables['Nt']['name']+":") - self.le1.setText(str(self.obj.variables['Nt']['value'])) - self.l2.setText(self.obj.variables['In_s']['name']+":") - self.l3.setText(self.obj.variables['InT_s']['name']+":") + # self.l1.setText(self.obj.variables['Nt']['name']+":") + # self.le1.setText(str(self.obj.variables['Nt']['value'])) + # self.l2.setText(self.obj.variables['InT_s']['name']+":") + l1 = QLineEdit() + self.lay1.addWidget(QLabel(self.obj.variables['Nt']['name'] + " :"), 0 ,0, alignment=Qt.AlignLeft) + self.lay1.addWidget(l1,0,1, alignment=Qt.AlignCenter) + self.input_dict.append(l1) + + for i in range(self.obj.variables['Ni']['value']): + print(i) + l = QLineEdit() + self.lay1.addWidget(QLabel(self.obj.variables['InT_s']['name'] +" " + str(i+1) + " location :"),i+1,0, alignment=Qt.AlignLeft) + self.lay1.addWidget(l,i+1,1, alignment=Qt.AlignCenter) + self.input_dict.append(l) # tab 2 self.l4.setText(self.obj.variables['Ctype']['name']+":") @@ -55,8 +65,13 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): for j in self.obj.compounds: self.cb2.addItem(str(j)) self.cb2.setDisabled(True) - self.cb1.currentIndexChanged.connect(self.fun2) - + self.cb1.currentIndexChanged.connect(self.fun2) + + 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']+":") @@ -72,7 +87,12 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): self.cb4.setDisabled(True) self.cb3.currentIndexChanged.connect(self.fun3) - 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] + 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.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) @@ -95,10 +115,35 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): def param(self): try: self.dict= [] + temp = 0 print("param.input_dict ", self.input_dict) - self.dict = [self.input_dict[0].text(),self.input_dict[1].text(), self.input_dict[2].text(), self.input_dict[3].currentText(), - self.input_dict[4].text(), self.input_dict[5].currentText(), self.input_dict[6].currentText(), self.input_dict[7].text(), - self.input_dict[8].text(), self.input_dict[9].currentText(), self.input_dict[10].currentText(), self.input_dict[11].text()] + 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) print("param ", self.dict) self.obj.param_setter(self.dict) diff --git a/DockWidgets/DockWidgetDistillationColumn.ui b/DockWidgets/DockWidgetDistillationColumn.ui index 0cb1043..e603071 100644 --- a/DockWidgets/DockWidgetDistillationColumn.ui +++ b/DockWidgets/DockWidgetDistillationColumn.ui @@ -78,36 +78,12 @@ - - - - TextLabel - - - - - - - - - - TextLabel - - - - - - - - - - TextLabel - - - - - - + + QLayout::SetDefaultConstraint + + + 0 + diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index e5f9002..e3b2d9e 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index f013691..4b5a3e8 100644 --- a/Graphics.py +++ b/Graphics.py @@ -50,7 +50,6 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): return ComponentSelector(self) def create_node_item(self,unit_operation, container): - print("in create node item function") # node_item = NodeItem(unit_operation, container, self.graphicsView) # self.node_item_list.append(node_item) # return node_item @@ -61,32 +60,26 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): def load_canvas(self, obj, container): stm = ['MaterialStream','EngStm'] - print('in load canvas') compounds = obj[-1] obj.pop() ComponentSelector.set_compounds(compounds) for i in obj: - print("in for loop", i) if(i in self.unit_operations): pass else: self.unit_operations.append(i) print(self.unit_operations) new_box = self.create_node_item(i, container) - print('after createing node item') new_box.setPos(i.pos.toPoint().x(), i.pos.toPoint().y()) self.scene.addItem(new_box) for i in obj: - print('in i obj line') if i.type == "MaterialStream": - print('in i obj line in if') - # print(eval(i.type)) + print(eval(i.type)) # eval(i.type).counter += 1 # print(eval(i.type).counter) elif i.type not in stm: - print('in i obj line in else') ip = i.input_stms op = i.output_stms print(ip) @@ -95,7 +88,6 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): # eval(i.type).counter += 1 # print(eval(i.type).counter) for j in ip: - print('in j in ip') pointA = NodeItem.get_instances(j.name) pointB = NodeItem.get_instances(i.name) rect = pointA.output[0].boundingRect() @@ -407,7 +399,7 @@ class NodeSocket(QtWidgets.QGraphicsItem): Container.push('Undo', data) except Exception as e: print(e) - + def get_center(self): rect = self.boundingRect() center = QtCore.QPointF(rect.x() + rect.width()/2, rect.y() + rect.height()/2) @@ -415,7 +407,6 @@ class NodeSocket(QtWidgets.QGraphicsItem): return center def hoverEnterEvent(self, event): - print("in hover enter") cursor = QCursor( Qt.CrossCursor ) QApplication.instance().setOverrideCursor(cursor) @@ -445,14 +436,12 @@ class NodeItem(QtWidgets.QGraphicsItem): l = ['Splitter','Mixer', 'DistillationColumn', 'Flash', 'CompoundSeparator', 'ShortcutColumn'] stm = ['MaterialStream', 'EnergyStream'] super(NodeItem, self).__init__() - print("in node item") self.obj = unit_operation self.container = container self.graphicsView = graphicsView self.name = self.obj.name self.type = self.obj.type - print('Before obj.modes_list') if (self.obj.modes_list): default_tooltip = f"{self.name}\n\n" @@ -464,7 +453,6 @@ class NodeItem(QtWidgets.QGraphicsItem): self.nin = self.obj.no_of_inputs self.nop = self.obj.no_of_outputs - print('Before mixer') if self.obj.type == 'Mixer': text, ok = QInputDialog.getText(self.container.graphicsView, 'Mixer', 'Enter number of input:') if ok and text: @@ -482,18 +470,16 @@ class NodeItem(QtWidgets.QGraphicsItem): if ok and text: self.nin = int(text) self.obj.no_of_inputs = self.nin - self.obj.variables['NI']['value'] = self.nin + self.obj.variables['Ni']['value'] = self.nin self.dock_widget = None lst.append(self) - print("before DockWidget") if self.obj.type in l: self.dock_widget = eval("DockWidget"+self.obj.type)(self.obj.name,self.obj.type,self.obj,self.container) elif self.obj.type in stm: self.dock_widget = eval("DockWidget"+self.obj.type)(self.obj.name,self.obj.type,self.obj,self.container) else: self.dock_widget = DockWidget(self.obj.name,self.obj.type,self.obj,self.container) - print('in dockwidget') dock_widget_lst.append(self.dock_widget) self.main_window= findMainWindow(self) self.dock_widget.setFixedWidth(360) @@ -502,8 +488,6 @@ class NodeItem(QtWidgets.QGraphicsItem): self.main_window.addDockWidget(Qt.LeftDockWidgetArea, self.dock_widget) self.dock_widget.hide() - print("after dockwidget") - self.pic=QtGui.QPixmap("Icons/"+self.type+".png") # self.pic = QIcon("svg/Cooler.svg") self.rect = QtCore.QRect(0,0,self.pic.width(),self.pic.height()) @@ -538,7 +522,6 @@ class NodeItem(QtWidgets.QGraphicsItem): # initializing the node sockets self.input , self.output = self.initialize_sockets(self.type) - print('after ndoe item') def shape(self): path = QtGui.QPainterPath() @@ -558,7 +541,6 @@ class NodeItem(QtWidgets.QGraphicsItem): # painter.drawPixmap(self.rect, self.pic.pixmap(QSize(1000,1000))) def initialize_sockets(self,type): - print("inside initialization") if(self.type=="Flash" or self.type=="CompoundSeparator"): input = [NodeSocket(QtCore.QRect(5,(self.rect.height()*x/(self.nin+1)-2),4,4), self, 'in') for x in range(1,self.nin+1) ] output = [NodeSocket(QtCore.QRect(self.rect.width()-9,(self.rect.height()*x*1/(self.nop+1)),4,4), self, 'op') for x in range(1,self.nop+1)] @@ -596,13 +578,11 @@ class NodeItem(QtWidgets.QGraphicsItem): line.pointB = line.target.get_center() self.pos = event.scenePos() self.obj.set_pos(self.pos) - #print(self.name, self.pos) def mouseDoubleClickEvent(self, event): self.graphicsView.setInteractive(False) if len(stack): - print(stack) stack[-1].hide() self.dock_widget.show() stack.append(self.dock_widget) @@ -614,7 +594,6 @@ class NodeItem(QtWidgets.QGraphicsItem): for i, j in default_tooltip_dict.items(): if j is not None: default_tooltip = default_tooltip + f" {i} : {j}\n" - print("default tooltip ", default_tooltip_dict) self.setToolTip(default_tooltip) diff --git a/Undo.dat b/Undo.dat index 4a35e7c..7c599b2 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 54f9334..fbbcce1 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -55,7 +55,6 @@ class UnitOperation(): def param_setter(self,params): print("param_setter ", params) for k,v in params.items(): - print(k,v) if k != self.mode: self.k = v self.variables[k]['value'] = v @@ -66,10 +65,8 @@ class UnitOperation(): def add_connection(self,flag,UnitOpr): if flag==1: # Input stream if flag is 1 - print("INPUT CONNECTION") self.input_stms.append(UnitOpr) else : - print("OUTPUT CONNECTION") self.output_stms.append(UnitOpr) def set_pos(self,pos): @@ -163,8 +160,6 @@ class UnitOperation(): self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out[' + str(strcount) + ']);\n') strcount += 1 else: - print(self.input_stms) - print(self.output_stms) self.OM_data_eqn += ('connect(' + self.name + '.Out,' + self.output_stms[0].name + '.In);\n') if self.mode: @@ -246,6 +241,7 @@ class ShortcutColumn(UnitOperation): class DistillationColumn(UnitOperation): def __init__(self,name='DistillationColumn'): + UnitOperation.__init__(self) self.name = name + str(DistillationColumn.counter) self.type = 'DistillationColumn' self.no_of_inputs = 1 @@ -259,20 +255,19 @@ class DistillationColumn(UnitOperation): # self.modes_list = ['RR', 'Nout', 'T'] self.modes_list = [] - self.parameters = [''] + self.parameters = ['Nt', 'Ni', 'InT_s', 'Ctype'] #self.parameters = ['Nt', 'InT_s', 'In_s', 'thermo_package', 'Ctype', 'Pcond', 'Preb'] self.Cspec_list = ['Reflux Ratio','Product Molar Flow (mol/s)', 'Temperature (K)', 'Compound Molar Fraction', 'Compound Molar Flow (mol/s)'] self.Rspec_list = ['Product Molar Flow (mol/s)', 'Temperature (K)', 'Compound Molar Fraction', 'Compound Molar Flow (mol/s)'] type(self).counter += 1 self.variables = { - 'NI' : {'name':'Number of Input', 'value':2, 'unit':''}, + 'Ni' : {'name':'Number of Input', 'value':2, 'unit':''}, 'RR' : {'name':'Reflux Ratio', 'value':None, 'unit':''}, 'T' : {'name':'Temperature', 'value':300, 'unit':'K'}, 'Nout' : {'name':'No of Sidedraws', 'value':None, 'unit':''}, 'Nt' : {'name':'No of Stages', 'value':12, 'unit':''}, - 'InT_s' : {'name':'No of Feed Stages', 'value':None, 'unit':''}, - 'In_s' : {'name':'No of Feeds', 'value':None, 'unit':''}, + 'InT_s' : {'name':'Feed Stage', 'value':[], 'unit':''}, 'thermo_package' : {'name':'Thermo Package', 'value':'Raoults_Law', 'unit':''}, 'Ctype' : {'name':'Condensor Type', 'value':'', 'unit':''}, 'Pcond' : {'name':'Condensor Pressure', 'value':101325, 'unit':'Pa'}, @@ -280,22 +275,26 @@ class DistillationColumn(UnitOperation): 'C_Spec': {'name':'Condensor Specification', 'type':'Reflux Ratio', 'value':'', 'comp':'', 'unit':''}, 'R_Spec': {'name':'Reboiler Specification', 'type':'', 'value':'', 'comp':'', 'unit':''}, } + def param_setter(self,params): print("param_setter ", params) + temp = 0 self.variables['Nt']['value'] = params[0] - self.variables['In_s']['value'] = params[1] - self.variables['InT_s']['value'] = params[2] - self.variables['Ctype']['value'] = params[3] - self.variables['Pcond']['value'] = params[4] - self.variables['C_Spec']['type'] = params[5] + for i in range(self.variables['Ni']['value']): + self.variables['InT_s']['value'].append(params[i+1]) + temp = i + 1 + + self.variables['Ctype']['value'] = params[temp+1] + self.variables['Pcond']['value'] = params[temp+2] + self.variables['C_Spec']['type'] = params[temp+3] if 'Compound' in self.variables['C_Spec']['type']: - self.variables['C_Spec']['comp'] = params[6] - self.variables['C_Spec']['value'] = params[7] - self.variables['Preb']['value'] = params[8] - self.variables['R_Spec']['type'] = params[9] + self.variables['C_Spec']['comp'] = params[temp+4] + self.variables['C_Spec']['value'] = params[temp+5] + self.variables['Preb']['value'] = params[temp+6] + self.variables['R_Spec']['type'] = params[temp+7] if 'Compound' in self.variables['R_Spec']['type']: - self.variables['R_Spec']['comp'] = params[10] - self.variables['R_Spec']['value'] = params[11] + self.variables['R_Spec']['comp'] = params[temp+8] + self.variables['R_Spec']['value'] = params[temp+9] print(self.variables) class ConvertionReactor(UnitOperation): @@ -338,20 +337,15 @@ class CompoundSeparator(UnitOperation): self.variables['SepStrm']['value'] = 2 for index, i in enumerate(range(2, len(params))): - print(index, i) if (i %2 != 0): self.variables['SepVal_c']['value'].append(float(params[i])) else: self.variables['SepFact_c']['value'].append(params[i].split(' ')[0]) - - print(self.variables['SepStrm']['value'], self.variables['SepFact_c']['value'], self.variables['SepVal_c']['value']) self.variables['SepFact_c']['value'] = json.dumps(self.variables['SepFact_c']['value']).replace('[','{').replace(']','}') self.variables['SepStrm']['value'] = str(self.variables['SepStrm']['value']) self.variables['SepVal_c']['value'] = json.dumps(self.variables['SepVal_c']['value']).replace('[','{').replace(']','}') - print(self.variables['SepStrm']['value'], self.variables['SepFact_c']['value'], self.variables['SepVal_c']['value']) - def OM_Flowsheet_Initialize(self): self.OM_data_init = '' @@ -478,7 +472,6 @@ class Splitter(UnitOperation): specval = self.variables['SpecVal_s']['value'] # [50,50] self.specval = json.dumps(specval).replace('[','{').replace(']','}') - print(self.specval) def param_setter(self,params): print("param_setter ", params) @@ -509,9 +502,7 @@ class Mixer(UnitOperation): 'outPress' : {'name':'Outlet Pressure', 'value':'Inlet_Average', 'unit':''}, } def param_setter(self, params): - print(self.input_stms, self.output_stms) self.output_stms = [] - print(self.input_stms, self.output_stms) print("param_setter ", params) self.variables['NI']['value'] = int(params[0]) self.variables['outPress']['value'] = params[1] -- cgit From df3ccdd24766f725e11bf41495855b9cd974008f Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Wed, 29 Jul 2020 21:09:26 +0630 Subject: Fixed single input Mixer issue --- Container.py | 10 ++++------ DockWidgets/DockWidgetMixer.py | 2 +- .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2226 -> 2215 bytes Undo.dat | Bin 1641 -> 222191 bytes UnitOperations.py | 16 +++++++++++----- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Container.py b/Container.py index 6da3b25..f8daaee 100644 --- a/Container.py +++ b/Container.py @@ -137,7 +137,7 @@ class Container(): if(i.name==name): return i - def add_aompounds(self,comp): + def add_compounds(self,comp): self.compounds = comp def add_thermo_package(self,thermo): @@ -181,11 +181,9 @@ class Container(): DockWidget.show_result(NodeItem.get_dock_widget()) - for i in self.graphics.scene.items(): - if (isinstance(i, NodeItem)): - i.update_tooltip() - - + # for i in self.graphics.scene.items(): + # if (isinstance(i, NodeItem)): + # i.update_tooltip() def flat_list(lst): flat_lst=[] diff --git a/DockWidgets/DockWidgetMixer.py b/DockWidgets/DockWidgetMixer.py index 01bfd48..804cdba 100644 --- a/DockWidgets/DockWidgetMixer.py +++ b/DockWidgets/DockWidgetMixer.py @@ -52,7 +52,7 @@ class DockWidgetMixer(QDockWidget,ui_dialog): try: self.dict={} print("param.input_dict ", self.input_dict) - self.dict = [int(self.input_dict[0].text()), '"' + self.input_dict[1].currentText() + '"'] + self.dict = [int(self.input_dict[0].text()), self.input_dict[1].currentText()] print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index ab2fad7..3ca772a 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index 7c599b2..5991aae 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index fbbcce1..0bcff3c 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -68,6 +68,9 @@ class UnitOperation(): self.input_stms.append(UnitOpr) else : self.output_stms.append(UnitOpr) + + print("input and output stms : ") + print(self.input_stms, self.output_stms) def set_pos(self,pos): self.pos = pos @@ -146,7 +149,7 @@ class UnitOperation(): def OM_Flowsheet_Equation(self): self.OM_data_eqn = '' - if len(self.input_stms)>1: + if len(self.input_stms)>1 or self.type == 'Mixer': strcount = 1 for strm in self.input_stms: self.OM_data_eqn += ('connect(' + strm.name + '.Out,' + self.name + '.In[' + str(strcount) + ']);\n') @@ -160,6 +163,7 @@ class UnitOperation(): self.OM_data_eqn += ('connect(' + strm.name + '.In,' + self.name + '.Out[' + str(strcount) + ']);\n') strcount += 1 else: + print("self.output_stms ", self.output_stms) self.OM_data_eqn += ('connect(' + self.name + '.Out,' + self.output_stms[0].name + '.In);\n') if self.mode: @@ -492,17 +496,19 @@ class Mixer(UnitOperation): self.type = 'Mixer' self.no_of_inputs = 6 - self.Pout_modes = ['Inlet Minimum', 'Inlet Average', 'Inlet Maximum'] + self.Pout_modes = ['Inlet_Minimum', 'Inlet_Average', 'Inlet_Maximum'] self.parameters = ['NI', 'outPress'] - # self.output_stms = None type(self).counter += 1 self.variables = { - 'NI' : {'name':'Number of Input', 'value':6, 'unit':''}, + 'NI' : {'name':'Number of Input', 'value':6, 'unit':''}, 'outPress' : {'name':'Outlet Pressure', 'value':'Inlet_Average', 'unit':''}, } + + print(self.input_stms) + print(self.output_stms) + def param_setter(self, params): - self.output_stms = [] print("param_setter ", params) self.variables['NI']['value'] = int(params[0]) self.variables['outPress']['value'] = params[1] -- cgit From 788b7f4bbb7aa51839c0836b1ab163fa831ce8fc Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Thu, 30 Jul 2020 21:19:00 +0630 Subject: Fixed populating the wrong simulation results --- Container.py | 10 +++++++ DockWidgets/DockWidget.py | 3 +++ DockWidgets/DockWidgetMaterialStream.py | 9 +++++++ DockWidgets/DockWidgetShortcutColumn.py | 5 +++- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6155 -> 6306 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8853 -> 9112 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 4160 -> 4325 bytes OMChem/Flowsheet.py | 29 +++++++++++---------- Undo.dat | Bin 222191 -> 106405 bytes UnitOperations.py | 1 - 10 files changed, 41 insertions(+), 16 deletions(-) diff --git a/Container.py b/Container.py index f8daaee..25d5176 100644 --- a/Container.py +++ b/Container.py @@ -157,6 +157,14 @@ class Container(): self.msg.append(""+stdout+"") def simulate(self,mode): + + for i in self.graphics.scene.items(): + if (isinstance(i, NodeItem)): + try: + i.dock_widget.clear_results() + except AttributeError: + pass + print("SIMULATE") print(mode) self.compounds = compound_selected @@ -166,6 +174,7 @@ class Container(): for i in self.unit_operations : self.flowsheet.add_unit_operations(i) + if mode=='SM': self.msg.append("["+str(self.current_time())+"] Simulating in Sequential mode ... ") self.flowsheet.simulate_SM(self.ip,self.op) @@ -178,6 +187,7 @@ class Container(): self.msg_browser() self.result=self.flowsheet.result_data print("under Eqn mode simulation") + DockWidget.show_result(NodeItem.get_dock_widget()) diff --git a/DockWidgets/DockWidget.py b/DockWidgets/DockWidget.py index a32d125..2087910 100644 --- a/DockWidgets/DockWidget.py +++ b/DockWidgets/DockWidget.py @@ -193,6 +193,9 @@ class DockWidget(QDockWidget,ui_dialog): except AttributeError: pass + def clear_results(self): + self.tableWidget.setRowCount(0) + # result data tab def results_category(self,name): flag = True diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index 130b290..f53e331 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -168,6 +168,15 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): i.results_category(i.name) #i.show() + + def clear_results(self): + self.mTreeWidget.clear() + self.mTableWidget.setRowCount(0) + self.lTreeWidget.clear() + self.lTableWidget.setRowCount(0) + self.vTreeWidget.clear() + self.vTableWidget.setRowCount(0) + # result data tab def results_category(self,name): flag = True diff --git a/DockWidgets/DockWidgetShortcutColumn.py b/DockWidgets/DockWidgetShortcutColumn.py index fc5c34f..f3a12b7 100644 --- a/DockWidgets/DockWidgetShortcutColumn.py +++ b/DockWidgets/DockWidgetShortcutColumn.py @@ -92,7 +92,10 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): i.results_category(i.name) except AttributeError: pass - + + def clear_results(self): + self.tableWidget.setRowCount(0) + # result data tab def results_category(self,name): flag = True diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 81a4e00..1f3821d 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index 16bd08d..d592243 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 560bdac..3201c35 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/OMChem/Flowsheet.py b/OMChem/Flowsheet.py index ab271af..19f1b8e 100644 --- a/OMChem/Flowsheet.py +++ b/OMChem/Flowsheet.py @@ -60,23 +60,24 @@ class Flowsheet(): #s = subprocess.check_output([self.omc_path, '-s',simpath]) #print(s) #print("############### StdOut ################") - print(self.stdout) + print("stdout ", self.stdout) + print("stderr ", self.stderr) os.chdir(self.root_dir) #os.system(self.omc_path + ' -s ' + simpath) - print("Hello") - if self.sim_method == 'Eqn': - print("hhhh") - csvpath = os.path.join(self.sim_dir_path,'Flowsheet_res.csv') - print("csvPath",csvpath) - with open (csvpath,'r') as resultFile: + if ('timeSimulation = 0.0,\n' in self.stdout.decode("utf-8")): self.result_data = [] - print("opened") - csvreader = csv.reader(resultFile,delimiter=',') - for row in csvreader: - print("124125") - self.result_data.append(row) - print(self.result_data) - #self.ext_data() + else: + csvpath = os.path.join(self.sim_dir_path,'Flowsheet_res.csv') + print("csvPath",csvpath) + with open (csvpath,'r') as resultFile: + self.result_data = [] + print("opened") + csvreader = csv.reader(resultFile,delimiter=',') + for row in csvreader: + print("124125") + self.result_data.append(row) + print(self.result_data) + #self.ext_data() def send_for_simulation_SM(self,unitop): diff --git a/Undo.dat b/Undo.dat index 5991aae..67af9b5 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 0bcff3c..45d4259 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -514,7 +514,6 @@ class Mixer(UnitOperation): self.variables['outPress']['value'] = params[1] print(self.variables) - class Heater(UnitOperation): def __init__(self, name='Heater'): -- cgit From 7a6921b773cf8879cc29c8eb6c0f6ca2a1da961e Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Mon, 3 Aug 2020 20:45:29 +0630 Subject: Add Thermo Package for ShortcutColumn --- Container.py | 31 ---- DockWidgets/DockWidgetShortcutColumn.py | 11 +- DockWidgets/DockWidgetShortcutColumn.ui | 187 ++++++++++++--------- .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 4325 -> 4661 bytes OMChem/Flowsheet.py | 10 +- Undo.dat | Bin 106405 -> 77818 bytes UnitOperations.py | 1 + mainApp.py | 3 - thermopackage.txt | 2 +- 9 files changed, 124 insertions(+), 121 deletions(-) diff --git a/Container.py b/Container.py index 25d5176..db8e173 100644 --- a/Container.py +++ b/Container.py @@ -40,41 +40,10 @@ class Container(): time = str(now.hour) + ":" + str(now.minute) + ":" +str(now.second) return time - # def updateConn(self,key,value): - # self.conn[key].append(value) - # self.msg.append("["+str(self.current_time())+"] "+key.name+" output is connected to input of "+value.name +" ") - # - # def connection(self): - # try: - # self.op.clear() - # self.ip.clear() - # self.opl.clear() - # stm = ['MaterialStream','EngStm'] - # for i in self.conn: - # if i.type not in stm: - # self.op[i]=self.conn[i] - # - # for j in range(len(self.conn[i])): - # if self.conn[i][j].type not in stm: - # self.ip[self.conn[i][j]].append(i) - # - # for i in self.op: - # i.connect(InputStms=self.ip[i],OutputStms=self.op[i]) - # - # self.opl.append([self.op[i] for i in self.op]) - # self.opl=flat_list(flat_list(self.opl)) - # except Exception as e: - # print(e) - - # @staticmethod - # def addUnitOpObj(obj): - # self.unit_operations.append(obj) - def add_unit_operation(self, obj): box = None self.obj = obj self.scene = self.graphics.get_scene() - #self.graphicsView = graphicsView box = self.graphics.create_node_item(self.obj, self) self.scene.addItem(box) box.setPos(2500-30, 2500-30) diff --git a/DockWidgets/DockWidgetShortcutColumn.py b/DockWidgets/DockWidgetShortcutColumn.py index f3a12b7..409c051 100644 --- a/DockWidgets/DockWidgetShortcutColumn.py +++ b/DockWidgets/DockWidgetShortcutColumn.py @@ -63,7 +63,13 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): self.l8.setText(self.obj.variables['RR']['name']+":") self.le8.setText(str(self.obj.variables['RR']['value'])) - self.input_dict = [self.cb1, self.cb2, self.le3, self.le4, self.cb5, self.le6, self.le7, self.le8] + self.l9.setText("Thermo Package :") + + self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] + for j in self.lines: + self.cb6.addItem(str(j)) + + self.input_dict = [self.cb1, self.cb2, self.le3, self.le4, self.cb5, self.le6, self.le7, self.le8, self.cb6] except Exception as e: print(e) @@ -76,7 +82,8 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): self.dict=[] print("param.input_dict ", self.input_dict) self.dict = [self.input_dict[0].currentText(),self.input_dict[1].currentText(),float(self.input_dict[2].text()), float(self.input_dict[3].text()), - self.input_dict[4].currentText(), float(self.input_dict[5].text()), float(self.input_dict[6].text()), float(self.input_dict[7].text())] + self.input_dict[4].currentText(), float(self.input_dict[5].text()), float(self.input_dict[6].text()), float(self.input_dict[7].text()), + self.input_dict[8].currentText()] print("param ", self.dict) self.obj.param_setter(self.dict) diff --git a/DockWidgets/DockWidgetShortcutColumn.ui b/DockWidgets/DockWidgetShortcutColumn.ui index 47595ec..f79c27e 100644 --- a/DockWidgets/DockWidgetShortcutColumn.ui +++ b/DockWidgets/DockWidgetShortcutColumn.ui @@ -50,7 +50,7 @@ 8 13 331 - 237 + 261 @@ -65,8 +65,8 @@ - - + + 0 @@ -75,15 +75,18 @@ - - - - TextLabel + + + + + 0 + 0 + - - + + 0 @@ -95,21 +98,25 @@ - - + + + + TextLabel + + + + + - + 0 0 - - TextLabel - - - + + 0 @@ -121,15 +128,8 @@ - - - - TextLabel - - - - - + + 0 @@ -138,29 +138,25 @@ - - - - TextLabel - - - - - + + TextLabel - - - - TextLabel + + + + + 0 + 0 + - - + + 0 @@ -169,28 +165,25 @@ - - + + TextLabel - - + + - + 0 0 - - TextLabel - - - + + 0 @@ -199,18 +192,28 @@ - - + + + + TextLabel + + + + + - + 0 0 + + TextLabel + - - + + 0 @@ -222,40 +225,37 @@ - - + + - + 0 0 + + TextLabel + - - + + TextLabel - - - - - 0 - 0 - + + + + TextLabel - - - - - 0 - 0 - + + + + TextLabel @@ -267,7 +267,7 @@ 10 - 250 + 350 331 23 @@ -282,6 +282,41 @@ Submit + + + + 10 + 280 + 331 + 61 + + + + + 0 + 0 + + + + + + + + + + + + TextLabel + + + + + + + + + + diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index 3201c35..e1adb56 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/OMChem/Flowsheet.py b/OMChem/Flowsheet.py index 19f1b8e..ab4d729 100644 --- a/OMChem/Flowsheet.py +++ b/OMChem/Flowsheet.py @@ -57,13 +57,8 @@ class Flowsheet(): self.process = Popen([self.omc_path, '-s',simpath], stdout=PIPE, stderr=PIPE) self.stdout, self.stderr = self.process.communicate() - #s = subprocess.check_output([self.omc_path, '-s',simpath]) - #print(s) - #print("############### StdOut ################") - print("stdout ", self.stdout) - print("stderr ", self.stderr) + os.chdir(self.root_dir) - #os.system(self.omc_path + ' -s ' + simpath) if ('timeSimulation = 0.0,\n' in self.stdout.decode("utf-8")): self.result_data = [] else: @@ -74,10 +69,9 @@ class Flowsheet(): print("opened") csvreader = csv.reader(resultFile,delimiter=',') for row in csvreader: - print("124125") + print("in reading csvreader") self.result_data.append(row) print(self.result_data) - #self.ext_data() def send_for_simulation_SM(self,unitop): diff --git a/Undo.dat b/Undo.dat index 67af9b5..aef1caa 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 45d4259..4d3a92d 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -224,6 +224,7 @@ class ShortcutColumn(UnitOperation): self.variables['Pcond']['value'] = params[5] self.variables['Preb']['value'] = params[6] self.variables['RR']['value'] = params[7] + self.thermo_package = params[8] print(self.variables) diff --git a/mainApp.py b/mainApp.py index d8ba5fc..78bbd98 100644 --- a/mainApp.py +++ b/mainApp.py @@ -41,9 +41,6 @@ class MainApp(QMainWindow,ui): # Loading and setting up style sheet self.setupUi(self) - # style = open('cyan.css','r') - # style = style.read() - # self.setStyleSheet(style) # Initializing attributes self.zoom_count = 0 diff --git a/thermopackage.txt b/thermopackage.txt index 9ed6616..f9155f5 100644 --- a/thermopackage.txt +++ b/thermopackage.txt @@ -1,6 +1,6 @@ RaoultsLaw NRTL -INIQUAC +UNIQUAC UNIFAC PengRobinson GraysonStreed \ No newline at end of file -- cgit From f21a9a6ff969e4472100ee0f2ad498018700d935 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Mon, 3 Aug 2020 21:13:22 +0630 Subject: Update Thermo Package option for MaterialStream DockWidget --- DockWidgets/DockWidgetMaterialStream.py | 38 ++++++-------- DockWidgets/DockWidgetMaterialStream.ui | 57 ++++++++++++++++++--- .../DockWidgetMaterialStream.cpython-37.pyc | Bin 9112 -> 8936 bytes Streams.py | 12 ++--- Undo.dat | Bin 77818 -> 4021 bytes 5 files changed, 72 insertions(+), 35 deletions(-) diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index f53e331..915bea3 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -64,20 +64,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): print("input_params_list ", self.input_dict) for c,i in enumerate(self.input_dict): - if(i=="thermo_package"): - 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.input_dict[i] = combo - print("thermo") - elif(i=="x_pc"): + if(i=="x_pc"): noc = len(compound_selected) print(noc) self.x_pclist.clear() @@ -111,6 +98,12 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): lay.addWidget(QLabel("mol/s"),0,2, alignment=Qt.AlignCenter) self.formLayout.addRow(lay) self.input_dict[i] = l + + self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] + for j in self.lines: + self.cbTP.addItem(str(j)) + self.input_dict['Thermo Package'] = self.cbTP + except Exception as e: print(e) @@ -123,13 +116,8 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): print("param.input_dict ", self.input_dict) for i in self.input_dict: - if(i=="thermo_package"): - if (self.input_dict[i].currentText()): - self.dict[i] = self.input_dict[i].currentText() - else: - self.show_error() - break - elif(i =="x_pc"): + print(i) + if(i =="x_pc"): l=[] mf = [] total_moles = 0 @@ -145,14 +133,18 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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) + elif (i == "Thermo Package"): + self.dict[i] = self.input_dict[i].currentText() else: if (self.input_dict[i].text()): self.dict[i] = self.input_dict[i].text() else: - print(self.input_dict[i].text()) + print(self.input_dict[i]) self.show_error() break - + # print(self.input_dict[-1].currentText()) + # self.dict['Thermo Package'] = self.input_dict['Thermo Package'].currentText() + print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() diff --git a/DockWidgets/DockWidgetMaterialStream.ui b/DockWidgets/DockWidgetMaterialStream.ui index 8995ba6..a442eee 100644 --- a/DockWidgets/DockWidgetMaterialStream.ui +++ b/DockWidgets/DockWidgetMaterialStream.ui @@ -98,7 +98,7 @@ 10 100 331 - 321 + 221 @@ -114,7 +114,7 @@ 10 - 430 + 390 331 21 @@ -123,6 +123,51 @@ Submit + + + + 10 + 330 + 331 + 51 + + + + + + + + + + + + + 0 + 0 + + + + Thermo Package + + + + + + + true + + + + 0 + 0 + + + + + + + + @@ -273,8 +318,8 @@ 0 0 - 335 - 494 + 151 + 128 @@ -362,8 +407,8 @@ 0 0 - 335 - 494 + 151 + 128 diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index d592243..16511b3 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/Streams.py b/Streams.py index c987b4c..bed975d 100644 --- a/Streams.py +++ b/Streams.py @@ -90,28 +90,28 @@ class MaterialStream(): self.mode2 = 'T' dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['T']['value'], - "MolFlow":self.variables['F_p[1]']['value'],"x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'],"x_pc":self.variables['x_pc']['value']} elif(mode=="PH"): self.mode1 = 'P' self.mode2 = 'H_p[1]' dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['H_p[1]']['value'], - "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value']} elif(mode=="PVF"): self.mode1 = 'P' self.mode2 = 'xvap' dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['xvap']['value'], - "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value']} elif(mode=="TVF"): self.mode1 = 'T' self.mode2 = 'xvap' dict = {self.mode1:self.variables['T']['value'], self.mode2:self.variables['xvap']['value'], - "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value']} elif(mode=="PS"): self.mode1 = 'P' self.mode2 = 'S_p[1]' dict = {self.mode1:self.variables['P']['value'], self.mode2: self.variables['S_p[1]']['value'], - "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value'], "thermo_package":self.thermo_package} + "MolFlow":self.variables['F_p[1]']['value'], "x_pc":self.variables['x_pc']['value']} return dict @@ -120,7 +120,7 @@ class MaterialStream(): print("inside paramsetter ", dict) self.variables['x_pc']['value'] = dict['x_pc'].split(",") - self.thermo_package = dict['thermo_package'] + self.thermo_package = dict['Thermo package'] self.variables['F_p[1]']['value'] = dict['MolFlow'] print("inside") # self.Prop[self.mode2] = dict[self.mode2] diff --git a/Undo.dat b/Undo.dat index aef1caa..7d03ca8 100644 Binary files a/Undo.dat and b/Undo.dat differ -- cgit From 62b3c9106e1a3cadb1c570818ca7f1a86dffd914 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Wed, 5 Aug 2020 20:16:55 +0630 Subject: Added DockWidgetCompressorExpander --- DockWidgets/DockWidget.ui | 4 ++-- DockWidgets/DockWidgetMaterialStream.py | 6 +++--- .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8936 -> 8485 bytes Graphics.py | 3 +++ Undo.dat | Bin 4021 -> 80258 bytes UnitOperations.py | 8 ++++++-- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/DockWidgets/DockWidget.ui b/DockWidgets/DockWidget.ui index 5851d71..ba6dc52 100644 --- a/DockWidgets/DockWidget.ui +++ b/DockWidgets/DockWidget.ui @@ -101,7 +101,7 @@ 10 100 331 - 321 + 271 @@ -117,7 +117,7 @@ 10 - 430 + 380 331 21 diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index 915bea3..ee57902 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -36,9 +36,9 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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())) + # 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())) # input data tab def modes(self): diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index 16511b3..ddd011b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index 4b5a3e8..ba034fb 100644 --- a/Graphics.py +++ b/Graphics.py @@ -23,6 +23,7 @@ from DockWidgets.DockWidgetMixer import * from DockWidgets.DockWidgetSplitter import * from DockWidgets.DockWidgetFlash import * from DockWidgets.DockWidgetCompoundSeparator import * +from DockWidgets.DockWidgetCompressorExpander import * import datetime @@ -478,6 +479,8 @@ class NodeItem(QtWidgets.QGraphicsItem): self.dock_widget = eval("DockWidget"+self.obj.type)(self.obj.name,self.obj.type,self.obj,self.container) elif self.obj.type in stm: self.dock_widget = eval("DockWidget"+self.obj.type)(self.obj.name,self.obj.type,self.obj,self.container) + elif self.obj.type == "AdiabaticCompressor" or self.obj.type == "AdiabaticExpander": + self.dock_widget = eval("DockWidgetCompressorExpander")(self.obj.name,self.obj.type,self.obj,self.container) else: self.dock_widget = DockWidget(self.obj.name,self.obj.type,self.obj,self.container) dock_widget_lst.append(self.dock_widget) diff --git a/Undo.dat b/Undo.dat index 7d03ca8..b05cceb 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 4d3a92d..1c98f86 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -55,7 +55,11 @@ class UnitOperation(): def param_setter(self,params): print("param_setter ", params) for k,v in params.items(): - if k != self.mode: + print(k, v) + if k == 'Thermo Package': + self.thermo_package = v + print('haha') + elif k != self.mode: self.k = v self.variables[k]['value'] = v else: @@ -577,7 +581,7 @@ class AdiabaticCompressor(UnitOperation): self.parameters = ['Eff'] type(self).counter += 1 self.variables = { - 'Pdel' : {'name':'Pressure Drop', 'value':0, 'unit':'Pa'}, + 'Pdel' : {'name':'Pressure Increase', 'value':0, 'unit':'Pa'}, 'Tdel' : {'name':'Temperature Increase', 'value':0, 'unit':'K'}, 'Pout' : {'name':'Outlet Pressure', 'value':101325, 'unit':'Pa'}, 'Tout' : {'name':'Outlet Temperature', 'value':298.15, 'unit':'K'}, -- cgit From 76e58a6e14de583ab9d6694aeef9af215972649a Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Wed, 5 Aug 2020 20:41:35 +0630 Subject: Remove unnecessary codes from DockWidget.py --- DockWidgets/DockWidget.py | 110 +++------------------- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 6306 -> 4323 bytes Undo.dat | Bin 80258 -> 28665 bytes 3 files changed, 11 insertions(+), 99 deletions(-) diff --git a/DockWidgets/DockWidget.py b/DockWidgets/DockWidget.py index 2087910..d6813ee 100644 --- a/DockWidgets/DockWidget.py +++ b/DockWidgets/DockWidget.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidget.ui') @@ -20,15 +17,13 @@ class DockWidget(QDockWidget,ui_dialog): self.obj=obj self.type = comptype self.input_dict = {} - self.x_pclist = [] self.modes() self.comboBox.currentIndexChanged.connect(self.mode_selection) print("constructor ", self.input_dict) self.pushButton_2.clicked.connect(self.param) - self.dict = {} - self.name_type = None + self.dict = {} self.container = container # input data tab @@ -61,72 +56,18 @@ class DockWidget(QDockWidget,ui_dialog): try: print("input_params_list ", self.input_dict) for c,i in enumerate(self.input_dict): + print(i) if i == None: continue - if(i=="thermo_package"): - 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)) - combo.setMinimumContentsLength(15) - lay = QGridLayout() - lay.addWidget(QLabel(i+":"), 0,0, alignment=Qt.AlignLeft) - lay.addWidget(combo, 0, 1, alignment=Qt.AlignCenter) - lay.addWidget(QLabel(''), 0, 2, alignment = Qt.AlignCenter) - self.formLayout.addRow(lay) - self.input_dict[i] = combo - print("thermo") - elif(i=="Ctype"): - combo = QComboBox() - self.lines = ["Total","Partial"] - for j in self.lines: - combo.addItem(str(j)) - combo.setMinimumContentsLength(15) - lay = QGridLayout() - lay.addWidget(QLabel("Condensor Type :"), 0, 0, alignment=Qt.AlignLeft) - lay.addWidget(combo, 0, 1, alignment=Qt.AlignCenter) - lay.addWidget(QLabel(''), 0, 2, alignment = Qt.AlignCenter) - self.formLayout.addRow(lay) - self.input_dict[i] = combo - elif(i=="x_pc"): - noc = len(compound_selected) - print(noc) - self.x_pclist.clear() - gp = QGroupBox("Compounds") - lay = QGridLayout() - for j in range(noc): - l = QLineEdit() - self.input_dict[i] = "x_pc" - lay.addWidget(QLabel(str(compound_selected[j])+":"),j,0, alignment=Qt.AlignLeft) - lay.addWidget(l,j,1, alignment=Qt.AlignCenter) - lay.addWidget(QLabel(self.obj.variables[i]['unit']),j,2, alignment=Qt.AlignCenter) - self.x_pclist.append(l) - gp.setLayout(lay) - self.formLayout.addRow(gp) - else: - print("elseloop") - print(i) - if i == None: - continue - l = QLineEdit() - if self.input_dict[i] != None: - l.setText(str(self.input_dict[i])) - print('before lay') - lay = QGridLayout() - lay.addWidget(QLabel(self.obj.variables[i]['name']+":"),0,0, alignment=Qt.AlignLeft) #self.obj.variables[i]['name'] - lay.addWidget(l,0,1, alignment=Qt.AlignCenter) - print('after lay') - 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) - print('after all') - self.formLayout.addRow(lay) - self.input_dict[i] = l - - + l = QLineEdit() + if self.input_dict[i] != None: + l.setText(str(self.input_dict[i])) + lay = QGridLayout() + lay.addWidget(QLabel(self.obj.variables[i]['name']+":"),0,0, alignment=Qt.AlignLeft) + lay.addWidget(l,0,1, alignment=Qt.AlignCenter) + lay.addWidget(QLabel(self.obj.variables[i]['unit']),0,2, alignment=Qt.AlignCenter) + self.formLayout.addRow(lay) + self.input_dict[i] = l except Exception as e: print(e) @@ -140,35 +81,6 @@ class DockWidget(QDockWidget,ui_dialog): for i in self.input_dict: if (self.input_dict[i] == None): continue - if(i=="thermo_package"): - if (self.input_dict[i].currentText()): - self.dict[i] = self.input_dict[i].currentText() - else: - self.show_error() - break - elif(i=="Ctype"): - if (self.input_dict[i].currentText()): - self.dict[i] = self.input_dict[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.x_pclist[c].setText(mf[-1]) - self.dict[i] = ",".join(mf) - elif(i == 'Pout' and self.obj.type == 'Mixer' or i == '' or i == 'HKey' or i == 'LKey'): - self.dict[i] = self.input_dict[i].currentText() else: print(self.input_dict[i], i, self.obj.type) if (self.input_dict[i].text()): diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 1f3821d..431c298 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/Undo.dat b/Undo.dat index b05cceb..b56b18f 100644 Binary files a/Undo.dat and b/Undo.dat differ -- cgit From 37a360da5346302eb881071f7db2fe7159f8e643 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Wed, 5 Aug 2020 21:07:37 +0630 Subject: Remove unnecessary codes from all dock widgets --- DockWidgets/DockWidget.py | 4 ++-- DockWidgets/DockWidgetCompoundSeparator.py | 7 ------- DockWidgets/DockWidgetDistillationColumn.py | 5 +---- DockWidgets/DockWidgetFlash.py | 12 +++--------- DockWidgets/DockWidgetMaterialStream.py | 23 ++--------------------- DockWidgets/DockWidgetMixer.py | 12 +----------- DockWidgets/DockWidgetShortcutColumn.py | 17 ++--------------- DockWidgets/DockWidgetSplitter.py | 13 +------------ 8 files changed, 12 insertions(+), 81 deletions(-) diff --git a/DockWidgets/DockWidget.py b/DockWidgets/DockWidget.py index d6813ee..b3845bb 100644 --- a/DockWidgets/DockWidget.py +++ b/DockWidgets/DockWidget.py @@ -23,7 +23,7 @@ class DockWidget(QDockWidget,ui_dialog): print("constructor ", self.input_dict) self.pushButton_2.clicked.connect(self.param) - self.dict = {} + self.dict = {} # a dictionary self.container = container # input data tab @@ -76,7 +76,7 @@ class DockWidget(QDockWidget,ui_dialog): def param(self): try: - self.dict={} + self.dict = {} print("param.input_dict ", self.input_dict) for i in self.input_dict: if (self.input_dict[i] == None): diff --git a/DockWidgets/DockWidgetCompoundSeparator.py b/DockWidgets/DockWidgetCompoundSeparator.py index 1818290..6de61a5 100644 --- a/DockWidgets/DockWidgetCompoundSeparator.py +++ b/DockWidgets/DockWidgetCompoundSeparator.py @@ -21,18 +21,13 @@ class DockWidgetCompoundSeparator(QDockWidget,ui_dialog): self.type = comptype self.input_dict = [] - print("constructor ", self.input_dict) self.input_params_list() self.dict = [] def input_params_list(self): try: - print("input_params_list ", self.input_dict) if self.type == 'CompoundSeparator': - - # self.gridLayout = QGridLayout() calculationGroupBox = QGroupBox('Calculation Parameters') - calculationLayout = QGridLayout() r1 = QRadioButton('Stream 1') @@ -81,7 +76,6 @@ class DockWidgetCompoundSeparator(QDockWidget,ui_dialog): def param(self): try: self.dict=[] - print("param.input_dict ", self.input_dict) self.dict = [self.input_dict[0].isChecked(), self.input_dict[1].isChecked()] j = 2 @@ -91,7 +85,6 @@ class DockWidgetCompoundSeparator(QDockWidget,ui_dialog): self.dict.append(self.input_dict[j+i+1].text()) j += 1 - print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() diff --git a/DockWidgets/DockWidgetDistillationColumn.py b/DockWidgets/DockWidgetDistillationColumn.py index a3650e0..3255015 100644 --- a/DockWidgets/DockWidgetDistillationColumn.py +++ b/DockWidgets/DockWidgetDistillationColumn.py @@ -20,7 +20,6 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): self.obj=obj self.type = comptype self.input_dict = [] - print("constructor ", self.input_dict) self.pushButton_2.clicked.connect(self.param) self.dict = [] self.input_params_list() @@ -34,9 +33,7 @@ class DockWidgetDistillationColumn(QDockWidget,ui_dialog): print("input_params_list ", self.input_dict) # tab 1 - # self.l1.setText(self.obj.variables['Nt']['name']+":") - # self.le1.setText(str(self.obj.variables['Nt']['value'])) - # self.l2.setText(self.obj.variables['InT_s']['name']+":") + l1 = QLineEdit() self.lay1.addWidget(QLabel(self.obj.variables['Nt']['name'] + " :"), 0 ,0, alignment=Qt.AlignLeft) self.lay1.addWidget(l1,0,1, alignment=Qt.AlignCenter) diff --git a/DockWidgets/DockWidgetFlash.py b/DockWidgets/DockWidgetFlash.py index 1634169..4e1c5e3 100644 --- a/DockWidgets/DockWidgetFlash.py +++ b/DockWidgets/DockWidgetFlash.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidgetFlash.ui') @@ -20,15 +17,12 @@ class DockWidgetFlash(QDockWidget,ui_dialog): self.obj=obj self.type = comptype self.input_dict = [] - print("constructor ", self.input_dict) self.input_params_list() self.btn.clicked.connect(self.param) - self.dict = [] + self.dict = [] # a list def input_params_list(self): - try: - print("input_params_list ", self.input_dict) - + try: self.l1.setText(self.obj.variables['thermo_package']['name']+":") self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] for j in self.lines: @@ -63,7 +57,7 @@ class DockWidgetFlash(QDockWidget,ui_dialog): def param(self): try: - self.dict={} + self.dict = [] print("param.input_dict ", self.input_dict) self.dict = [self.input_dict[0].currentText(),self.input_dict[1].isChecked(), float(self.input_dict[2].text()), self.input_dict[3].isChecked(), float(self.input_dict[4].text())] print("param ", self.dict) diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index ee57902..a661362 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidgetMaterialStream.ui') @@ -24,9 +21,8 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): self.modes() self.comboBox.currentIndexChanged.connect(self.mode_selection) - print("constructor ", self.input_dict) self.pushButton_2.clicked.connect(self.param) - self.dict = {} + self.dict = {} # a dictionary self.name_type = None self.container = container @@ -36,10 +32,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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())) - # input data tab def modes(self): modes_list = self.obj.modes_list @@ -60,9 +52,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): self.input_params_list() def input_params_list(self): - try: - print("input_params_list ", self.input_dict) - + try: for c,i in enumerate(self.input_dict): if(i=="x_pc"): noc = len(compound_selected) @@ -113,7 +103,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): def param(self): try: self.dict={} - print("param.input_dict ", self.input_dict) for i in self.input_dict: print(i) @@ -142,8 +131,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): print(self.input_dict[i]) self.show_error() break - # print(self.input_dict[-1].currentText()) - # self.dict['Thermo Package'] = self.input_dict['Thermo Package'].currentText() print("param ", self.dict) self.obj.param_setter(self.dict) @@ -152,14 +139,10 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): except Exception as e: print(e) - @staticmethod def show_result(lst): - #DockWidget1.flag = True for i in lst: i.results_category(i.name) - #i.show() - def clear_results(self): self.mTreeWidget.clear() @@ -243,7 +226,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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 = [] @@ -295,7 +277,6 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): 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) diff --git a/DockWidgets/DockWidgetMixer.py b/DockWidgets/DockWidgetMixer.py index 804cdba..6c46c39 100644 --- a/DockWidgets/DockWidgetMixer.py +++ b/DockWidgets/DockWidgetMixer.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidgetMixer.ui') @@ -21,16 +18,13 @@ class DockWidgetMixer(QDockWidget,ui_dialog): self.type = comptype self.input_dict = [] self.x_pclist = [] - print("constructor ", self.input_dict) self.input_params_list() self.btn.clicked.connect(self.param) self.dict = {} # input data tab def input_params_list(self): - try: - print("input_params_list ", self.input_dict) - + try: self.l1.setText(self.obj.variables['NI']['name']+":") self.le1.setText(str(self.obj.variables['NI']['value'])) self.u1.setText(self.obj.variables['NI']['unit']) @@ -38,8 +32,6 @@ class DockWidgetMixer(QDockWidget,ui_dialog): self.cb2.addItem(str(i)) self.l2.setText(self.obj.variables['outPress']['name']+":") - - self.input_dict = [self.le1, self.cb2] except Exception as e: @@ -51,9 +43,7 @@ class DockWidgetMixer(QDockWidget,ui_dialog): def param(self): try: self.dict={} - print("param.input_dict ", self.input_dict) self.dict = [int(self.input_dict[0].text()), self.input_dict[1].currentText()] - print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() diff --git a/DockWidgets/DockWidgetShortcutColumn.py b/DockWidgets/DockWidgetShortcutColumn.py index 409c051..2b7dfae 100644 --- a/DockWidgets/DockWidgetShortcutColumn.py +++ b/DockWidgets/DockWidgetShortcutColumn.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidgetShortcutColumn.ui') @@ -20,7 +17,6 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): self.obj=obj self.type = comptype self.input_dict = [] - print("constructor ", self.input_dict) self.input_params_list() self.btn.clicked.connect(self.param) self.dict = [] @@ -30,9 +26,7 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): # input data tab def input_params_list(self): - try: - print("input_params_list ", self.input_dict) - + try: self.l1.setText(self.obj.variables['HKey']['name']+":") self.l2.setText(self.obj.variables['LKey']['name']+":") @@ -41,7 +35,6 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): self.cb1.addItem(str(i)) self.cb2.addItem(str(i)) - self.l3.setText(self.obj.variables['HKey_x_pc']['name']+":") self.le3.setText(str(self.obj.variables['HKey_x_pc']['value'])) self.u3.setText(self.obj.variables['HKey_x_pc']['unit']) @@ -80,12 +73,9 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): def param(self): try: self.dict=[] - print("param.input_dict ", self.input_dict) self.dict = [self.input_dict[0].currentText(),self.input_dict[1].currentText(),float(self.input_dict[2].text()), float(self.input_dict[3].text()), self.input_dict[4].currentText(), float(self.input_dict[5].text()), float(self.input_dict[6].text()), float(self.input_dict[7].text()), - self.input_dict[8].currentText()] - - print("param ", self.dict) + self.input_dict[8].currentText()] self.obj.param_setter(self.dict) self.hide() @@ -127,8 +117,5 @@ class DockWidgetShortcutColumn(QDockWidget,ui_dialog): self.tableWidget.setItem(rowPosition , 1, QTableWidgetItem(resultval)) self.tableWidget.setItem(rowPosition , 2, QTableWidgetItem(obj.variables[val]['unit'])) self.tableWidget.resizeColumnsToContents() - - print(obj.variables) - except Exception as e: print(e) \ No newline at end of file diff --git a/DockWidgets/DockWidgetSplitter.py b/DockWidgets/DockWidgetSplitter.py index c1c0120..303d166 100644 --- a/DockWidgets/DockWidgetSplitter.py +++ b/DockWidgets/DockWidgetSplitter.py @@ -2,10 +2,7 @@ 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 ComponentSelector import * -from collections import defaultdict from Graphics import * ui_dialog,_ = loadUiType('DockWidgets/DockWidgetSplitter.ui') @@ -20,23 +17,19 @@ class DockWidgetSplitter(QDockWidget,ui_dialog): self.obj=obj self.type = comptype self.input_dict = [] - print("constructor ", self.input_dict) self.input_params_list() self.btn.clicked.connect(self.param) self.dict = {} # input data tab def input_params_list(self): - try: - print("input_params_list ", self.input_dict) - + try: self.l1.setText(self.obj.variables['No']['name']+":") self.le1.setText(str(self.obj.variables['No']['value'])) self.u1.setText(self.obj.variables['No']['unit']) for i in self.obj.CalcType_modes: self.cb2.addItem(str(i)) - self.l2.setText(self.obj.variables['CalcType']['name']+":") self.l3.setText("Stream 1 :") @@ -45,7 +38,6 @@ class DockWidgetSplitter(QDockWidget,ui_dialog): self.u4.setText('') self.cb2.currentIndexChanged.connect(self.fun) - self.input_dict = [self.le1, self.cb2, self.le3, self.le4] except Exception as e: @@ -68,11 +60,8 @@ class DockWidgetSplitter(QDockWidget,ui_dialog): def param(self): try: self.dict={} - print("param.input_dict ", self.input_dict) self.dict = [int(self.input_dict[0].text()),self.input_dict[1].currentText(), float(self.input_dict[2].text()), float(self.input_dict[3].text())] - print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() - except Exception as e: print(e) -- cgit From 4babc3c0fb44e9dc0332e4d0da9bd12ab67b3c57 Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Fri, 7 Aug 2020 21:10:13 +0630 Subject: Clean unnecessary codes from Graphics.py, Container.py and Streams.py --- Container.py | 18 ++----- DockWidgets/__pycache__/DockWidget.cpython-37.pyc | Bin 4323 -> 4323 bytes .../DockWidgetCompoundSeparator.cpython-37.pyc | Bin 3169 -> 3047 bytes .../DockWidgetDistillationColumn.cpython-37.pyc | Bin 4926 -> 4893 bytes .../__pycache__/DockWidgetFlash.cpython-37.pyc | Bin 2896 -> 2719 bytes .../DockWidgetMaterialStream.cpython-37.pyc | Bin 8485 -> 8308 bytes .../__pycache__/DockWidgetMixer.cpython-37.pyc | Bin 2215 -> 1983 bytes .../DockWidgetShortcutColumn.cpython-37.pyc | Bin 4661 -> 4417 bytes .../__pycache__/DockWidgetSplitter.cpython-37.pyc | Bin 2733 -> 2501 bytes Graphics.py | 50 ++++--------------- Streams.py | 55 +++------------------ ToDoList.txt | 20 -------- Undo.dat | Bin 28665 -> 24066 bytes UnitOperations.py | 37 ++------------ mainApp.py | 2 +- 15 files changed, 23 insertions(+), 159 deletions(-) delete mode 100644 ToDoList.txt diff --git a/Container.py b/Container.py index db8e173..c77d631 100644 --- a/Container.py +++ b/Container.py @@ -1,21 +1,10 @@ -from OMChem.Flowsheet import Flowsheet -from ComponentSelector import * from collections import defaultdict -from PyQt5.QtCore import * -from PyQt5.QtWidgets import * -from PyQt5.QtGui import * -from PyQt5.uic import loadUiType -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QGraphicsProxyWidget, QGraphicsObject, QGraphicsEllipseItem ,QGraphicsPixmapItem,QApplication, QGraphicsView, QGraphicsScene, QHBoxLayout, QWidget, QLabel -from PyQt5.QtGui import QBrush ,QTransform ,QMouseEvent -import PyQt5.QtCore as QtCore -import PyQt5.QtWidgets as QtWidgets import datetime -import itertools -import json import pickle import os -import sys + +from OMChem.Flowsheet import Flowsheet +from ComponentSelector import * from Graphics import * class Container(): @@ -157,7 +146,6 @@ class Container(): self.result=self.flowsheet.result_data print("under Eqn mode simulation") - DockWidget.show_result(NodeItem.get_dock_widget()) # for i in self.graphics.scene.items(): diff --git a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc index 431c298..86045c1 100644 Binary files a/DockWidgets/__pycache__/DockWidget.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidget.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc index ecad97b..08716b1 100644 Binary files a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc index e3b2d9e..55be9b4 100644 Binary files a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc index 3054328..6828ab1 100644 Binary files a/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetFlash.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc index ddd011b..a8c9f80 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc index 3ca772a..460aa1b 100644 Binary files a/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetMixer.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc index e1adb56..13f8328 100644 Binary files a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-37.pyc differ diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc index bcd36dc..fea33a2 100644 Binary files a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc and b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-37.pyc differ diff --git a/Graphics.py b/Graphics.py index ba034fb..8d7c220 100644 --- a/Graphics.py +++ b/Graphics.py @@ -1,20 +1,10 @@ -from functools import partial -from collections import defaultdict -import sys -import numpy as np -from OMChem.Flowsheet import Flowsheet -import pandas as pd from PyQt5.QtCore import * from PyQt5.QtWidgets import * -from PyQt5.QtGui import QTextDocument ,QTextCursor ,QTextCharFormat ,QFont ,QPixmap -from PyQt5.uic import loadUiType -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QGraphicsProxyWidget, QGraphicsObject, QGraphicsEllipseItem ,QGraphicsPixmapItem,QApplication, QGraphicsView, QGraphicsScene, QHBoxLayout, QWidget, QLabel -from PyQt5.QtGui import QBrush ,QTransform ,QMouseEvent, QIcon +from PyQt5.QtGui import * import PyQt5.QtGui as QtGui import PyQt5.QtCore as QtCore import PyQt5.QtWidgets as QtWidgets -from ComponentSelector import * + from DockWidgets.DockWidget import * from DockWidgets.DockWidgetMaterialStream import * from DockWidgets.DockWidgetDistillationColumn import * @@ -25,12 +15,10 @@ from DockWidgets.DockWidgetFlash import * from DockWidgets.DockWidgetCompoundSeparator import * from DockWidgets.DockWidgetCompressorExpander import * -import datetime - from Container import * -import Container from Streams import * from UnitOperations import * +from ComponentSelector import * class Graphics(QDialog, QtWidgets.QGraphicsItem): @@ -42,7 +30,6 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): self.graphicsView = graphicsView self.pos = None self.unit_operations = unit_operations - # self.node_item_list = [] def get_scene(self): return self.scene @@ -51,13 +38,7 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): return ComponentSelector(self) def create_node_item(self,unit_operation, container): - # node_item = NodeItem(unit_operation, container, self.graphicsView) - # self.node_item_list.append(node_item) - # return node_item return NodeItem(unit_operation, container, self.graphicsView) - - # def boundingRect(self): - # return QtCore.QRectF(self.rect) def load_canvas(self, obj, container): stm = ['MaterialStream','EngStm'] @@ -78,16 +59,9 @@ class Graphics(QDialog, QtWidgets.QGraphicsItem): for i in obj: if i.type == "MaterialStream": print(eval(i.type)) - # eval(i.type).counter += 1 - # print(eval(i.type).counter) elif i.type not in stm: ip = i.input_stms op = i.output_stms - print(ip) - print(op) - # print(eval(i.type)) - # eval(i.type).counter += 1 - # print(eval(i.type).counter) for j in ip: pointA = NodeItem.get_instances(j.name) pointB = NodeItem.get_instances(i.name) @@ -285,17 +259,16 @@ class NodeSocket(QtWidgets.QGraphicsItem): self.new_line=None self.other_line=None - # Brush. + # Brush self.brush = QtGui.QBrush() self.brush.setStyle(QtCore.Qt.SolidPattern) - self.brush.setColor(QtGui.QColor(220,220,220,220)) #180,20,90,255 - # Pen. + self.brush.setColor(QtGui.QColor(220,220,220,220)) + # Pen self.pen = QtGui.QPen() self.pen.setStyle(QtCore.Qt.SolidLine) self.pen.setWidth(1) - self.pen.setColor(QtGui.QColor(0,70,70,255)) #20,20,20,255 - - # Lines. + self.pen.setColor(QtGui.QColor(0,70,70,255)) + # Lines self.out_lines = [] self.in_lines = [] @@ -492,9 +465,7 @@ class NodeItem(QtWidgets.QGraphicsItem): self.dock_widget.hide() self.pic=QtGui.QPixmap("Icons/"+self.type+".png") - # self.pic = QIcon("svg/Cooler.svg") self.rect = QtCore.QRect(0,0,self.pic.width(),self.pic.height()) - # self.rect = QtCore.QRect(0,0,100,100) self.text = QGraphicsTextItem(self) f = QFont() f.setPointSize(8) @@ -511,7 +482,7 @@ class NodeItem(QtWidgets.QGraphicsItem): self.brush = QtGui.QBrush() self.brush.setStyle(QtCore.Qt.SolidPattern) self.brush.setColor(QtGui.QColor(80,0,90,255)) - # Pen. + # Pen self.pen = QtGui.QPen() self.pen.setStyle(QtCore.Qt.SolidLine) self.pen.setWidth(1) @@ -525,7 +496,6 @@ class NodeItem(QtWidgets.QGraphicsItem): # initializing the node sockets self.input , self.output = self.initialize_sockets(self.type) - def shape(self): path = QtGui.QPainterPath() path.addRect(self.boundingRect()) @@ -541,7 +511,6 @@ class NodeItem(QtWidgets.QGraphicsItem): else: painter.setPen(self.pen) painter.drawPixmap(self.rect,self.pic) - # painter.drawPixmap(self.rect, self.pic.pixmap(QSize(1000,1000))) def initialize_sockets(self,type): if(self.type=="Flash" or self.type=="CompoundSeparator"): @@ -598,7 +567,6 @@ class NodeItem(QtWidgets.QGraphicsItem): if j is not None: default_tooltip = default_tooltip + f" {i} : {j}\n" self.setToolTip(default_tooltip) - def findMainWindow(self): ''' diff --git a/Streams.py b/Streams.py index bed975d..2142e8f 100644 --- a/Streams.py +++ b/Streams.py @@ -1,8 +1,6 @@ -# from OMPython import OMCSession -from PyQt5.QtCore import * import json import sys -from collections import defaultdict +from PyQt5.QtCore import * class MaterialStream(): counter = 1 @@ -32,7 +30,7 @@ class MaterialStream(): self.modes_list = ["PT","PH","PVF","TVF","PS"] self.variables = { - 'P' : {'name':'Pressure', 'value':101325, 'unit':'Pa'}, # {'Pa':1, 'mmHg':0, 'N/m^2':0}}, + 'P' : {'name':'Pressure', 'value':101325, 'unit':'Pa'}, 'T' : {'name':'Temperature', 'value':300, 'unit':'K'}, 'xvap' : {'name':'Vapour Phase Mole Fraction', 'value':None, 'unit':'g/s'}, @@ -117,38 +115,21 @@ class MaterialStream(): def param_setter(self,dict): - print("inside paramsetter ", dict) - self.variables['x_pc']['value'] = dict['x_pc'].split(",") self.thermo_package = dict['Thermo package'] self.variables['F_p[1]']['value'] = dict['MolFlow'] - print("inside") - # self.Prop[self.mode2] = dict[self.mode2] - # self.Prop[self.mode1] = dict[self.mode1] self.variables[self.mode1]['value'] = dict[self.mode1] self.variables[self.mode2]['value'] = dict[self.mode2] - - print(self.variables) - print(self.variables['x_pc']['value']) + for i in range(len(self.compound_names)): - print('####### x_pc #########\n',self.variables['x_pc']['value'][i]) - print('x_pc') if self.variables['x_pc']['value'][i]: self.variables['x_pc[1,'+str(i+1)+']']['value'] = self.variables['x_pc']['value'][i] else: self.variables['x_pc[1,'+str(i+1)+']']['value'] = None - print('xm_pc') - # if self.variables['xm_pc']['value'][i]: - # self.variables['xm_pc[1,'+str(i+1)+']']['value'] = self.variables['xm_pc']['value'][i] - # else: self.variables['xm_pc[1,'+str(i+1)+']']['value'] = self.variables['xm_pc']['value'] - print('f_pc') self.variables['F_pc[1,'+str(i+1)+']']['value'] = None - print('fm_pc') self.variables['Fm_pc[1,'+str(i+1)+']']['value'] = None - print('first for') - print('secnod for') for i in range(0,len(self.compound_names)): self.variables['x_pc[2,'+str(i+1)+']']['value'] = None self.variables['xm_pc[2,'+str(i+1)+']']['value'] = None @@ -166,22 +147,12 @@ class MaterialStream(): def get_min_eqn_values(self): x_pclist = [] for i in range(0,len(self.compound_names)): - #print(self.Prop['x_pc[1,'+str(i+1)+']']) - #x_pclist.append(self.Prop['x_pc[1,'+str(i+1)+']']) x_pclist.append(self.variables['x_pc[1,'+str(i+1)+']']['value']) - print(x_pclist) - #x_pclist = list(self.Prop(x_pc[1,1)]) x_pc = json.dumps(x_pclist) - print(x_pc) x_pc = x_pc.replace('[','{') x_pc = x_pc.replace(']','}') x_pc = x_pc.replace('"','') - ''' - x_pcstr = json.dumps(self.x_pc) - x_pcstr = x_pcstr.replace('[','{') - x_pcstr = x_pcstr.replace(']','}') - x_pcstr = x_pcstr.replace('"','') - ''' + if self.variables[self.mode1]['value']: self.eqn_dict[self.mode1] = self.variables[self.mode1]['value'] if self.variables[self.mode2]['value']: @@ -191,13 +162,6 @@ class MaterialStream(): if self.variables['F_pc']['value']: self.eqn_dict['F_p[1]'] = self.variables['F_pc']['value'] - print("##############$GetMinVEqnValuesStart$##################") - print("P:",self.variables[self.mode1]['value']) - print("T:",self.variables[self.mode2]['value']) - print("x_pc",self.variables['x_pc']['value']) - print("F_p",self.variables['F_p[1]']['value']) - print("##############$GetMinVEqnValuesEnd$##################") - def get_start_values(self): try: if self.variables[self.mode1]['value']: @@ -333,16 +297,13 @@ class MaterialStream(): self.OM_data_init = self.OM_data_init + ("extends Simulator.Files.ThermodynamicPackages."+self.thermo_package+";\n") self.OM_data_init = self.OM_data_init + ("end ms"+str(self.count)+";\n") comp_count = len(addedcomp) - # self.get_start_values() - - #self.OM_data_init = "Simulator.Streams.Mat_Stm_RL " + self.name +"(Nc = " + str(comp_count) + self.OM_data_init = self.OM_data_init + "ms"+str(self.count) +" " + self.name +"(Nc = " + str(comp_count) self.OM_data_init = self.OM_data_init + ",C = {" C = str(addedcomp).strip('[').strip(']') C = C.replace("'","") self.OM_data_init = self.OM_data_init + C + "}," - #for key, value in self.start_dict.items(): - # self.OM_data_init = self.OM_data_init + key + '(start = ' + str(value) + '),' + self.OM_data_init = self.OM_data_init[:-1] self.OM_data_init = self.OM_data_init + ');\n' return self.OM_data_init @@ -357,9 +318,7 @@ class MaterialStream(): if method == 'SM': self.eqn_dict = {} self.get_min_eqn_values() - #self.GetEquationValues() - #self.GetEquationValues() - + for key,value in self.eqn_dict.items(): self.OM_data_eqn = self.OM_data_eqn + self.name + '.'+ key + ' = ' + str(value) + ';\n' return self.OM_data_eqn diff --git a/ToDoList.txt b/ToDoList.txt deleted file mode 100644 index d5ea56d..0000000 --- a/ToDoList.txt +++ /dev/null @@ -1,20 +0,0 @@ -Components with Energy Streams - -1. Heater -2. Cooler -3. CompSep -4. Pump -5. Adiabatic Compressor -6. Adiabatic Expander -7. Shortcut Column (x2) -8. Distillation Column (x2) -9. PFR -10. Conversion Reactor - -Components having Thermo_Packages - -1. Adiabatic Compressor -2. material stream -3. Shortcut Column -4. Adiabatic Expander -5. flash \ No newline at end of file diff --git a/Undo.dat b/Undo.dat index b56b18f..80038db 100644 Binary files a/Undo.dat and b/Undo.dat differ diff --git a/UnitOperations.py b/UnitOperations.py index 1c98f86..5c53f59 100644 --- a/UnitOperations.py +++ b/UnitOperations.py @@ -1,17 +1,8 @@ from OMChem.Flowsheet import Flowsheet from OMChem.EngStm import EngStm -from PyQt5.QtCore import * -from PyQt5.QtWidgets import * -from PyQt5.QtGui import QTextDocument ,QTextCursor ,QTextCharFormat ,QFont ,QPixmap -from PyQt5.uic import loadUiType -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QGraphicsProxyWidget, QGraphicsObject, QGraphicsEllipseItem ,QGraphicsPixmapItem,QApplication, QGraphicsView, QGraphicsScene, QHBoxLayout, QWidget, QLabel -from PyQt5.QtGui import QBrush ,QTransform ,QMouseEvent -from PyQt5.QtGui import * -import PyQt5.QtCore as QtCore -import PyQt5.QtWidgets as QtWidgets from ComponentSelector import * from Container import * +from PyQt5.QtCore import * class UnitOperation(): counter = 1 @@ -55,7 +46,6 @@ class UnitOperation(): def param_setter(self,params): print("param_setter ", params) for k,v in params.items(): - print(k, v) if k == 'Thermo Package': self.thermo_package = v print('haha') @@ -65,16 +55,12 @@ class UnitOperation(): else: self.variables[k]['value'] = v self.mode_val = params[self.mode] - print(self.variables) def add_connection(self,flag,UnitOpr): if flag==1: # Input stream if flag is 1 self.input_stms.append(UnitOpr) else : self.output_stms.append(UnitOpr) - - print("input and output stms : ") - print(self.input_stms, self.output_stms) def set_pos(self,pos): self.pos = pos @@ -121,11 +107,6 @@ class UnitOperation(): C = C.replace("'", "") self.OM_data_init += ',C = {' + C + '}' - # if len(self.parameters) > 0: - # for k,v in self.parameters.items(): - # self.OM_data_init += ', ' - # self.OM_data_init += k + ' = ' + str(v) - for k in self.parameters: if(k == 'HKey_x_pc' or k == 'LKey_x_pc'): continue @@ -230,8 +211,6 @@ class ShortcutColumn(UnitOperation): self.variables['RR']['value'] = params[7] self.thermo_package = params[8] - print(self.variables) - def OM_Flowsheet_Equation(self): self.OM_data_eqn = '' @@ -247,7 +226,6 @@ class ShortcutColumn(UnitOperation): return self.OM_data_eqn - class DistillationColumn(UnitOperation): def __init__(self,name='DistillationColumn'): UnitOperation.__init__(self) @@ -344,7 +322,6 @@ class CompoundSeparator(UnitOperation): self.variables['SepStrm']['value'] = 1 else: self.variables['SepStrm']['value'] = 2 - for index, i in enumerate(range(2, len(params))): if (i %2 != 0): self.variables['SepVal_c']['value'].append(float(params[i])) @@ -384,7 +361,6 @@ class CompoundSeparator(UnitOperation): return self.OM_data_eqn - class Flash(UnitOperation): def __init__(self,name='Flash'): UnitOperation.__init__(self) @@ -408,6 +384,7 @@ class Flash(UnitOperation): 'Tdef' : {'name':'Separation Temperature', 'value':298.15, 'unit':'K'}, 'Pdef' : {'name':'Separation Pressure', 'value':101325, 'unit':'Pa'} } + def param_setter(self,params): print("param_setter ", params) self.variables['thermo_package']['value'] = params[0] @@ -415,7 +392,6 @@ class Flash(UnitOperation): self.variables['Tdef']['value'] = params[2] self.variables['BPdef']['value'] = params[3] self.variables['Pdef']['value'] = params[4] - print(self.variables) def OM_Flowsheet_Equation(self): self.OM_data_eqn = '' @@ -467,7 +443,6 @@ class Splitter(UnitOperation): self.type = 'Splitter' self.no_of_outputs = 3 - # self.input_stms = None self.CalcType_modes = ['Split_Ratio', 'Molar_Flow', 'Mass_Flow'] self.parameters = ['No', 'CalcType', 'SpecVal_s'] @@ -479,7 +454,7 @@ class Splitter(UnitOperation): 'SpecVal_s' : {'name':'Specification Value', 'value':[50,50], 'unit':''} } - specval = self.variables['SpecVal_s']['value'] # [50,50] + specval = self.variables['SpecVal_s']['value'] self.specval = json.dumps(specval).replace('[','{').replace(']','}') def param_setter(self,params): @@ -491,7 +466,6 @@ class Splitter(UnitOperation): self.variables['SpecVal_s']['unit'] = 'mol/s' elif self.variables['CalcType']['value'] == 'Mass_Flow': self.variables['SpecVal_s']['unit'] = 'g/s' - print(self.variables) class Mixer(UnitOperation): @@ -509,15 +483,10 @@ class Mixer(UnitOperation): 'NI' : {'name':'Number of Input', 'value':6, 'unit':''}, 'outPress' : {'name':'Outlet Pressure', 'value':'Inlet_Average', 'unit':''}, } - - print(self.input_stms) - print(self.output_stms) def param_setter(self, params): - print("param_setter ", params) self.variables['NI']['value'] = int(params[0]) self.variables['outPress']['value'] = params[1] - print(self.variables) class Heater(UnitOperation): diff --git a/mainApp.py b/mainApp.py index 78bbd98..e2328dd 100644 --- a/mainApp.py +++ b/mainApp.py @@ -47,7 +47,7 @@ class MainApp(QMainWindow,ui): self.thrd = None # Creating instances of classes for the main app - self.container = Container.Container(self.textBrowser, self.graphicsView) + self.container = Container(self.textBrowser, self.graphicsView) self.comp = ComponentSelector(self) # Setting up interactive canvas -- cgit From 4cffaf3d0d29ee1f2d31601dd1571c7de40a8c5f Mon Sep 17 00:00:00 2001 From: lucaszhao19 Date: Tue, 11 Aug 2020 20:06:51 +0630 Subject: Added Adiabatic Expander and Compressor DockWidgets --- DockWidgets/DockWidgetCompressorExpander.py | 146 +++++++++++++++++++ DockWidgets/DockWidgetCompressorExpander.ui | 214 ++++++++++++++++++++++++++++ 2 files changed, 360 insertions(+) create mode 100644 DockWidgets/DockWidgetCompressorExpander.py create mode 100644 DockWidgets/DockWidgetCompressorExpander.ui diff --git a/DockWidgets/DockWidgetCompressorExpander.py b/DockWidgets/DockWidgetCompressorExpander.py new file mode 100644 index 0000000..841b850 --- /dev/null +++ b/DockWidgets/DockWidgetCompressorExpander.py @@ -0,0 +1,146 @@ +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * +from PyQt5.QtGui import * +from PyQt5.uic import loadUiType +from ComponentSelector import * +from Graphics import * + +ui_dialog,_ = loadUiType('DockWidgets/DockWidgetCompressorExpander.ui') + +class DockWidgetCompressorExpander(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.x_pclist = [] + self.modes() + self.comboBox.currentIndexChanged.connect(self.mode_selection) + + self.pushButton_2.clicked.connect(self.param) + self.dict = {} + + self.name_type = None + self.container = container + + # input data tab + def modes(self): + modes_list = self.obj.modes_list + if(modes_list): + for j in modes_list: + self.comboBox.addItem(str(self.obj.variables[j]['name'])) + self.mode_selection() + else: + self.comboBox.setDisabled(True) + self.input_dict= {} + self.input_dict = self.obj.param_getter() + self.input_params_list() + + def mode_selection(self): + self.input_dict= {} + for i in reversed(range(self.formLayout.count())): + self.formLayout.removeRow(i) + print(self.comboBox.currentText()) + for i in self.obj.variables: + if self.obj.variables[i]['name'] == self.comboBox.currentText(): + currentText = i + break + self.input_dict = self.obj.param_getter(currentText) + print('mode selection ', self.input_dict) + self.input_params_list() + + def input_params_list(self): + try: + print("input_params_list ", self.input_dict) + for c,i in enumerate(self.input_dict): + if i == None: + continue + + l = QLineEdit() + if self.input_dict[i] != None: + l.setText(str(self.input_dict[i])) + lay = QGridLayout() + lay.addWidget(QLabel(self.obj.variables[i]['name']+":"),0,0, alignment=Qt.AlignLeft) + lay.addWidget(l,0,1, alignment=Qt.AlignCenter) + lay.addWidget(QLabel(self.obj.variables[i]['unit']),0,2, alignment=Qt.AlignCenter) + + self.formLayout.addRow(lay) + self.input_dict[i] = l + + self.lines = [line.rstrip('\n') for line in open('thermopackage.txt')] + for j in self.lines: + self.cbTP.addItem(str(j)) + self.input_dict['Thermo Package'] = self.cbTP + + 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={} + for i in self.input_dict: + if (self.input_dict[i] == None): + continue + elif (i == "Thermo Package"): + self.dict[i] = self.input_dict[i].currentText() + else: + print(self.input_dict[i], i, self.obj.type) + if (self.input_dict[i].text()): + self.dict[i] = self.input_dict[i].text() + else: + print(self.input_dict[i].text()) + self.show_error() + break + + self.obj.param_setter(self.dict) + self.hide() + + except Exception as e: + print(e) + + @staticmethod + def show_result(lst): + for i in lst: + try: + i.results_category(i.name) + except AttributeError: + pass + + def clear_results(self): + self.tableWidget.setRowCount(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 = list(obj.variables.keys()) + 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]) + 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() + + except Exception as e: + print(e) + + \ No newline at end of file diff --git a/DockWidgets/DockWidgetCompressorExpander.ui b/DockWidgets/DockWidgetCompressorExpander.ui new file mode 100644 index 0000000..372fc0b --- /dev/null +++ b/DockWidgets/DockWidgetCompressorExpander.ui @@ -0,0 +1,214 @@ + + + Form + + + true + + + + 0 + 0 + 392 + 700 + + + + + 0 + 0 + + + + + 3200 + 5000 + + + + Form + + + false + + + + + 10 + 30 + 361 + 621 + + + + false + + + 0 + + + + Input Data + + + + + 9 + 9 + 331 + 71 + + + + Mode Selection + + + + + + + + + 0 + 0 + + + + Mode : + + + + + + + true + + + + 0 + 0 + + + + + + + + + + + + 10 + 100 + 331 + 111 + + + + Parameter Selection + + + + + + + + + + + 10 + 280 + 331 + 21 + + + + Submit + + + + + + 10 + 220 + 331 + 51 + + + + + + + + + + + + + 0 + 0 + + + + Thermo Package + + + + + + + true + + + + 0 + 0 + + + + + + + + + + + + Results + + + + + + 3 + + + 110 + + + true + + + + Attribute + + + + + Value + + + + + Unit + + + + + + + + + + + -- cgit