ICore Blocks / Features / Edit → Reduce

Block reduction

Three linear blocks in a row are one linear block. ICore Blocks will do that arithmetic for you — and tell you when it cannot.

What it does

Select the blocks, then Edit → Reduce (or the same submenu on the canvas' right-click menu). The selection is replaced by one State Space block whose realization is equivalent to the blocks it replaced.

  • Series — two blocks one after the other become a single realization.
  • Parallel — two blocks fed from the same signal, their outputs summed.
  • Feedback — a forward block and a feedback block around a summing junction.
  • Unity feedback — the same, where the loop closes straight from the output with no block in the return path. The signs of both summing-junction inputs are read from the junction itself, so a positive-feedback loop reduces as correctly as a negative one.
Edit → Reduce → Series
Two blocks in series — the Gain and the Transfer Function — selected together and replaced by one State Space block. The rest of the loop is untouched. Recorded in the app on the shipped Closed-Loop Speed Control template.

The algebraic loop is the hard part

A feedback interconnection of two blocks that both have direct feedthrough creates an algebraic loop: the output depends on itself within the same instant. The reduction resolves it in closed form, which is possible exactly when 1 − D_G·D_H is invertible.

When that term is numerically singular the loop has no unique solution, and the reduction fails and leaves your diagram alone. It does not fabricate a realization that would run and be wrong — the failure mode this feature exists to avoid.

Why it is worth doing

A reduced model is smaller to simulate, smaller to export, and easier to reason about: one set of state equations instead of an interconnection you have to trace. Blocks in the library are written with this in mind — a block that cannot honestly present a linear form does not claim one, because a fabricated linear form is worse than none when a reduction is going to consume it.

See also: Global solvers, per-rate subsystems  ·  Code export

Get started

See it run on your own model.

Download the application from the customer portal, or read the documentation first — the manual, every block with its measured response, and the full command reference are public.