Introduction
The purpose of this document is to define and describe the software
architecture of
Siconos/Kernel,
Siconos/Numerics and
Siconos/Front-End. It also
provides a general overview of the design of the system for (new) developers
and will be used by the project manager to share out the detailed conception
and programming in work packages.
This architecture relies on the specifications given in the
Software Requirements Specification.
As explained in
Project Proposal,
Siconos/Kernel is dedicated to the
modeling and the simulation of
NSDS, with
high level description and numerical solving strategies. It relies on
Siconos/Numerics which provides low-level
algorithms to compute basic well-identified problems.
External interfaces
The Kernel is designed to be used as a stand-alone software or as an external
libr /ary for computational softwares such as
Scilab or
Matlab, through the Front-end interface.
Indeed there are two main ways to perform a simulation:
- direct compilation/linking/launch of a main C++ program. All
instantiated objects members are then available through public methods.
For a complete example, see for instance Circuit RLCD template
in Examples directory.
- Interface with Scilab or Python. The
interface through a scientific computation software is the easiest way to
use the platform.
The way component Front-End works and is implemented is described on Front-End.
The interfaces between Siconos/Kernel and other modules are detailed on the
following scheme:
All the Kernel is written in C++, object-oriented language, using classes
architecture, all object members being private with public methods to access
to them.
A model is composed in two different parts: the Non Smooth Dynamical System
definition (dynamical systems and their interactions, relations, non smooth
laws ...) and the description of a simulation (time discretization, solver ...)
to solve it. Simulation and modeling are clearly separated and rather
independent. Moreover, they are completed by tools for input-output data
management and to handle vectors, matrices, plus a system to allow
user-defined plug-in functions.
This results in 5 distinct components listed below.
Components list
- C-00: Model : global model definition.
- C-10: ModelingTools: all
classes/objects to define a complete non smooth dynamical system.
- C-20: SimulationTools: all
classes/objects to define a simulation to solve the pre-defined
NonSmoothDynamicalSystem.
- C-30: Utils: various usefully tools (Vectors
and matrices, Exception handling ...)
- C-40: InputOutput: classes/objects for
input-ouput of data. At the time: XML management.
- C-50: Plug-in: to provide user plug-in system
for specific functions.
Integration and interfaces between components
The following figure describes the depencies between components of the
Kernel.