SkillAgentSearch skills...

Siconos

Simulation framework for nonsmooth dynamical systems

Install / Use

/learn @siconos/Siconos

README

Siconos

Pipeline Status Version License

A software package for the modeling and simulation of nonsmooth dynamical systems in C++ and Python.

📚 Examples and Tutorials: Most examples and tutorials are in the separate siconos-tutorials repository. Please ensure you use consistent versions of siconos and siconos-tutorials (e.g., both main branch or both same release version).

Homepage | Documentation | Tutorials | GitLab


What is Siconos?

Siconos is an open-source scientific software package designed for modeling and simulating nonsmooth dynamical systems - systems where the dynamics are not continuous due to phenomena like impacts, friction, switches, or constraints.

Key Application Areas

| Domain | Examples | |--------|----------| | Mechanical Systems | Rigid body dynamics with contact and friction, multibody systems, granular materials | | Electrical Circuits | Power converters, rectifiers, PLLs, ADCs with ideal components | | Control Systems | Sliding mode control, hybrid systems | | Biology | Gene regulatory networks | | Optimization | Complementarity systems, variational inequalities |


Quick Start

Option 1: Try Online (No Installation)

Run Siconos directly in your browser via Binder:

Binder

Best for: Testing the software, tutorials, lightweight demos

Option 2: Docker (Recommended for Development)

Prerequisite: Docker

# Jupyter Lab with Siconos and tutorials
docker run --rm -p 8888:8888 -ti \
  gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-main:latest

# Or command-line only
docker run --rm --entrypoint /bin/bash -ti \
  gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-main:latest

Option 3: Build from Source

# Clone the repository
git clone https://github.com/siconos/siconos.git
cd siconos

# Configure and build
cmake -S . -B build -DUSER_OPTIONS_FILE=config_samples/default.cmake
cmake --build build -j$(nproc)

# Run tests (optional)
ctest --test-dir build

# Install
cmake --install build

📖 Detailed installation guide


Main Components

Each component can be used from C/C++ or Python.

siconos/numerics (C)

Low-level numerical algorithms for solving optimization problems:

  • Complementarity problems: LCP, MLCP, NCP
  • Friction-contact problems: 2D/3D with Coulomb friction, rolling friction
  • Variational inequalities: AVI, VI
  • Second-order cone programming (SOCP)
  • Relay problems

📖 Numerics documentation

siconos/kernel (C++)

Core library for modeling and simulation:

  • Dynamical systems: Lagrangian, Newton-Euler, first-order formulations
  • Numerical integration: Event-driven and time-stepping schemes
  • Nonsmooth laws: Impact, friction, complementarity, relay

siconos/mechanics (C++)

Mechanical simulation with contact detection:

siconos/control (C++)

Control systems with sliding mode control and implicit discretization.

siconos/io (C++)

Serialization and visualization:

  • HDF5 import/export
  • VTK visualization

Examples by Domain

The siconos-tutorials repository contains comprehensive examples for each application area:

| Domain | Example Topics | Link | |--------|---------------|------| | Mechanics | Bouncing ball, slider-crank, gear transmission, robotics, granular materials | Mechanics Tutorials | | Electronics | Power converters, rectifiers, PLLs, circuit simulation | Electronics Tutorials | | Control | Sliding mode control, state observers, hybrid systems | Control Tutorials | | Numerics | LCP solvers, friction contact, optimization problems | Numerics Tutorials |

📁 Browse all examples: siconos-tutorials repository


Example: Bouncing Ball

import siconos.modeling as sm
import siconos.simulation as ss
import numpy as np

# Parameters
t0, T, h = 0, 10, 0.005    # Time settings
r, g, m = 0.1, 9.81, 1      # Ball properties
e = 0.9                     # Restitution coefficient

# Create dynamical system (ball)
position = [1, 0, 0]
velocity = [0, 0, 0]
mass = np.eye(3) * m
mass[2, 2] = 2./5 * r * r

ball = sm.LagrangianLinearTIDS(position, velocity, mass)
ball.set_constant_fext(np.array([-m * g, 0, 0]))

# Interaction with floor
nslaw = sm.NewtonImpactNSL(e)
relation = sm.LagrangianLinearTIR(np.array([[1, 0, 0]]))
interaction = sm.Interaction(nslaw, relation)

# Model
model = sm.NonSmoothDynamicalSystem(t0, T)
model.insert_dynamical_system(ball)
model.link(interaction, ball)

# Simulation
osi = ss.MoreauJeanOSI(0.5)
td = ss.TimeDiscretisation(t0, h)
osnspb = ss.LCP()
sim = ss.TimeStepping(model, td, osi, osnspb)

# Run simulation
while sim.has_next_event():
    sim.compute_one_step()
    sim.next_step()

Documentation & Resources

| Resource | Link | |----------|------| | User Guide | https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos | | Tutorials | https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos-tutorials | | API Reference (Doxygen) | https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos/doxygen | | Bug Reports | GitHub Issues |


Citation

If you use Siconos in your research, please cite:

@software{siconos,
  title = {Siconos: A Software Package for Modeling and Simulation of Nonsmooth Dynamical Systems},
  author = {{Siconos Team}},
  url = {http://siconos.org},
  year = {2024}
}

License

Siconos is distributed under the Apache License, Version 2.0.


Maintained by: The Siconos Development Team
Contact: GitHub Issues

Related Skills

View on GitHub
GitHub Stars183
CategoryDevelopment
Updated5d ago
Forks35

Languages

C

Security Score

100/100

Audited on Apr 1, 2026

No findings