{"id":26641177,"url":"https://github.com/siconos/siconos","last_synced_at":"2025-04-09T15:04:22.811Z","repository":{"id":37677392,"uuid":"37709357","full_name":"siconos/siconos","owner":"siconos","description":"Simulation framework for nonsmooth dynamical systems","archived":false,"fork":false,"pushed_at":"2025-03-18T10:51:34.000Z","size":251127,"stargazers_count":172,"open_issues_count":12,"forks_count":31,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-09T15:03:41.648Z","etag":null,"topics":["bouncing-ball","complementarity-solvers","impact","mcp","nonsmooth-dynamical-systems","numerical-calculations","optimization","python","scientific-computing","simulation","solvers","variational-inequality"],"latest_commit_sha":null,"homepage":"https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/siconos.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":"codemeta.json"}},"created_at":"2015-06-19T07:55:53.000Z","updated_at":"2025-03-18T10:51:39.000Z","dependencies_parsed_at":"2023-02-15T11:16:13.307Z","dependency_job_id":"dd7fce36-023c-4d82-ac1c-b7121f1f93a2","html_url":"https://github.com/siconos/siconos","commit_stats":{"total_commits":9308,"total_committers":60,"mean_commits":"155.13333333333333","dds":0.651804899011603,"last_synced_commit":"98c62ef5c71312c97c8b9389e649d8c414076821"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siconos%2Fsiconos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siconos%2Fsiconos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siconos%2Fsiconos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siconos%2Fsiconos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/siconos","download_url":"https://codeload.github.com/siconos/siconos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055276,"owners_count":21040156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bouncing-ball","complementarity-solvers","impact","mcp","nonsmooth-dynamical-systems","numerical-calculations","optimization","python","scientific-computing","simulation","solvers","variational-inequality"],"created_at":"2025-03-24T18:20:08.728Z","updated_at":"2025-04-09T15:04:22.789Z","avatar_url":"https://github.com/siconos.png","language":"C","funding_links":[],"categories":["📚 Projects (1974 total)"],"sub_categories":["MCP Servers"],"readme":"# Siconos\n\n[![pipeline status](https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/badges/master/pipeline.svg)](https://gricad-gitlab.univ-grenoble-alpes.fr/nonsmooth/siconos/-/commits/master)  [![Version](https://img.shields.io/github/release/siconos/siconos.svg)](https://github.com/siconos/siconos/releases/latest)  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/siconos/siconos/blob/master/COPYING)\n\nA software package for the modeling and simulation of nonsmooth dynamical systems in C++ and in Python.\n\nSiconos is an open-source scientific software primarily targeted at modeling and simulating nonsmooth dynamical systems:\n\n  * _Mechanical systems_ (rigid or solid) with unilateral contact and Coulomb friction and impact (Nonsmooth mechanics, \ncontact dynamics, multibody systems dynamics or granular materials). \n  * _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.\n  * _Sliding mode control_ systems.\n  * _Biology_ Gene regulatory networks.\n \nOther applications are found in Systems and Control (hybrid systems, differential inclusions,\noptimal control with state constraints), Optimization (Complementarity systems and Variational inequalities), \nFluid Mechanics, Computer Graphics, ...\n\nRead more about Siconos at the [Siconos homepage](http://siconos.gforge.inria.fr)\n\n## Usage\n\n### Through your web browser\n\nPerfect to understand and test the software or run lite simulations, demos, teaching ...\n\nPrerequisite: a web browser and a network connection.\n\nPros: no installation prerequisites, nothing to do\n\nCons: limited resources. No long/important simulations.\n\nJust click there [![Binder](https://plmbinder.math.cnrs.fr/binder/badge_logo.svg)](https://plmbinder.math.cnrs.fr/binder/v2/git/https%3A%2F%2Fgricad-gitlab.univ-grenoble-alpes.fr%2Fnonsmooth%2Fsiconos-tutorials.git/HEAD)\n\n### Jupyter Lab environment with siconos ready to use and a set of end-user examples:\n\nPrerequisite: Docker installed and usable on your computer.\n\n\nTo use last Siconos release, run the command line\n```bash\ndocker run --rm -p 8888:8888 -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master:latest\n```\nYou will get something like\n```\n...\nTo access the server, open this file in a browser:\n...\n        http://127.0.0.1:8888/lab?token=b8a131ed7aed720c8fe1d7fae034cd2b669dcf686126c598\n```\nCopy this last line into your browser, and there you will be able to start a terminal or a notebook session.\n\n\nYou can also start a simple terminal to use Siconos through the command line with\n\n```bash\ndocker run --rm --entrypoint /bin/bash  -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master:latest\n```\n\n\n\n### From source\n\nAssuming you have cloned the project into \u003csiconos-sources\u003e, to build and install the libraries and the python interface ::\n\n* Create a user options file. Some templates are provided in \u003csiconos-sources\u003e/config_samples.\n* Run\n\n```\ncmake -S \u003cpath-to-siconos-sources\u003e -B build-siconos -DUSER_OPTIONS_FILE=\u003cyour-options-file\u003e\ncmake --build build-siconos -j 4 # or the number of cores available on your computer.\nctest --test-dir build-siconos   # run tests, optional\ncmake --install build-siconos\n```\n\nMore details in [Siconos download and install guide](https://nonsmooth.gricad-pages.univ-grenoble-alpes.fr/siconos/install_guide/index.html).\n\n\u003c!-- ## Docker images --\u003e\n\n\u003c!-- #### Docker images with siconos ready to use: --\u003e\n\n\u003c!-- * latest version (development) --\u003e\n\n\u003c!-- ``` --\u003e\n\u003c!-- docker run -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconos-master:latest --\u003e\n\u003c!-- ``` --\u003e\n\n\u003c!-- * A specific (release) version X.Y: --\u003e\n\n\u003c!-- ``` --\u003e\n\u003c!-- docker run -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconos-release-X.Y:latest --\u003e\n\u003c!-- ``` --\u003e\n\n\u003c!-- #### Jupyter Lab environment with siconos ready to use and a set of end-user examples: --\u003e\n\n\u003c!-- * latest version (development) --\u003e\n\n\u003c!-- ``` --\u003e\n\u003c!-- docker run -p 8888:8888 -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-master --\u003e\n\u003c!-- ``` --\u003e\n\n\n\u003c!-- * A specific (release) version X.Y: --\u003e\n\n\u003c!-- ``` --\u003e\n\u003c!-- docker run -p 8888:8888 -ti gricad-registry.univ-grenoble-alpes.fr/nonsmooth/siconos-tutorials/siconoslab-release-X.Y --\u003e\n\u003c!-- ``` --\u003e\n\n\n\n# Main components\n\nEach component can be used either from a low-level language like C/C++ or from Python.\n\n## siconos/numerics (C)\n\nCollection of low-level algorithms for solving optimization problems arising in the simulation of nonsmooth dynamical systems:\n\n  * Complementarity problems ([LCP](https://en.wikipedia.org/wiki/Linear_complementarity_problem), [MLCP](https://en.wikipedia.org/wiki/Mixed_linear_complementarity_problem), [NCP](https://en.wikipedia.org/wiki/Nonlinear_complementarity_problem))\n  * Friction-contact problems (2D or 3D)\n  * Second-order cone programming (SOCP)\n  * Primal or Dual Relay problems\n  * Finite dimensional [Variational Inequality](https://en.wikipedia.org/wiki/Variational_inequality) (AVI and VI)\n\n## siconos/kernel (C++)\n\nLibrary for the modeling and simulation of nonsmooth dynamical systems.\n\n  * Dynamical systems formalism: first order systems, Lagrangian and Newton-Euler formulations\n  * Numerical integration techniques: Event-detecting (event-driven) and Event-Capturing (time-stepping) schemes\n  * Nonsmooth laws: complementarity, Relay, normal cone inclusion, Friction Contact, Newton impact, multiple impact law.\n\n## siconos/mechanics (C++)\n\nComponent for the simulation of mechanical systems in interaction with their environment:\n* Contact detection procedure between simple primitives (homemade) and meshes [bullet3](https://github.com/bulletphysics/bullet3)\n* Contact detection between Brep representation based on [oce. Open CASCADE Community Edition](https://github.com/tpaviot/oce) and on [pythonOCC](https://github.com/tpaviot/pythonocc) 3D CAD/CAM package for python \n\n## siconos/control (C++)\n\nLibrary to add a controller to a simulation. For now almost all the implemented control schemes are based on sliding modes with an implicit discretization.\n\n## siconos/io (C++)\n\nThis component can be used to \n* serialize almost any simulation using [boost::serialization](http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/index.html)\n* generate mechanical examples from HDF5 and to write HDF5 in view of visualization through [vtk](http://www.vtk.org)\n\n# License\n\nSiconos is currently distributed under Apache Licenses (v2).\n\n### The archetypal example: \"The bouncing ball\"\n```python\nfrom siconos.kernel import LagrangianLinearTIDS, NewtonImpactNSL,\\\nLagrangianLinearTIR, Interaction, NonSmoothDynamicalSystem, MoreauJeanOSI,\\\nTimeDiscretisation, LCP, TimeStepping\nfrom numpy import eye, empty\n\nt0 = 0       # start time\nT = 10       # end time\nh = 0.005    # time step\nr = 0.1      # ball radius\ng = 9.81     # gravity\nm = 1        # ball mass\ne = 0.9      # restitution coeficient\ntheta = 0.5  # theta scheme\n\n# the dynamical system\nx = [1, 0, 0]    # initial position\nv = [0, 0, 0]    # initial velocity\nmass = eye(3)  # mass matrix\nmass[2, 2] = 2. / 5 * r * r\nball = LagrangianLinearTIDS(x, v, mass)\nweight = [-m * g, 0, 0] \nball.setFExtPtr(weight) #set external forces\n# Interaction ball-floor\nH = [[1, 0, 0]]\nnslaw = NewtonImpactNSL(e)\nrelation = LagrangianLinearTIR(H)\ninter = Interaction(nslaw, relation)\n# Model\nbouncingBall = NonSmoothDynamicalSystem(t0, T)\n# add the dynamical system to the non smooth dynamical system\nbouncingBall.insertDynamicalSystem(ball)\n# link the interaction and the dynamical system\nbouncingBall.link(inter, ball)\n# Simulation\n# (1) OneStepIntegrators\nOSI = MoreauJeanOSI(theta)\n# (2) Time discretisation \nt = TimeDiscretisation(t0, h)\n# (3) one step non smooth problem\nosnspb = LCP()\n# (4) Simulation setup with (1) (2) (3)\ns = TimeStepping(bouncingBall, t, OSI, osnspb)\n# end of model definition\n\n# computation\nN = (T - t0) / h # the number of time steps\n# time loop\nwhile s.hasNextEvent():\n    s.computeOneStep()\n    s.nextStep()\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiconos%2Fsiconos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiconos%2Fsiconos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiconos%2Fsiconos/lists"}