def execute(self):
        """ 
        The .exe executable is run to obtain the simulation result of the
        OpenModelica model.
        """
        etree = lmm.get_etree(self._init_xml)

        # Update the sim settings to the element tree
        lmm.change_experiment(etree,startTime = self.startTime,
                                    stopTime = self.stopTime,
                                    stepSize = str(self.stepSize),
                                    tolerance = str(self.tolerance),
                                    solver = self.solver)
        # Update the parameters to the element tree
        prm_dict = {}
        for prm_name in self._prm_attrib:
            prm_dict[prm_name] = eval("self."+prm_name)
        lmm.change_parameter(etree, prm_dict)

        # Rebuild _init.xml with the updated element tree
        etree.write(self._init_xml)
        subprocess.call([self.moFile+'.exe'],shell=True)

        # Obtain the result from the result (.mat) file
        dd,desc = lmm.load_mat(self.moFile+'_res.mat')
        for var_name in self._var_attrib:
            vars(self)[var_name] = dd[var_name]
Example #2
0
    def solve_nonlinear(self, params, unknowns, resids):
        """ 
        The .exe executable is run to obtain the simulation result of the
        OpenModelica model.
        """
        etree = lmm.get_etree(self._init_xml)

        # Update the sim settings to the element tree
        lmm.change_experiment(etree,
                              startTime=params['startTime'],
                              stopTime=params['stopTime'],
                              stepSize=str(params['stepSize']),
                              tolerance=str(params['tolerance']),
                              solver=params['solver'])

        # Update the parameters to the element tree
        prm_dict = {}
        for prm_name in self._prm_attrib:
            print 'PARAMETER: ', prm_name, params[prm_name]
            prm_dict[prm_name] = params[prm_name]
        lmm.change_parameter(etree, prm_dict)

        # Rebuild _init.xml with the updated element tree
        etree.write(self._init_xml)
        subprocess.call([os.path.join(os.getcwd(), self.class_name)],
                        shell=True)

        # Obtain the result from the result (.mat) file
        dd, desc = lmm.load_mat(self.class_name + '_res.mat')
        for var_name in self._var_attrib:
            print 'dd[' + var_name + '] = ', dd[var_name]
            unknowns[var_name] = dd[var_name]
Example #3
0
    def solve_nonlinear(self, params, unknowns, resids):
        """ 
        The .exe executable is run to obtain the simulation result of the
        OpenModelica model.
        """
        etree = lmm.get_etree(self._init_xml)

        # Update the sim settings to the element tree
        lmm.change_experiment(etree,
                              startTime=params['startTime'],
                              stopTime=params['stopTime'],
                              stepSize=str(params['stepSize']),
                              tolerance=str(params['tolerance']),
                              solver=params['solver'])

        # Update the parameters to the element tree
        prm_dict = {}
        for prm_name in self._prm_attrib:
            print 'PARAMETER: ', prm_name, params[prm_name]
            prm_dict[prm_name] = params[prm_name]
        lmm.change_parameter(etree, prm_dict)

        # Rebuild _init.xml with the updated element tree
        etree.write(self._init_xml)
        subprocess.call([os.path.join(os.getcwd(), self.class_name)], shell=True)

        # Obtain the result from the result (.mat) file
        dd, desc = lmm.load_mat(self.class_name + '_res.mat')
        for var_name in self._var_attrib:
            print 'dd[' + var_name + '] = ', dd[var_name]
            unknowns[var_name] = dd[var_name]
Example #4
0
    def execute(self):
        """ 
        The .exe executable is run to obtain the simulation result of the
        OpenModelica model.
        """
        etree = lmm.get_etree(self._init_xml)

        # Update the sim settings to the element tree
        lmm.change_experiment(etree,
                              startTime=self.startTime,
                              stopTime=self.stopTime,
                              stepSize=str(self.stepSize),
                              tolerance=str(self.tolerance),
                              solver=self.solver)
        # Update the parameters to the element tree
        prm_dict = {}
        for prm_name in self._prm_attrib:
            prm_dict[prm_name] = eval("self." + prm_name)
        lmm.change_parameter(etree, prm_dict)

        # Rebuild _init.xml with the updated element tree
        etree.write(self._init_xml)
        subprocess.call([self.moFile + '.exe'], shell=True)

        # Obtain the result from the result (.mat) file
        dd, desc = lmm.load_mat(self.moFile + '_res.mat')
        for var_name in self._var_attrib:
            vars(self)[var_name] = dd[var_name]