Design

Release Information

Project: Siconos
Internal Release Number: 1.0
Last update: November 29, 2006
Attached Worksheets:
Related Documents:

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.

General context overview

As explained in Project ProposalSiconos/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:

Kernel interfaces

Kernel Components

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.

kernel components interfaces