Christoph Rüegg

Math.NET, distributed computing and how an electrical engineer sees the world of complex software

Yttrium: New MathSystem Frontend

Today I’ve extended the set of classes you usually work with (most important ones are Project and Builder, both in the Workplace namespace) with a new class called MathSystem. MathSystem encapsulates a system, that is a network of signals and ports, to a kind of blackbox with in- and output signals as well as buses. From the outside, a MathSystem may seem to be similar to a port. Indeed, such a system may be loaded as a CompoundProcess in an architecture and thus into a port, allowing hierarchical modularized systems. Beside, a MathSystem may simply be used as a numeric function by calling the provided evaluate method directly. This method maps the input arguments to the input signals, simulates the system for an instant and extracts and returns the output signal values afterwards. However, such systems do not behave different to signals not part of the systems: all signals in the same context are controlled by the same internal scheduler, whether the signals are part of some systems or not. Another important function of MathSystems is serialization: You may serialize a MathSystem completely to an XML tree, as well as reconstruct a system from such a tree. There are also some other more internal functions, like the deconstruction of signals and ports networks not used any more and reducing scheduling and evaluation cost. Last but not least, MathSystem will play an import role in other workplace classes like MathFunction and Project.