Metis: Matlab-based simulation of dynamical systems.
See license and acknowledgements.
If you used this code (partially) in your project or found it somehow useful, please cite one or both of the following works:
@article{kinon_conserving_2024,
author = {Kinon, Philipp L. and Betsch, P.},
title = {Conserving integration of multibody systems with singular and non-constant mass matrix including quaternion-based rigid body dynamics},
journal = {Multibody Syst. Dyn.},
year = {2024},
doi = {10.1007/s11044-024-10001-9}
}
@article{kinon_structure_2023,
author = {Kinon, Philipp L. and Betsch, P. and Schneider, S.},
title = {Structure-preserving integrators based on a new variational principle for constrained mechanical systems},
journal = {Nonlinear Dyn.},
year = {2023},
doi = {10.1007/s11071-023-08522-7},
note = {doi: 10.1007/s11071-023-08522-7}
}
@article{kinon_ggl_2023,
author = {Kinon, Philipp L. and Betsch, P. and Schneider, S.},
title = {The {GGL} variational principle for constrained mechanical systems},
journal = {Multibody Syst. Dyn.},
volume = {57},
pages = {211--236},
year = {2023},
doi = {10.1007/s11044-023-09889-6}
}
The full documentation can be found here. See How to Start below.
This project targets the efficient and easy numerical computation of dynamical systems with or without holonomic constraints: particle systems as well as rigid body systems and multibody dynamics.
Metis is an object-oriented MATLAB code package - tested with the R2023b version.
A startscript loads the desired input-file. This input-file includes all necessary parameters for the given mechanical problem (geometry, loads, initial values,...), the chosen numerical integration scheme (time-step size, method, simulation time), the Postprocessing routine (plot quantities, animation, export) and the solution technique (max. iterations, tolerance). Metis creates all necessary objects and computes the approximate solution based on the given parameters. Eventually, one can choose to have an animation of the solution, some plots are created and the results are being exported.
The simulation is will be tracked by a log-file ./metis.log
.
- MATLAB
- matlab2tikz (optional)
- Initial Value Problems (IVP) of Constrained Dynamics leading to Differential-algebraic Equations (DAEs)
- Numerical Integration (Direct Methods, Variational Integrators, Energy-Momentum Schemes)
- Newton-Rhapson Method
- Particle Systems
- Rigid Body Dynamics
- Multibody Dynamics
- Clone this directory or download the .zip folder
- Get matlab2tikz (optional)
- Open the MATLAB editor or run it with the shell script metis.sh
- Open start_metis_single_analysis.m
- Adjust
<input_file_name>
corresponding to a file from /input, for more info look at README_input
[simulation, system, integrator, solver] = Metis('input/<input_file_name>',1,1);
- Adjust the path to the matlab2tikz directory in the chosen input-file
- Execute start_metis_single_analysis.m for a first simulation
- Edit or change input file or create a new one in /input
- For error analyses run start_metis_error_analysis.m with corresponding input-file
- Have fun!
Hamiltonian Dynamics and Constraints:
Differential-Algebraic Equations:
Numerical Integration:
- Hairer, Lubich, Wanner: Geometric numerical integration: structure-preserving algorithms for ordinary differential equations, 2006
- Lew, Mata: A Brief Introduction to Variational Integrators, 2016
- Marsden, West: Discrete mechanics and variational integrators, 2001
- Leyendecker, Marsden, Ortiz: Variational integrators for constrained dynamical systems, 2008
- Gonzalez: Time integration and discrete Hamiltonian systems, 1996
Rigid Body Dynamics:
- Betsch, Steinmann: Constrained integration of rigid body dynamics, 2001
- Betsch, Siebert: Rigid body dynamics in terms of quaternions: Hamiltonian formulation and conserving numerical integration, 2009
- GitHub - philipplk
- Website - Philipp L. Kinon, Karlsruhe Institute of Technology (KIT)
- ResearchGate - Philipp L. Kinon
- LinkedIn - Philipp Kinon
This project was initialized by Philipp L. Kinon during their master thesis at the Institute of Mechanics (IFM) at Karlsruhe Institute of Technology (KIT), Germany. Subsequently, Philipp worked on the code continuously in the context of academic projects. The achieved results would not have been possible without the support and supervision by Prof. Peter Betsch and the other colleagues from the institute.
Coding support:
- Julian Karl Bauer (Github, Google Scholar)
- José Luis Muñoz Reyes (GitHub)