VILLASframework
Modular co-simulation framework
Development

Developement is currently coordinated by Steffen Vogel stvog.nosp@m.el@e.nosp@m.onerc.nosp@m..rwt.nosp@m.h-aac.nosp@m.hen..nosp@m.de using GitLab. Please feel free to submit pull requests or bug reports.

A https://git.rwth-aachen.de/acs/public/villas/node/blob/master/CONTRIBUTING.md "contribution guide" is available in the Git repository.

Programming Paradigm

VILLASnode is currently written in C/C++ using the ISO C11 and C++14 standards while following an object oriented programming paradigm.

Main classes in VILLASnode are struct sample, struct vnode, struct vpath and class villas::node::Hook. In order to track the life cycle of those objects, each of them has an enum State member. The following figure illustrates the state machine which is used:

stateDiagram-v2 [*] --> initialized: _init() initialized --> parsed: _parse() initialized --> destroyed: _destroy() parsed --> destroyed: _destroy() parsed --> checked: _check() checked --> destroyed: _destroy() checked --> prepared: _prepare() prepared --> started: _start() started --> stopped: _stop() stopped --> destroyed: _destroy() destroyed --> [*]

Shared library: libvillas

VILLASnode is split into a shared library called libvillas and a couple of executables (villas-node, villas-pipe, villas-test, villas-signal, ...) which are linked against this library.

There are many places where VILLASnode can easily extended with plugins. All node, formats-types and hooks are implemented via plugins.