siconos

Simulation framework for nonsmooth dynamical systems

https://github.com/siconos/siconos

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    13 of 55 committers (23.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.5%) to scientific vocabulary

Keywords

bouncing-ball complementarity-solvers impact mcp nonsmooth-dynamical-systems numerical-calculations optimization python scientific-computing simulation solvers variational-inequality
Last synced: 4 months ago · JSON representation

Repository

Simulation framework for nonsmooth dynamical systems

Basic Info
Statistics
  • Stars: 178
  • Watchers: 22
  • Forks: 32
  • Open Issues: 12
  • Releases: 0
Topics
bouncing-ball complementarity-solvers impact mcp nonsmooth-dynamical-systems numerical-calculations optimization python scientific-computing simulation solvers variational-inequality
Created over 10 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Authors Codemeta

README.md

Siconos

pipeline status Version License

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:

  • Mechanical systems (rigid or solid) with unilateral contact and Coulomb friction and impact (Nonsmooth mechanics, contact dynamics, multibody systems dynamics or granular materials).
  • Switched Electrical Circuit such as electrical circuits with ideal and piecewise linear components: power converter, rectifier, Phase-Locked Loop (PLL) or Analog-to-Digital converter.
  • Sliding mode control systems.
  • Biology Gene regulatory networks.

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

Usage

Through your web browser

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.

Just click there Binder

Jupyter Lab environment with siconos ready to use and a set of end-user examples:

Prerequisite: Docker installed and usable on your computer.

To use last Siconos release, run the command line bash 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

bash docker run --rm --entrypoint /bin/bash -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master:latest

From source

Assuming you have cloned the project into , to build and install the libraries and the python interface ::

  • Create a user options file. Some templates are provided in /config_samples.
  • Run

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.

Main components

Each component can be used either from a low-level language like C/C++ or from Python.

siconos/numerics (C)

Collection of low-level algorithms for solving optimization problems arising in the simulation of nonsmooth dynamical systems:

  • Complementarity problems (LCP, MLCP, NCP)
  • Friction-contact problems (2D or 3D)
  • Second-order cone programming (SOCP)
  • Primal or Dual Relay problems
  • Finite dimensional Variational Inequality (AVI and VI)

siconos/kernel (C++)

Library for the modeling and simulation of nonsmooth dynamical systems.

  • Dynamical systems formalism: first order systems, Lagrangian and Newton-Euler formulations
  • Numerical integration techniques: Event-detecting (event-driven) and Event-Capturing (time-stepping) schemes
  • Nonsmooth laws: complementarity, Relay, normal cone inclusion, Friction Contact, Newton impact, multiple impact law.

siconos/mechanics (C++)

Component for the simulation of mechanical systems in interaction with their environment: * Contact detection procedure between simple primitives (homemade) and meshes bullet3 * Contact detection between Brep representation based on oce. Open CASCADE Community Edition and on pythonOCC 3D CAD/CAM package for python

siconos/control (C++)

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.

siconos/io (C++)

This component can be used to * serialize almost any simulation using boost::serialization * generate mechanical examples from HDF5 and to write HDF5 in view of visualization through vtk

License

Siconos is currently distributed under Apache Licenses (v2).

The archetypal example: "The bouncing ball"

