- Python 3.x (Tested on Python 3.9.9 for macOX)
- Python packages:
- numpy
- matplotlib
- tqdm (used to include progress bar)
This benchmark collection is organized as follows:
The folder solvers contains a collection of solvers, which can be used to simulate the benchmarks. The folder benchmarks contains a folder for each benchmark examples, e.g. the folder benchmarks/bouncingball for the rotating bouncing ball example. Each benchmark folder contains the file defining the benchmark system, e.g. bouncing_ball_system.py. The 'system' file defines the class containing all system properties and providing the mass matrix, forces, contact kinematics, etc. as methods.
Finally the acutal simulation is done by running the 'scenario' files, e.g. bouncing_ball_scenario1.py, which sets the initial conditions, calls the solver and plots the results. For instance, a simulation of the bouncing ball can be performed by calling
python benchmarks/bouncing_ball/bouncing_ball_scenario1.pyThe most general structure of governing equations, which is able to describe any of our benchmarks is given by the following. This is also the nomenclature used in the code.
Kinematic variables: time
Kinetic equation
Kinematic equation
Bilateral constraints
Contact laws: Normal cone inclusions linking gaps
This nomenclature is based on
A nonsmooth generalized-alpha method for mechanical systems with frictional contact
Giuseppe Capobianco, Jonas Harsch, Simon R. Eugster and Remco I. Leine
Int J Numer Methods Eng. 2021; 122: 6497– 6526. https://doi.org/10.1002/nme.6801