Ejemplo n.º 1
0
    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
        self.flowsheet = Flowsheet()
        self.flowsheet.add_compound_list([c[:c.index('(')] for c in self.compounds])
        print("######## connection master#########\n",self.conn)
        for i in self.unit_operations :
            self.flowsheet.add_unit_operations(i)
            
            
        if mode=='SM':
            self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>Sequential</b> mode ... </span>")
            self.flowsheet.simulate_SM(self.ip,self.op)
            self.msg_browser()
            self.result=self.flowsheet.result_data
            
        elif mode=='EQN':
            self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>equation</b> mode ... </span>")
            self.flowsheet.simulate_EQN()
            self.msg_browser()
            self.result=self.flowsheet.result_data
            print("under Eqn mode simulation")

        DockWidget.show_result(NodeItem.get_dock_widget())
Ejemplo n.º 2
0
    def simulate(self, mode):
        print("SIMULATE")
        print(mode)
        self.compounds = compound_selected
        self.flowsheet = Flowsheet()
        self.flowsheet.add_comp_list(self.compounds)
        print("######## connection master#########\n", self.conn)
        for i in self.unitOp:
            print("here", i)
            self.flowsheet.add_UnitOpn(i)

        if mode == 'SM':
            self.msg.append(
                "<span>[" + str(self.currentTime()) +
                "] Simulating in <b>Sequential</b> mode ... </span>")
            self.flowsheet.simulateSM(self.ip, self.op)
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under SEQ mode simulation")
        elif mode == 'EQN':
            self.msg.append("<span>[" + str(self.currentTime()) +
                            "] Simulating in <b>equation</b> mode ... </span>")
            self.flowsheet.simulateEQN()
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under Eqn mode simulation")

        DockWidget.showResult(NodeItem.getDockWidget())
 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("<span>["+str(self.currentTime())+"] Simulating in <b>Sequential</b> mode ... </span>")
         f.simulateSM(self.ip,self.op)
         self.msgBrowser(f)
         self.result=f.resdata
         print("under SEQ mode simulation")
     elif mode=='EQN':
         self.msg.append("<span>["+str(self.currentTime())+"] Simulating in <b>equation</b> mode ... </span>")
         f.simulateEQN()
         self.msgBrowser(f)
         self.result=f.resdata
         print("under Eqn mode simulation")
Ejemplo n.º 4
0
class Container():
    def __init__(self,msgbrowser, graphicsView):
        self.unit_operations = []
        self.thermo_package = None
        self.compounds = None
        self.flowsheet = None
        self.conn = defaultdict(list)
        self.op=defaultdict(list)
        self.ip=defaultdict(list)
        self.msg = msgbrowser
        self.graphicsView = graphicsView
        self.msg.setText("")
        self.opl=[]
        self.result=[]
        self.graphics = Graphics(self.unit_operations, self.graphicsView)
        self.scene = self.graphics.get_scene()

    def current_time(self):
        now = datetime.datetime.now()
        time = str(now.hour) + ":" + str(now.minute) + ":" +str(now.second)
        return time
    
    def add_unit_operation(self, obj):
        box = None
        self.obj = obj
        self.scene = self.graphics.get_scene()
        box  = self.graphics.create_node_item(self.obj, self)
        self.scene.addItem(box)
        box.setPos(2500-30, 2500-30)

        if(obj in self.unit_operations):
            pass
        else:
            self.unit_operations.append(obj)
            data = self.unit_operations[:]
            data.append(compound_selected)
            push('Undo', data)
            self.msg.append("<span style=\"color:blue\">["+str(self.current_time())+"]<b> "+obj.name+" </b>is instantiated .""</span>")

    '''
        Deletes the selected item from the canvas and also the objects created for that type.
    '''
    def delete(self,l):
        for item in l:
            self.scene.removeItem(item)
            for i in dock_widget_lst:
                if i.name == item.name:
                    i.hide()
                    del i
                    break

            if hasattr(item,'input'):
                for x in item.input:
                    if x.new_line:
                        self.scene.removeItem(x.new_line)
                        del x.new_line
                    if x.other_line:
                        self.scene.removeItem(x.other_line)
                        del x.other_line
            if hasattr(item,'output'):
                for x in item.output:
                    if x.new_line:
                        self.scene.removeItem(x.new_line)
                        del x.new_line
                    if x.other_line:
                        self.scene.removeItem(x.other_line)
                        del x.other_line
            if hasattr(item,'obj'):
                self.unit_operations.remove(item.obj)
                for k in list(self.conn):
                    if item.obj==k:
                        del self.conn[k]
                    elif item.obj in self.conn[k]:
                        self.conn[k].remove(item.obj)
                self.msg.append("<span style=\"color:blue\">["+str(self.current_time())+"]<b> "+item.obj.name+" </b>is deleted .""</span>")
                del item.obj
            del item

            clean_file('Redo')
            data = self.unit_operations[:]
            data.append(compound_selected)
            push('Undo', data)

    def fetch_object(self,name):
        for i in self.unit_operations:
            if(i.name==name):
                return i
                
    def add_compounds(self,comp):
        self.compounds = comp

    def update_compounds(self):
        self.graphics.update_compounds()

    def add_thermo_package(self,thermo):
        self.thermo_package = thermo

    def msg_browser(self):
        std = self.flowsheet.stdout.decode("utf-8")
        if(std):
            stdout = str(std)
            stdout = stdout.replace("\n","<br/>")
            self.msg.append("<span style=\"color:green\">"+stdout+"</span>")
        
        stde = self.flowsheet.stderr.decode("utf-8")
        if(stde):
            stdout = str(stde)
            stdout = stdout.replace("\n","<br/>")
            self.msg.append("<span style=\"color:red\">"+stdout+"</span>")
    
    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
        self.flowsheet = Flowsheet()
        self.flowsheet.add_compound_list([c[:c.index('(')] for c in self.compounds])
        print("######## connection master#########\n",self.conn)
        for i in self.unit_operations :
            self.flowsheet.add_unit_operations(i)
            
            
        if mode=='SM':
            self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>Sequential</b> mode ... </span>")
            self.flowsheet.simulate_SM(self.ip,self.op)
            self.msg_browser()
            self.result=self.flowsheet.result_data
            
        elif mode=='EQN':
            self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>equation</b> mode ... </span>")
            self.flowsheet.simulate_EQN()
            self.msg_browser()
            self.result=self.flowsheet.result_data
            print("under Eqn mode simulation")

        DockWidget.show_result(NodeItem.get_dock_widget())
