def write_resdata(problem, file_name='', format='txt'): """ Function that prints out results from a solved problem. Parameters:: problem-- Instance of JMUAlgebraic, must be solved. file_name -- Name of the result file. Default: '' format -- A string equal either to 'txt' for output to Dymola textual format or 'mat' for output to Dymola binary Matlab format. Default: 'txt' Limitations:: Only format='txt' is currently supported. """ if not isinstance(problem, JMUAlgebraic): raise JMUAlgebraic_Exception( "Problem sent to write_resdata is not an instance of JMUAlgebraic") model = problem._model dx_s = problem._dx_size x_s = problem._x_size w_s = problem._w_size u_s = problem._u_size # Create data matrix data = N.zeros((1,1+dx_s+ \ x_s + \ u_s + \ w_s)) data[0,:] = model.t data[0,1:1+dx_s] = model.real_dx data[0,1+dx_s:1+dx_s + x_s] = model.real_x data[0,1+dx_s + x_s:1+dx_s + x_s + u_s] = model.real_u data[0,1+dx_s + x_s + u_s: \ 1+dx_s + x_s + \ u_s + w_s] = model.real_w # Write result export_result_dymola(model,data, file_name=file_name, format=format)
def write_resdata(problem, file_name='', format='txt'): """ Function that prints out results from a solved problem. Parameters:: problem-- Instance of JMUAlgebraic, must be solved. file_name -- Name of the result file. Default: '' format -- A string equal either to 'txt' for output to Dymola textual format or 'mat' for output to Dymola binary Matlab format. Default: 'txt' Limitations:: Only format='txt' is currently supported. """ if not isinstance(problem, JMUAlgebraic): raise JMUAlgebraic_Exception( "Problem sent to write_resdata is not an instance of JMUAlgebraic") model = problem._model dx_s = problem._dx_size x_s = problem._x_size w_s = problem._w_size u_s = problem._u_size # Create data matrix data = N.zeros((1,1+dx_s+ \ x_s + \ u_s + \ w_s)) data[0, :] = model.t data[0, 1:1 + dx_s] = model.real_dx data[0, 1 + dx_s:1 + dx_s + x_s] = model.real_x data[0, 1 + dx_s + x_s:1 + dx_s + x_s + u_s] = model.real_u data[0,1+dx_s + x_s + u_s: \ 1+dx_s + x_s + \ u_s + w_s] = model.real_w # Write result export_result_dymola(model, data, file_name=file_name, format=format)
def write_data(simulator,write_scaled_result=False, result_file_name=''): """ Writes simulation data to a file. Takes as input a simulated model. """ #Determine the result file name if result_file_name == '': result_file_name=simulator.problem._model.get_name()+'_result.txt' if isinstance(simulator.problem, JMIDAE): model = simulator.problem._model problem = simulator.problem t = N.array(simulator.t_sol) y = N.array(simulator.y_sol) yd = N.array(simulator.yd_sol) if simulator.problem.input: u_name = [k[1] for k in sorted(model.get_u_variable_names())] #u = N.zeros((len(t), len(u_name))) u = N.ones((len(t), len(u_name)))*model.real_u u_mat = simulator.problem.input[1].eval(t) if not isinstance(simulator.problem.input[0],list): u_input_name = [simulator.problem.input[0]] else: u_input_name = simulator.problem.input[0] for i,n in enumerate(u_input_name): u[:,u_name.index(n)] = u_mat[:,i]/problem._input_nominal[i] else: u = N.ones((len(t),len(model.real_u)))*model.real_u # extends the time array with the states columnwise data = N.c_[t,yd[:,0:len(model.real_dx)]] data = N.c_[data, y[:,0:len(model.real_x)]] data = N.c_[data, u] data = N.c_[data, y[ :,len(model.real_x):len(model.real_x)+len(model.real_w)]] export_result_dymola(model,data,scaled=write_scaled_result, \ file_name=result_file_name) elif isinstance(simulator.problem, JMIDAESens): model = simulator.problem._model problem = simulator.problem t = N.array(simulator.t_sol) y = N.array(simulator.y_sol) yd = N.array(simulator.yd_sol) if simulator.problem.input: u_name = [k[1] for k in sorted(model.get_u_variable_names())] #u = N.zeros((len(t), len(u_name))) u = N.ones((len(t), len(u_name)))*model.real_u u_mat = simulator.problem.input[1].eval(t) if not isinstance(simulator.problem.input[0],list): u_input_name = [simulator.problem.input[0]] else: u_input_name = simulator.problem.input[0] for i,n in enumerate(u_input_name): u[:,u_name.index(n)] = u_mat[:,i]/problem._input_nominal[i] else: u = N.ones((len(t),len(model.real_u)))*model.real_u p_names , p_data = simulator.problem.get_sens_result() # extends the time array with the states columnwise data = N.c_[t,yd[:,0:len(model.real_dx)]] data = N.c_[data, y[:,0:len(model.real_x)]] data = N.c_[data, u] data = N.c_[data, y[ :,len(model.real_x):len(model.real_x)+len(model.real_w)]] for i in range(len(p_data)): data = N.c_[data, p_data[i]] export = ResultWriterDymolaSensitivity(model) export.write_header(scaled=write_scaled_result, \ file_name=result_file_name) map(export.write_point,(row for row in data)) export.write_finalize() else: raise NotImplementedError