Description
NOTE: these are preliminary notes.
For some cases like time-independent simulations or runge-kutta time stepping schemes, the runtime workflow that is currently defined in the framework, i.e., initialize+master_clock*(run_step+finalize_step)+finalize
may not be the most appropriate. More flexibility would be nice.
Any runtime workflow may actually be defined in a very abstract manner, i.e., as multiple passes through the whole DAG of processes in a model, each pass executing a specific method implemented in each process class (or doing nothing if the process don't implement that method). The implementation of this abstract concept shouldn't be too challenging.
Regarding the API, we might simply use a "signature" string like the one above to define a particular workflow. The most simple workflow would have the signature run
, which consist of one pass through the DAG executing the run
method of each process (topologically sorted). What is more challenging is when the "signature" contains other information than method names (like master_clock
above).
The right place to define such signature is probably either as an argument of xs.Model
or when setting a simulation driver.