Simulation framework for nonsmooth dynamical systems
A software package for the modeling and simulation of nonsmooth dynamical systems in C++ and in Python.
Siconos is an open-source scientific software primarily targeted at modeling and simulating nonsmooth dynamical systems:
Other applications are found in Systems and Control (hybrid systems, differential inclusions, optimal control with state constraints), Optimization (Complementarity systems and Variational inequalities), Fluid Mechanics, Computer Graphics, ...
Read more about Siconos at the Siconos homepage
Perfect to understand and test the software or run lite simulations, demos, teaching ...
Prerequisite: a web browser and a network connection.
Pros: no installation prerequisites, nothing to do
Cons: limited resources. No long/important simulations.
Prerequisite: Docker installed and usable on your computer.
To use last Siconos release, run the command line
docker run --rm -p 8888:8888 -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master:latest
You will get something like
...
To access the server, open this file in a browser:
...
http://127.0.0.1:8888/lab?token=b8a131ed7aed720c8fe1d7fae034cd2b669dcf686126c598
Copy this last line into your browser, and there you will be able to start a terminal or a notebook session.
You can also start a simple terminal to use Siconos through the command line with
docker run --rm --entrypoint /bin/bash -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master:latest
Assuming you have cloned the project into
cmake -S <path-to-siconos-sources> -B build-siconos -DUSER_OPTIONS_FILE=<your-options-file>
cmake --build build-siconos -j 4 # or the number of cores available on your computer.
ctest --test-dir build-siconos # run tests, optional
cmake --install build-siconos
More details in Siconos download and install guide.
Each component can be used either from a low-level language like C/C++ or from Python.
Collection of low-level algorithms for solving optimization problems arising in the simulation of nonsmooth dynamical systems:
Library for the modeling and simulation of nonsmooth dynamical systems.
Component for the simulation of mechanical systems in interaction with their environment:
Library to add a controller to a simulation. For now almost all the implemented control schemes are based on sliding modes with an implicit discretization.
This component can be used to
Siconos is currently distributed under Apache Licenses (v2).
from siconos.kernel import LagrangianLinearTIDS, NewtonImpactNSL,\
LagrangianLinearTIR, Interaction, NonSmoothDynamicalSystem, MoreauJeanOSI,\
TimeDiscretisation, LCP, TimeStepping
from numpy import eye, empty
t0 = 0 # start time
T = 10 # end time
h = 0.005 # time step
r = 0.1 # ball radius
g = 9.81 # gravity
m = 1 # ball mass
e = 0.9 # restitution coeficient
theta = 0.5 # theta scheme
# the dynamical system
x = [1, 0, 0] # initial position
v = [0, 0, 0] # initial velocity
mass = eye(3) # mass matrix
mass[2, 2] = 2. / 5 * r * r
ball = LagrangianLinearTIDS(x, v, mass)
weight = [-m * g, 0, 0]
ball.setFExtPtr(weight) #set external forces
# Interaction ball-floor
H = [[1, 0, 0]]
nslaw = NewtonImpactNSL(e)
relation = LagrangianLinearTIR(H)
inter = Interaction(nslaw, relation)
# Model
bouncingBall = NonSmoothDynamicalSystem(t0, T)
# add the dynamical system to the non smooth dynamical system
bouncingBall.insertDynamicalSystem(ball)
# link the interaction and the dynamical system
bouncingBall.link(inter, ball)
# Simulation
# (1) OneStepIntegrators
OSI = MoreauJeanOSI(theta)
# (2) Time discretisation
t = TimeDiscretisation(t0, h)
# (3) one step non smooth problem
osnspb = LCP()
# (4) Simulation setup with (1) (2) (3)
s = TimeStepping(bouncingBall, t, OSI, osnspb)
# end of model definition
# computation
N = (T - t0) / h # the number of time steps
# time loop
while s.hasNextEvent():
s.computeOneStep()
s.nextStep()