t_elapse = 0.1 # Simulation time elapsed between each iteration t_pause = 0.01 # Pause between each iteration user_input = Sliders() # Instantiate Sliders class simAnimation = Animation() # Instantiate Animate class dynam = Dynamics() # Instantiate Dynamics class t = t_start # Declare time variable to keep track of simulation time elapsed while t < t_end: plt.ion() # Make plots interactive plt.figure( user_input.fig.number) # Switch current figure to user_input figure plt.pause(0.001) # Pause the simulation to detect user input # The dynamics of the model will be propagated in time by t_elapse # at intervals of t_Ts. t_temp = t + t_elapse while t < t_temp: dynam.propagateDynamics( # Propagate the dynamics of the model in time user_input.getInputValues()) t += t_Ts # Update time elapsed plt.figure( simAnimation.fig.number) # Switch current figure to animation figure simAnimation.drawSystem( # Update animation with current user input dynam.Outputs()) # time.sleep(t_pause)
# simAnimation = Animation() # Instantiate Animate class dynam = Dynamics() # Instantiate Dynamics class t = t_start # Declare time variable to keep track of simulation time elapsed while t < t_end: # Get referenced inputs from signal generators ref_input = sig_gen.getRefInputs(t) # The dynamics of the model will be propagated in time by t_elapse # at intervals of t_Ts. t_temp = t + t_elapse while t < t_temp: states = dynam.Outputs() # Get current states u = ctrl.getForces(ref_input, states) # Calculate the forces dynam.propagateDynamics( u) # Propagate the dynamics of the model in time t = round(t + t_Ts, 2) # Update time elapsed # plt.figure(simAnimation.fig.number) # Switch current figure to animation figure # simAnimation.drawSystem( # Update animation with current user input # dynam.Outputs()) # plt.pause(0.0001) # Organizes the new data to be passed to plotGen new_data = [[ref_input[0], states[0]], [u[1], states[1]], [u[0]]] plotGen.updateDataHistory(t, new_data) plt.figure(plotGen.fig.number) # Switch current figure to plotGen figure