```python 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()

Owner

  • Name: siconos
  • Login: siconos
  • Kind: organization
  • Email: siconos-users@lists.gforge.inria.fr
  • Location: France

CodeMeta (codemeta.json)

{
  "@context": "https://w3id.org/codemeta/3.0",
  "type": "SoftwareSourceCode",
  "applicationCategory": "Mechanical systems, Friction, Modeling natural environmental risks in mountains, Control, Electrical Circuits",
  "author": [
    {
      "id": "_:author_1",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRIA"
      },
      "email": "vincent.acary@inria.fr",
      "familyName": "Acary",
      "givenName": "Vincent"
    },
    {
      "id": "_:author_2",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRIA"
      },
      "email": "Maurice.Bremond@inria.fr",
      "familyName": "Bremond",
      "givenName": "Maurice"
    },
    {
      "id": "_:author_3",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "Humboldt-Universitt"
      },
      "email": "olivier.huber@inria.fr",
      "familyName": "Huber",
      "givenName": "Olivier"
    },
    {
      "id": "_:author_4",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "CNRS"
      },
      "email": "franck.perignon@univ-grenoble-alpes.fr",
      "familyName": "Perignon",
      "givenName": "Franck"
    },
    {
      "id": "_:author_5",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRIA"
      },
      "email": "roger.pissard-gibollet@inria.fr",
      "familyName": "Pissard-Gibollet",
      "givenName": "Roger"
    },
    {
      "id": "_:author_6",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRIA"
      },
      "email": "samuel.heidmann@inria.fr",
      "familyName": "Heidmann",
      "givenName": "Samuel"
    }
  ],
  "codeRepository": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos",
  "dateCreated": "2004-01-01",
  "dateModified": "2024-04-29",
  "description": "Siconos is an open-source scientific software primarily targeted at modeling and simulating nonsmooth dynamical systems in C++ and in Python",
  "downloadUrl": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/releases",
  "identifier": "swh:1:dir:7d7edd5890f7687663c121abe1c3818a16f1cdb2",
  "keywords": [
    "Nonsmooth systems",
    "friction-contact",
    "complementarity"
  ],
  "license": "https://spdx.org/licenses/Apache-2.0",
  "name": "Siconos",
  "operatingSystem": [
    "Linux",
    "MacOs"
  ],
  "programmingLanguage": [
    "Python",
    "C++",
    "Fortran",
    "C"
  ],
  "relatedLink": [
    "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials",
    "https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos/"
  ],
  "releaseNotes": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/blob/master/Changelog?ref_type=heads",
  "softwareRequirements": [
    "https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos/install_guide/siconos_dep.html",
    "/"
  ],
  "version": "4.5.0",
  "codemeta:contIntegration": {
    "id": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/commits/master"
  },
  "continuousIntegration": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/commits/master",
  "developmentStatus": "active",
  "issueTracker": "https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/issues",
  "referencePublication": "https://hal.inria.fr/inria-00162911"
}

GitHub Events

Total
  • Issues event: 4
  • Watch event: 15
  • Delete event: 2
  • Issue comment event: 7
  • Push event: 13
  • Fork event: 2
  • Create event: 3
Last Year
  • Issues event: 4
  • Watch event: 15
  • Delete event: 2
  • Issue comment event: 7
  • Push event: 13
  • Fork event: 2
  • Create event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 9,495
  • Total Committers: 55
  • Avg Commits per committer: 172.636
  • Development Distribution Score (DDS): 0.648
Past Year
  • Commits: 76
  • Committers: 3
  • Avg Commits per committer: 25.333
  • Development Distribution Score (DDS): 0.421
Top Committers
Name Email Commits
Vincent Acary v****y@i****r 3,346
Maurice Bremond m****d@i****r 2,033
Olivier Huber o****2@w****u 1,129
Stephen Sinclair s****r@i****l 918
Franck Perignon f****n@i****r 637
Franck Pérignon f****n@u****r 476
bonnefon b****n@b****5 355
mrenouf m****f@b****5 67
Paul Armand p****d@u****r 63
schindler s****r@b****5 56
Roger Pissard r****t@i****r 48
Minh Nguyen h****n@i****r 44
charlety c****y@b****5 44
khenous k****s@b****5 44
nineb n****b@b****5 38
Maksym Shpakovych m****h@g****m 33
denoyelp d****p@b****5 29
Ngoc-Son Nguyen n****n@i****r 18
jm1981 j****1@b****5 18
morarescu m****u@b****5 13
mozul m****l@b****5 11
dubois d****s@b****5 8
fgarrigues f****s@b****5 6
Charly c****i@i****l 6
Reinhard o****r@a****t 4
Jan Michalczyk j****k@i****r 4
hmassias h****s@b****5 4
billet b****t@b****5 4
Alexandre Rocca a****a@i****r 4
ndiayea n****a@b****5 3
and 25 more...

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 152
  • Total pull requests: 22
  • Average time to close issues: about 1 year
  • Average time to close pull requests: about 2 months
  • Total issue authors: 6
  • Total pull request authors: 5
  • Average comments per issue: 4.93
  • Average comments per pull request: 3.86
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 2
  • Pull request authors: 0
  • Average comments per issue: 0.67
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • xhub (43)
  • vacary (28)
  • radarsat1 (12)
  • fperignon (5)
  • batzkass (2)
  • yurivict (1)
  • rajkirandhiman (1)
  • mmorandi (1)
  • remyroubinet (1)
  • octave-user (1)
Pull Request Authors
  • radarsat1 (9)
  • xhub (2)
  • vacary (2)
  • octave-user (2)
  • bremond (2)
  • fperignon (1)
  • mmorandi (1)
  • moleculext (1)
Top Labels
Issue Labels
bug (10) feature request (8) enhancement (8) Build failed (7) cleanup (7) packaging (5) question (4) licensing issue (4) documentation (3) help wanted (1)
Pull Request Labels

Dependencies

externals/renderer/package.json npm
  • dat.gui >=0.6.1
  • jquery >=1.11.3
  • stats.js >=0.17.0
  • three >=0.71.0
ci_gitlab/dockerfiles/requirements.txt pypi
  • h5py *
  • lxml *
  • matplotlib *
  • numpy *
  • pyhull *
  • pytest *
  • scipy *
  • vtk *
ci_gitlab/dockerfiles/requirements4doc.txt pypi
  • breathe *
  • sphinx *
  • sphinx-bootstrap-theme *
  • sphinx-rtd-theme *
  • sphinxcontrib-bibtex *
  • sphinxcontrib-websupport *
  • ytsphinx *
docs/requirements.txt pypi
  • breathe *
  • h5py *
  • lxml *
  • matplotlib *
  • numpydoc *
  • pytest *
  • scipy *
  • sphinx *
  • sphinx-bootstrap-theme *
  • sphinx-rtd-theme *
  • sphinxcontrib-bibtex *
  • sphinxcontrib-napoleon *
  • sphinxcontrib-websupport *
wrap/requirements4tests.txt pypi
  • h5py * test
  • numpy * test
  • pyhull * test
  • pytest * test
  • scipy * test
  • vtk * test
.github/workflows/cmake_ubuntu_latest_debug.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
.github/workflows/cmake_ubuntu_latest_release.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
ci_gitlab/dockerfiles/archlinux-oce/Dockerfile docker
  • archlinux/base latest build
ci_gitlab/dockerfiles/centos-7/Dockerfile docker
  • centos 7 build
ci_gitlab/dockerfiles/debian-buster/Dockerfile docker
  • debian buster build
ci_gitlab/dockerfiles/debian-stretch/Dockerfile docker
  • debian stretch build
ci_gitlab/dockerfiles/debian-unstable/Dockerfile docker
  • debian unstable build
ci_gitlab/dockerfiles/fedora-33/Dockerfile docker
  • fedora 33 build
ci_gitlab/dockerfiles/jupyterlab/Dockerfile docker
  • jupyter/scipy-notebook latest build
ci_gitlab/dockerfiles/opensuse-leap-15.0/Dockerfile docker
  • opensuse/leap 15.0 build
ci_gitlab/dockerfiles/siconoslab/Dockerfile docker
  • IMAGENAME latest build
ci_gitlab/dockerfiles/ubuntu18.04/Dockerfile docker
  • ubuntu 18.04 build
ci_gitlab/dockerfiles/ubuntu18.04-oce/Dockerfile docker
  • gricad-registry.univ-grenoble-alpes.fr/REGISTRY_PATH/ubuntu18.04 latest build
ci_gitlab/dockerfiles/ubuntu20.04/Dockerfile docker
  • gricad-registry.univ-grenoble-alpes.fr/REGISTRY_PATH/sources/ubuntu20.04-light latest build
ci_gitlab/dockerfiles/ubuntu20.04-light/Dockerfile docker
  • ubuntu 20.04 build
ci_gitlab/dockerfiles/ubuntu20.04-oce/Dockerfile docker
  • gricad-registry.univ-grenoble-alpes.fr/REGISTRY_PATH/sources/ubuntu20.04 latest build
ci_gitlab/dockerfiles/ubuntu22.04/Dockerfile docker
  • ubuntu 22.04 build