https://github.com/modypy/modypy
A framework for hierarchical modelling, simulation and analysis of dynamic systems
https://github.com/modypy/modypy
analysis block-diagram continuous-time discrete-time dynamical-systems events linear-systems python simulation simulation-framework simulation-modeling
Last synced: 11 days ago
JSON representation
A framework for hierarchical modelling, simulation and analysis of dynamic systems
- Host: GitHub
- URL: https://github.com/modypy/modypy
- Owner: modypy
- License: bsd-2-clause
- Created: 2020-12-24T10:28:01.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-01-09T16:45:59.000Z (about 4 years ago)
- Last Synced: 2025-12-10T13:19:06.979Z (about 2 months ago)
- Topics: analysis, block-diagram, continuous-time, discrete-time, dynamical-systems, events, linear-systems, python, simulation, simulation-framework, simulation-modeling
- Language: Python
- Homepage: https://modypy.org
- Size: 2.06 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 15
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
.. image:: https://badge.fury.io/py/modypy.svg
:alt: PyPi Version
.. image:: https://img.shields.io/pypi/pyversions/modypy
:alt: PyPI - Python Version
.. image:: https://img.shields.io/github/license/modypy/modypy
:alt: GitHub
.. image:: https://github.com/modypy/modypy/actions/workflows/test.yml/badge.svg?branch=master
:alt: Build
:target: https://github.com/modypy/modypy/actions/workflows/test.yml
.. image:: https://github.com/modypy/modypy/actions/workflows/deploy_devdoc.yml/badge.svg?branch=master
:alt: Documentation Build
:target: https://github.com/modypy/modypy/actions/workflows/deploy_devdoc.yml
.. image:: https://codecov.io/gh/modypy/modypy/branch/master/graph/badge.svg
:alt: Code Coverage
:target: https://codecov.io/gh/modypy/modypy
.. image:: https://api.codiga.io/project/22584/score/svg
:alt: Code Quality Score
.. image:: https://api.codiga.io/project/22584/status/svg
:alt: Code Grade
MoDyPy (rhymes with "modify") is a Python framework for *Mo*\ delling *dy*\ namic
systems in *Py*\ thon. The framework provides methods for describing continuous-time
linear and non-linear systems in
`state-space representation `_.
It was originally inspired by `simupy `_
developed by Ben Margolis, but has a completely different philosophy and
architecture than simupy.
The basic components of a dynamic system in MoDyPy are states and signals.
States represent the internal state of the system, and signals represent the
values calculated based on the state. Ports can be connected to signals, so that
reusable blocks with input and output ports can be easily built. For more
details refer to the `documentation `_ or check out
the `video tutorial
`_.
Main Features
-------------
- Simple architecture based on states, signals and connectible ports
- Enables hierarchical modelling
- Allows the establishment of reusable building blocks
- Simulator for linear and non-linear continuous- and discrete-time systems
- Clock system to model periodic events and discrete-time components
- Steady state determination and linearization
- Library of standard blocks, including 6-degree-of-freedom rigid body motion
- Tested for 100% statement and branch coverage
Installation
------------
MoDyPy is available via the *pip* installer:
.. code-block:: bash
$ pip install modypy
To install the development version,
.. code-block:: bash
$ git clone https://github.com/modypy/modypy.git
$ pip install -e modypy
Examples
--------
.. figure:: docs/guide/06_dc_engine_sampling.png
:align: center
:alt: Simulation of a DC-motor with propeller
Simulation of a DC-motor with propeller
Check out the examples in the
`examples directory `_
and the `User's Guide `_. These include:
`dcmotor.py `_
A simple example using a DC-motor driving a propeller and sampling the
thrust using a zero-order hold.
`rigidbody.py `_
Some rigid-body simulation using moments and forces showing an object
moving in a circle with constant velocity and turn-rate.
`bouncing_ball.py `_
An example modelling a bouncing ball, demonstrating the use of events and
event-handler functions.
`quadcopter_trim.py `_
A larger example showcasing the steady-state-determination and linearisation
of complex systems, in this case for a quadrocopter frame with four
DC-motors with propellers.
They can be run from the sources using, e.g.,
.. code-block:: bash
$ pip install matplotlib
$ python examples/bouncing_ball.py
Note that some of the examples require ``matplotlib`` to run and display the
results.
Contributing
------------
Contributions are welcome! Check out the
`GitHub Project Page `_ for issues and
ideas on how to add to the project.
Contributions must adhere to the following conditions:
- New features must be accompanied by appropriate pytest tests (ensure 100%
statement *and* branch coverage!)
- New features should at least carry Python Docstrings for API documentation
following the general style of the existing API documentation.
- Use `black `_ with a line-length of 80 to
format your code. We are successively moving the project to the black style.
- Contributors must accept publishing their contribution under the licensing
conditions laid out in the ``LICENSE`` file.