From d77a48ced21b2c5f8293148379f061897c50d4f4 Mon Sep 17 00:00:00 2001
From: pravindalve
Date: Wed, 30 Oct 2019 19:34:21 +0530
Subject: Initial Commit
OMChem(OMchemSim-python api) is designed by Rahul Jain, Simulator is taken from https://github.com/FOSSEE/OMChemSim and GUI related things are implemented during FOSSEE Summer Fellowship 2019 by Anosh Billimoria and Anuj Goyal
---
container.py | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 116 insertions(+)
create mode 100644 container.py
(limited to 'container.py')
diff --git a/container.py b/container.py
new file mode 100644
index 0000000..91d4833
--- /dev/null
+++ b/container.py
@@ -0,0 +1,116 @@
+from OMChem.Flowsheet import Flowsheet
+from OMChem.MatStm import MatStm
+from OMChem.Mixer import Mixer
+from OMChem.Heater import Heater
+from component_selector import *
+from collections import defaultdict
+from PyQt5.QtCore import *
+from PyQt5.QtGui import *
+import datetime
+import itertools
+class Container():
+ def __init__(self,msgbrowser):
+ self.unitOp = []
+ self.thermoPackage = None
+ self.compounds = None
+ self.conn = defaultdict(list)
+ self.op=defaultdict(list)
+ self.ip=defaultdict(list)
+ self.msg = msgbrowser
+ self.msg.setText("")
+ self.opl=[]
+ self.result=[]
+
+
+ def currentTime(self):
+ now = datetime.datetime.now()
+ 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.currentTime())+"] "+key.name+" output is connected to input of "+value.name +" ")
+ def addUnitOp(self,obj):
+ if(obj in self.unitOp):
+ pass
+ else:
+ self.unitOp.append(obj)
+ self.msg.append("["+str(self.currentTime())+"] "+obj.name+" is instantiated .""")
+
+ def fetchObject(self,name):
+ for i in self.unitOp:
+ if(i.name==name):
+ return i
+ def addCompounds(self,comp):
+ self.compounds = comp
+
+ def add_thermoPackage(self,thermo):
+ self.thermoPackage = thermo
+
+ def connection(self):
+ try:
+ self.op.clear()
+ self.ip.clear()
+ self.opl.clear()
+ stm = ['MatStm','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=flatlist(flatlist(self.opl))
+ except Exception as e:
+ print(e)
+
+ def msgBrowser(self,f):
+ std = f.stdout.decode("utf-8")
+ if(std):
+ stdout = str(std)
+ stdout = stdout.replace("\n","
")
+ self.msg.append(""+stdout+"")
+
+ stde = f.stderr.decode("utf-8")
+ if(stde):
+ stdout = str(stde)
+ stdout = stdout.replace("\n","
")
+ self.msg.append(""+stdout+"")
+
+ def simulate(self,mode):
+ print(mode)
+ self.compounds = compound_selected
+ self.connection()
+ f = Flowsheet()
+ f.add_comp_list(self.compounds)
+ print("######## connection master#########\n",self.conn)
+ for i in self.unitOp :
+ if i in self.opl:
+ print("here",i)
+ f.add_UnitOpn(i,1)
+ else:
+ f.add_UnitOpn(i,0)
+ if mode=='SM':
+ self.msg.append("["+str(self.currentTime())+"] Simulating in Sequential mode ... ")
+ f.simulateSM(self.ip,self.op)
+ self.msgBrowser(f)
+ self.result=f.resdata
+ print("under SEQ mode simulation")
+ elif mode=='EQN':
+ self.msg.append("["+str(self.currentTime())+"] Simulating in equation mode ... ")
+ f.simulateEQN()
+ self.msgBrowser(f)
+ self.result=f.resdata
+ print("under Eqn mode simulation")
+
+def flatlist(lst):
+ flat_list=[]
+ for sublist in lst:
+ for item in sublist:
+ flat_list.append(item)
+ return flat_list
--
cgit