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]
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]
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]