Ejemplo n.º 5
0
class Container():
    def __init__(self, msgbrowser):
        self.unitOp = []
        self.thermoPackage = None
        self.compounds = None
        self.flowsheet = None
        self.conn = defaultdict(list)
        self.op = defaultdict(list)
        self.ip = defaultdict(list)
        self.msg = msgbrowser
        self.msg.setText("")
        self.opl = []
        self.result = []
        self.graphics = Graphics(self.unitOp)
        self.scene = self.graphics.getScene()

    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("<span style=\"color:blue\">["+str(self.currentTime())+"]<b> "+key.name+" </b> output is connected to input of<b> "+value.name +" </b></span>")
    #
    # 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=flatlist(flatlist(self.opl))
    #     except Exception as e:
    #         print(e)

    # @staticmethod
    # def addUnitOpObj(obj):
    #     self.unitOp.append(obj)

    def addUnitOp(self, obj):
        box = None
        self.obj = obj
        self.scene = self.graphics.getScene()
        box = self.graphics.createNodeItem(self.obj, self)
        self.scene.addItem(box)
        box.setPos(2500 - 30, 2500 - 30)

        if (obj in self.unitOp):
            pass
        else:
            self.unitOp.append(obj)
            data = self.unitOp[:]
            data.append(compound_selected)
            PUSH('Undo', data)
            self.msg.append("<span style=\"color:blue\">[" +
                            str(self.currentTime()) + "]<b> " + obj.name +
                            " </b>is instantiated ."
                            "</span>")

    '''
        Deletes the selected item from the canvas and also the objects created for that type.
    '''

    def delete(self, l):
        for item in l:
            self.scene.removeItem(item)
            if hasattr(item, 'Input'):
                for x in item.Input:
                    if x.newLine:
                        self.scene.removeItem(x.newLine)
                        del x.newLine
                    if x.otherLine:
                        self.scene.removeItem(x.otherLine)
                        del x.otherLine
            if hasattr(item, 'Output'):
                for x in item.Output:
                    if x.newLine:
                        self.scene.removeItem(x.newLine)
                        del x.newLine
                    if x.otherLine:
                        self.scene.removeItem(x.otherLine)
                        del x.otherLine
            if hasattr(item, 'obj'):
                self.unitOp.remove(item.obj)
                for k in list(self.conn):
                    if item.obj == k:
                        del self.conn[k]
                    elif item.obj in self.conn[k]:
                        self.conn[k].remove(item.obj)
                self.msg.append("<span style=\"color:blue\">[" +
                                str(self.currentTime()) + "]<b> " +
                                item.obj.name + " </b>is deleted ."
                                "</span>")
                del item.obj
            del item

            CLEAN_FILE('Redo')
            data = self.unitOp[:]
            data.append(compound_selected)
            PUSH('Undo', data)

    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 msgBrowser(self):
        std = self.flowsheet.stdout.decode("utf-8")
        if (std):
            stdout = str(std)
            stdout = stdout.replace("\n", "<br/>")
            self.msg.append("<span style=\"color:green\">" + stdout +
                            "</span>")

        stde = self.flowsheet.stderr.decode("utf-8")
        if (stde):
            stdout = str(stde)
            stdout = stdout.replace("\n", "<br/>")
            self.msg.append("<span style=\"color:red\">" + stdout + "</span>")

    def simulate(self, mode):
        print("SIMULATE")
        print(mode)
        self.compounds = compound_selected
        self.flowsheet = Flowsheet()
        self.flowsheet.add_comp_list(self.compounds)
        print("######## connection master#########\n", self.conn)
        for i in self.unitOp:
            print("here", i)
            self.flowsheet.add_UnitOpn(i)

        if mode == 'SM':
            self.msg.append(
                "<span>[" + str(self.currentTime()) +
                "] Simulating in <b>Sequential</b> mode ... </span>")
            self.flowsheet.simulateSM(self.ip, self.op)
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under SEQ mode simulation")
        elif mode == 'EQN':
            self.msg.append("<span>[" + str(self.currentTime()) +
                            "] Simulating in <b>equation</b> mode ... </span>")
            self.flowsheet.simulateEQN()
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under Eqn mode simulation")

        DockWidget.showResult(NodeItem.getDockWidget())
