summaryrefslogtreecommitdiff
path: root/UnitOperations.py
diff options
context:
space:
mode:
Diffstat (limited to 'UnitOperations.py')
-rw-r--r--UnitOperations.py170
1 files changed, 170 insertions, 0 deletions
diff --git a/UnitOperations.py b/UnitOperations.py
new file mode 100644
index 0000000..b9bbb0b
--- /dev/null
+++ b/UnitOperations.py
@@ -0,0 +1,170 @@
+from OMChem.Flowsheet import Flowsheet
+from OMChem.MatStm import MatStm
+from OMChem.UnitOprns import UnitOpr
+from OMChem.EngStm import EngStm
+from Graphics import Graphics
+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 component_selector import *
+
+
+class UnitOperation():
+ counter = 1
+
+ def __init__(self):
+ self.OM_data_eqn = ''
+ self.OM_data_init = ''
+ self.InputStms = []
+ self.OutputStms = []
+ self.name = ''
+ self.mode = None
+ self.modeVal = None
+ self.type = ''
+ self.no_of_inputs = 1
+ self.no_of_outputs = 1
+ self.x = 2500-30
+ self.y = 2500-30
+ self.Prop = {}
+ self.modeslist = []
+ self.parameters = {}
+ # self.input_parameters = {}
+ self.extra = None
+ self.multidict = None
+ self.ThermoPackReq = False
+ self.thermoPackage = None
+
+ def paramgetter(self,mode=None):
+ params = {}
+ if mode == None:
+ self.mode = self.modeslist[0]
+ else:
+ self.mode = mode
+ params = self.parameters.copy()
+ params[self.mode] = None
+ return params
+
+ def paramsetter(self,params):
+ print(params)
+ for k,v in params.items():
+ print(k,v)
+ if k != self.mode:
+ self.k = v
+ self.parameters[k] = v
+ else:
+ self.modeVal = params[self.mode]
+
+ def connect(self,InputStms,OutputStms):
+ self.InputStms = InputStms
+ self.OutputStms = OutputStms
+
+ def add_connection(self,flag,UnitOpr):
+ if flag==1:
+ # Input stream if flag is 1
+ self.InputStms.append(UnitOpr)
+ print("INPUT CONNECTION")
+ else :
+ print("OUTPUT CONNECTION")
+ self.OutputStms.append(UnitOpr)
+
+ def send_to_flowsheet(self):
+ Inst = UnitOpr(name=self.name,counter=type(self).counter,Type='Heater',parameters=self.parameters,mode=self.mode,modeVal=self.modeVal,ThermoPackReq=self.ThermoPackReq,thermoPack=self.thermoPackage,extra=self.extra,multidict=self.multidict,inputs=self.no_of_inputs,outputs=self.no_of_outputs)
+ Inst.connect(self.InputStms,self.OutputStms)
+ return Inst
+
+class HeaterClass(UnitOperation):
+
+ def __init__(self, name='Heater', pressDrop=None, eff='None'):
+ UnitOperation.__init__(self)
+ self.name = name + str(type(self).counter)
+ self.type = 'Heater'
+ self.no_of_inputs = 1
+ self.no_of_outputs = 1
+ self.Prop = {
+ 'pressDrop':None,
+ 'eff':None,
+ 'outT':None,
+ 'tempInc':None,
+ 'heatAdd':None,
+ }
+ self.modesList = ["heatAdd","outT","outVapPhasMolFrac","tempInc","enFlo"]
+ self.extra = None
+ self.pressDrop = pressDrop
+ self.eff = eff
+ self.parameters = {'pressDrop':self.pressDrop, 'eff':self.eff}
+ # self.input_parameters = {'pressDrop':self.pressDrop, 'eff':self.eff}
+ type(self).counter += 1
+
+class CoolerClass(UnitOperation):
+
+ def __init__(self, name='Cooler', pressDrop=None, eff='None'):
+ UnitOperation.__init__(self)
+ self.name = name + str(type(self).counter)
+ self.type = 'Cooler'
+ self.no_of_inputs = 1
+ self.no_of_outputs = 1
+ self.Prop = {
+ 'pressDrop':None,
+ 'eff':None,
+ 'outT':None,
+ 'tempDrop':None,
+ 'heatRem':None,
+ }
+ self.modesList = ["heatRem","outT","outVapPhasMolFrac","tempDrop","enFlo"]
+ self.extra = None
+ self.pressDrop = pressDrop
+ self.eff = eff
+ self.parameters = {'pressDrop':self.pressDrop, 'eff':self.eff}
+ # self.input_parameters = {'pressDrop':self.pressDrop, 'eff':self.eff}
+ type(self).counter += 1
+
+class AdiaCompClass(UnitOperation):
+
+ def __init__(self, name='AdiaComp', eff='None'):
+ UnitOperation.__init__(self)
+ self.name = name + str(type(self).counter)
+ self.type = 'AdiaComp'
+ self.no_of_inputs = 1
+ self.no_of_outputs = 1
+ self.modesList = ["pressInc","outP","reqPow"]
+ self.extra = ['Adiabatic_Compressor']
+ self.ThermoPackReq = True
+ self.thermoPackage ="Raoults_Law"
+ self.eff = eff
+ self.parameters = {'eff':self.eff}
+ # self.input_parameters = {"eff":self.eff,"thermoPackage":self.thermoPackage}
+ type(self).counter += 1
+
+class AdiaExpClass(UnitOperation):
+
+ def __init__(self, name='AdiaExp', eff='None'):
+ UnitOperation.__init__(self)
+ self.name = name + str(type(self).counter)
+ self.type = 'AdiaExp'
+ self.no_of_inputs = 1
+ self.no_of_outputs = 1
+ self.modesList = ["pressDrop","outP","genPow"]
+ self.extra = ['Adiabatic_Expander']
+ self.ThermoPackReq = True
+ self.thermoPackage ="Raoults_Law"
+ self.eff = eff
+ self.parameters = {'eff':self.eff}
+ # self.input_parameters = {"eff":self.eff,"thermoPackage":self.thermoPackage}
+ type(self).counter += 1
+
+
+def helperFunc(type):
+ if(type=="MatStm"):
+ return MatStm(CompNames=compound_selected)
+ else:
+ return eval(type+"Class")()
+
+
+