Saving the order of operations discussion from original readme*
Order of operations#
Initialization#
Instantiate the py_sim modules, which sets the intial conditions
Run get_outputs, which sets the initial outputs
Establish the helics connection to AMRwind (?)
Main run: for \(k = 0, 1, 2, 3, \dots\)#
Compute control actions in controller, [i.e. \(u_k = h(y_k, d_k)\)]
Record all signals for time step \(k\).
Update state in py_sim [\(x_{k+1} = f(x_k, u_k, d_k)\)] and output in py_sim [\(y_{k+1} = g(x_{k+1})\)]
Update state and output in helics/AMRwind, possibly using components from py_sim (TODO: what ordering should be used there?) [\(x_{k+1} = f(x_k, u_k, d_k)\), \(y_{k+1} = g(x_{k+1})\)]