Ejemplo n.º 6
0
class Container():
    def __init__(self, msgbrowser):
        self.unitOp = []
        self.thermoPackage = None
        self.compounds = None
        self.flowsheet = None
        self.conn = defaultdict(list)
        self.op = defaultdict(list)
        self.ip = defaultdict(list)
        self.msg = msgbrowser
        self.msg.setText("")
        self.opl = []
        self.result = []
        self.graphics = Graphics(self.unitOp)

    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("<span style=\"color:blue\">[" +
                        str(self.currentTime()) + "]<b> " + key.name +
                        " </b> output is connected to input of<b> " +
                        value.name + " </b></span>")

    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 = flatlist(flatlist(self.opl))
        except Exception as e:
            print(e)

    @staticmethod
    def addUnitOpObj(obj):
        self.unitOp.append(obj)

    def addUnitOp(self, obj):
        box = None
        self.obj = obj
        self.scene = self.graphics.getScene()
        box = self.graphics.createNodeItem(self.obj)
        self.scene.addItem(box)
        box.setPos(2500 - 30, 2500 - 30)

        if (obj in self.unitOp):
            pass
        else:
            self.unitOp.append(obj)
            self.msg.append("<span style=\"color:blue\">[" +
                            str(self.currentTime()) + "]<b> " + obj.name +
                            " </b>is instantiated ."
                            "</span>")

    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 msgBrowser(self):
        std = self.flowsheet.stdout.decode("utf-8")
        if (std):
            stdout = str(std)
            stdout = stdout.replace("\n", "<br/>")
            self.msg.append("<span style=\"color:green\">" + stdout +
                            "</span>")

        stde = self.flowsheet.stderr.decode("utf-8")
        if (stde):
            stdout = str(stde)
            stdout = stdout.replace("\n", "<br/>")
            self.msg.append("<span style=\"color:red\">" + stdout + "</span>")

    def simulate(self, mode):
        print("SIMULATE")
        print(mode)
        self.compounds = compound_selected
        self.flowsheet = Flowsheet()
        self.flowsheet.add_comp_list(self.compounds)
        print("######## connection master#########\n", self.conn)
        for i in self.unitOp:
            print("here", i)
            self.flowsheet.add_UnitOpn(i)

        if mode == 'SM':
            self.msg.append(
                "<span>[" + str(self.currentTime()) +
                "] Simulating in <b>Sequential</b> mode ... </span>")
            self.flowsheet.simulateSM(self.ip, self.op)
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under SEQ mode simulation")
        elif mode == 'EQN':
            self.msg.append("<span>[" + str(self.currentTime()) +
                            "] Simulating in <b>equation</b> mode ... </span>")
            self.flowsheet.simulateEQN()
            self.msgBrowser()
            self.result = self.flowsheet.resdata
            print("under Eqn mode simulation")