pySimBlocks.real_time.real_time_runner

class pySimBlocks.real_time.real_time_runner.RealTimeRunner(sim: Simulator, input_blocks: List[str], output_blocks: List[str], *, target_dt: float | None = None, time_source: str = 'perf_counter')[source]

Bases: object

Run a simulator step loop against a real-time clock.

The runner measures or accepts an external timestep, forwards input values to model blocks, advances the simulator, and collects output values.

sim

Simulator instance driven by the runner.

input_blocks

Model blocks updated from external inputs at each tick.

output_blocks

Model blocks read to produce external outputs.

target_dt

Optional target period used for pacing.

initialize(t0: float = 0.0) None[source]

Initialize the simulator and synchronize the runner clock.

Parameters:

t0 – Initial simulation time in seconds.

tick(inputs: Dict[str, Any], *, dt: float | None = None, pace: bool = False) Dict[str, ndarray][source]

Execute one real-time simulation tick.

Parameters:
  • inputs – External input values keyed by block name.

  • dt – Explicit timestep override in seconds. If omitted, the runner measures elapsed wall-clock time.

  • pace – If True, sleep after the step to approximate target_dt.

Returns:

Output values keyed by block name as column vectors.

Raises:
  • KeyError – If a required input block value is missing.

  • RuntimeError – If an output block does not provide an "out" value.