====
PyDy
====
|pypi| |anaconda| |rtd-docs| |github-build|
.. |pypi| image:: https://img.shields.io/pypi/v/pydy.svg
:target: https://pypi.python.org/pypi/pydy
:alt: Latest Released Version
.. |anaconda| image:: https://anaconda.org/conda-forge/pydy/badges/version.svg
:target: https://anaconda.org/conda-forge/pydy
.. |rtd-docs| image:: https://readthedocs.org/projects/pydy/badge/?version=stable
:target: https://pydy.readthedocs.io/en/stable/?badge=stable
:alt: Documentation Status
.. |github-build| image:: https://github.com/pydy/pydy/actions/workflows/tests.yml/badge.svg
:target: https://github.com/pydy/pydy/actions
PyDy_, short for Python Dynamics, is a tool kit written in the Python
programming language that utilizes an array of scientific programs to enable
the study of multibody dynamics. The goal is to have a modular framework that
can provide the user with their desired workflow, including:
- Model specification
- Equation of motion generation
- Simulation
- Visualization
- Benchmarking
- Publication
.. _PyDy: http://pydy.org
We started by building the SymPy_ `mechanics package`_ which provides an API
for building models and generating the symbolic equations of motion for complex
multibody systems. More recently we developed two packages, `pydy.codegen` and
`pydy.viz`, for simulation and visualization of the models, respectively. This
Python package contains these two packages and other tools for working with
mathematical models generated from SymPy mechanics. The remaining tools
currently used in the PyDy workflow are popular scientific Python packages such
as NumPy_, SciPy_, IPython_, Jupyter_, ipywidgets_, pythreejs_, and matplotlib_
which provide additional code for numerical analyses, simulation, and
visualization.
.. _SymPy: http://sympy.org
.. _mechanics package: http://docs.sympy.org/latest/modules/physics/mechanics/index.html
.. _NumPy: http://numpy.scipy.org
.. _SciPy: http://www.scipy.org/scipylib/index.html
.. _IPython: http://ipython.org
.. _Jupyter: http://jupyter.org
.. _ipywidgets: https://ipywidgets.readthedocs.io
.. _pythreejs: https://pythreejs.readthedocs.io
.. _matplotlib: http://matplotlib.org
Installation
============
We recommend the conda_ package manager and the Anaconda_ or Miniconda_
distributions for easy cross platform installation.
.. _conda: http://conda.pydata.org/
.. _Anaconda: http://docs.continuum.io/anaconda/
.. _Miniconda: https://docs.conda.io/en/latest/miniconda.html
Once Anaconda (or Miniconda) is installed type::
$ conda install -c conda-forge pydy
Also, a simple way to install all of the optional dependencies is to install
the ``pydy-optional`` metapackage using conda::
$ conda install -c conda-forge pydy-optional
Note that ``pydy-optional`` currently enforces the use of Jupyter 4.0, so you
may not want to install into your root environment. Create a new environment
for working with PyDy examples that use the embedded Jupyter visualizations::
$ conda create -n pydy -c conda-forge pydy-optional
$ conda activate pydy
(pydy)$ python -c "import pydy; print(pydy.__version__)"
Other installation options
--------------------------
If you have the pip package manager installed you can type::
$ pip install pydy
Installing from source is also supported. The latest stable version of the
package can be downloaded from PyPi\ [#]_::
$ wget https://pypi.python.org/packages/source/p/pydy/pydy-X.X.X.tar.gz
.. [#] Change ``X.X.X`` to the latest version number.
and extracted and installed\ [#]_::
$ tar -zxvf pydy-X.X.X.tar.gz
$ cd pydy-X.X.X
$ python setup.py install
.. [#] For system wide installs you may need root permissions (perhaps prepend
commands with ``sudo``).
Dependencies
------------
PyDy has hard dependencies on the following software\ [#]_:
.. [#] We only test PyDy with these minimum dependencies; these module versions
are provided in the Ubuntu 22.04 packages. Previous versions may work.
- Python >= 3.9
- setuptools >= 44.1.1
- packaging >= 21.3
- NumPy_ >= 1.21.5
- SciPy_ >= 1.8.0
- SymPy_ >= 1.9
- PyWin32 >= 303 (Windows Only)
PyDy has optional dependencies for extended code generation on:
- Cython_ >= 0.29.28
- Theano_ >= 1.0.5
and animated visualizations with ``Scene.display_jupyter()`` on:
- `Jupyter Notebook`_ >= 6.0.0 or `Jupyter Lab` >= 1.0.0
- ipywidgets_ >= 6.0.0
- pythreejs_ >= 2.1.1
or interactive animated visualizations with ``Scene.display_ipython()`` on:
- 4.0.0 <= `Jupyter Notebook`_ < 5.0.0
- 4.0.0 <= ipywidgets_ < 5.0.0
.. _Cython: http://cython.org/
.. _Theano: http://deeplearning.net/software/theano/
.. _Jupyter Notebook: https://jupyter-notebook.readthedocs.io
.. _Jupyter Lab: https://jupyterlab.readthedocs.io
The examples may require these dependencies:
- matplotlib_ >= 3.5.1
- version_information_
.. _version_information: https://pypi.python.org/pypi/version_information
Usage
=====
This is an example of a simple one degree of freedom system: a mass under the
influence of a spring, damper, gravity and an external force::
/ / / / / / / / /
-----------------
| | | | g
\ | | | V
k / --- c |
| | | x, v
-------- V
| m | -----
--------
| F
V
Derive the system:
.. code:: python
from sympy import symbols
import sympy.physics.mechanics as me
mass, stiffness, damping, gravity = symbols('m, k, c, g')
position, speed = me.dynamicsymbols('x v')
positiond = me.dynamicsymbols('x', 1)
force = me.dynamicsymbols('F')
ceiling = me.ReferenceFrame('N')
origin = me.Point('origin')
origin.set_vel(ceiling, 0)
center = origin.locatenew('center', position * ceiling.x)
center.set_vel(ceiling, speed * ceiling.x)
block = me.Particle('block', center, mass)
kinematic_equations = [speed - positiond]
force_magnitude = mass * gravity - stiffness * position - damping * speed + force
forces = [(center, force_magnitude * ceiling.x)]
particles = [block]
kane = me.KanesMethod(ceiling, q_ind=[position], u_ind=[speed],
kd_eqs=kinematic_equations)
kane.kanes_equations(particles, loads=forces)
Create a system to manage integration and specify numerical values for the
constants and specified quantities. Here, we specify sinusoidal forcing:
.. code:: python
from numpy import array, linspace, sin
from pydy.system import System
sys = System(kane,
constants={mass: 1.0, stiffness: 10.0,
damping: 0.4, gravity: 9.8},
specifieds={force: lambda x, t: sin(t)},
initial_conditions={position: 0.1, speed: -1.0},
times=linspace(0.0, 10.0, 1000))
Integrate the equations of motion to get the state trajectories:
.. code:: python
y = sys.integrate()
Plot the results:
.. code:: python
import matplotlib.pyplot as plt
plt.plot(sys.times, y)
plt.legend((str(position), str(speed)))
plt.xlabel('Time [s]')
plt.show()
.. image:: readme-msd-result.png
Documentation
=============
The documentation for this package is hosted at http://pydy.readthedocs.org but
you can also build them from source using the following instructions.
To build the documentation you must install the dependencies:
- Sphinx_
- numpydoc_
- jupyter-sphinx_
.. _Sphinx: http://sphinx-doc.org/
.. _numpydoc: https://pypi.python.org/pypi/numpydoc
.. _jupyter-sphinx: https://jupyter-sphinx.readthedocs.io/
To build the HTML docs, run Make from within the ``docs`` directory::
$ cd docs
$ make html
You can then view the documentation from your preferred web browser, for
example::
$ firefox _build/html/index.html
Modules and Packages
====================
Code Generation (codegen)
-------------------------
This package provides code generation facilities. It generates functions that
can numerically evaluate the right hand side of the ordinary differential
equations generated with sympy.physics.mechanics_ with three different
backends: SymPy's lambdify_, Theano, and Cython.
.. _sympy.physics.mechanics: http://docs.sympy.org/latest/modules/physics/mechanics
.. _lambdify: http://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify
Models (models.py)
------------------
The models module provides some canned models of classic systems.
Systems (system.py)
-------------------
The System module provides a ``System`` class to manage simulation of a single
system.
Visualization (viz)
-------------------
This package provides tools to create 3D animated visualizations of the
systems. The visualizations utilize WebGL and run in a web browser. They can
also be embedded into an IPython notebook for added interactivity.
Development Environment
=======================
The source code is managed with the Git version control system. To get the
latest development version and access to the full repository, clone the
repository from Github with::
$ git clone https://github.com/pydy/pydy.git
You should then install the dependencies for running the tests:
- pytest
- phantomjs_: 1.9.0
.. _phantomjs: http://phantomjs.org
Isolated Environments
---------------------
It is typically advantageous to setup a virtual environment to isolate the
development code from other versions on your system. There are two popular
environment managers that work well with Python packages: virtualenv and
conda_.
The following installation assumes you have virtualenvwrapper_ in addition to
virtualenv and all the dependencies needed to build the various packages::
$ mkvirtualenv pydy-dev
(pydy-dev)$ pip install numpy scipy cython pytest theano sympy ipython "notebook<5.0" "ipywidgets<5.0" version_information
(pydy-dev)$ pip install matplotlib # make sure to do this after numpy
(pydy-dev)$ git clone git@github.com:pydy/pydy.git
(pydy-dev)$ cd pydy
(pydy-dev)$ python setup.py develop
.. _virtualenvwrapper: https://pypi.python.org/pypi/virtualenvwrappe://pypi.python.org/pypi/virtualenvwrapper
Or with conda_::
$ conda create -c pydy -n pydy-dev setuptools numpy scipy ipython "notebook<5.0" "ipywidgets<5.0" cython pytest theano sympy matplotlib version_information
$ source activate pydy-dev
(pydy-dev)$ git clone git@github.com:pydy/pydy.git
(pydy-dev)$ cd pydy
(pydy-dev)$ conda develop .
The full Python test suite can be run with::
(pydy-dev)$ pytest pydy/
For the JavaScript tests the Jasmine and blanket.js libraries are used. Both
of these libraries are included in pydy.viz with the source. To run the
JavaScript tests::
cd pydy/viz/static/js/tests && phantomjs run-jasmine.js SpecRunner.html && cd ../../../../../
Benchmark
=========
Run the benchmark to test the n-link pendulum problem with the various backends::
$ python bin/benchmark_pydy_code_gen.py <max # of links> <# of time steps> <duration>
Citation
========
If you make use of PyDy in your work or research, please cite us in your
publications or on the web. This citation can be used:
Gilbert Gede, Dale L Peterson, Angadh S Nanjangud, Jason K Moore, and Mont
Hubbard, "Constrained Multibody Dynamics With Python: From Symbolic Equation
Generation to Publication", ASME 2013 International Design Engineering
Technical Conferences and Computers and Information in Engineering
Conference, 2013, `10.1115/DETC2013-13470
<http://dx.doi.org/10.1115/DETC2013-13470>`_.
Questions, Bugs, Feature Requests
=================================
If you have any question about installation, usage, etc, feel free send a
message to our public `mailing list`_.
.. _mailing list: http://groups.google.com/group/pydy
If you think there’s a bug or you would like to request a feature, please open
an `issue`_ on Github.
.. _issue: https://github.com/pydy/pydy/issues
Related Packages
================
These are various related and similar Python packages:
- https://github.com/cdsousa/sympybotics
- https://pypi.python.org/pypi/ARS
- https://pypi.python.org/pypi/Hamilton
- https://pypi.python.org/pypi/PyODE
- https://pypi.python.org/pypi/arboris
- https://pypi.python.org/pypi/odeViz
- https://pypi.python.org/pypi/pymunk
Raw data
{
"_id": null,
"home_page": "http://pydy.org",
"name": "pydy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "multibody dynamics",
"author": "PyDy Authors",
"author_email": "pydy@googlegroups.com",
"download_url": "https://files.pythonhosted.org/packages/31/a1/9652a151e9eb90738408626cf97265bf7502262fc58de1a55fa7fd937a34/pydy-0.8.0.tar.gz",
"platform": null,
"description": "====\nPyDy\n====\n\n|pypi| |anaconda| |rtd-docs| |github-build|\n\n.. |pypi| image:: https://img.shields.io/pypi/v/pydy.svg\n :target: https://pypi.python.org/pypi/pydy\n :alt: Latest Released Version\n\n.. |anaconda| image:: https://anaconda.org/conda-forge/pydy/badges/version.svg\n :target: https://anaconda.org/conda-forge/pydy\n\n.. |rtd-docs| image:: https://readthedocs.org/projects/pydy/badge/?version=stable\n :target: https://pydy.readthedocs.io/en/stable/?badge=stable\n :alt: Documentation Status\n\n.. |github-build| image:: https://github.com/pydy/pydy/actions/workflows/tests.yml/badge.svg\n :target: https://github.com/pydy/pydy/actions\n\nPyDy_, short for Python Dynamics, is a tool kit written in the Python\nprogramming language that utilizes an array of scientific programs to enable\nthe study of multibody dynamics. The goal is to have a modular framework that\ncan provide the user with their desired workflow, including:\n\n- Model specification\n- Equation of motion generation\n- Simulation\n- Visualization\n- Benchmarking\n- Publication\n\n.. _PyDy: http://pydy.org\n\nWe started by building the SymPy_ `mechanics package`_ which provides an API\nfor building models and generating the symbolic equations of motion for complex\nmultibody systems. More recently we developed two packages, `pydy.codegen` and\n`pydy.viz`, for simulation and visualization of the models, respectively. This\nPython package contains these two packages and other tools for working with\nmathematical models generated from SymPy mechanics. The remaining tools\ncurrently used in the PyDy workflow are popular scientific Python packages such\nas NumPy_, SciPy_, IPython_, Jupyter_, ipywidgets_, pythreejs_, and matplotlib_\nwhich provide additional code for numerical analyses, simulation, and\nvisualization.\n\n.. _SymPy: http://sympy.org\n.. _mechanics package: http://docs.sympy.org/latest/modules/physics/mechanics/index.html\n.. _NumPy: http://numpy.scipy.org\n.. _SciPy: http://www.scipy.org/scipylib/index.html\n.. _IPython: http://ipython.org\n.. _Jupyter: http://jupyter.org\n.. _ipywidgets: https://ipywidgets.readthedocs.io\n.. _pythreejs: https://pythreejs.readthedocs.io\n.. _matplotlib: http://matplotlib.org\n\nInstallation\n============\n\nWe recommend the conda_ package manager and the Anaconda_ or Miniconda_\ndistributions for easy cross platform installation.\n\n.. _conda: http://conda.pydata.org/\n.. _Anaconda: http://docs.continuum.io/anaconda/\n.. _Miniconda: https://docs.conda.io/en/latest/miniconda.html\n\nOnce Anaconda (or Miniconda) is installed type::\n\n $ conda install -c conda-forge pydy\n\nAlso, a simple way to install all of the optional dependencies is to install\nthe ``pydy-optional`` metapackage using conda::\n\n $ conda install -c conda-forge pydy-optional\n\nNote that ``pydy-optional`` currently enforces the use of Jupyter 4.0, so you\nmay not want to install into your root environment. Create a new environment\nfor working with PyDy examples that use the embedded Jupyter visualizations::\n\n $ conda create -n pydy -c conda-forge pydy-optional\n $ conda activate pydy\n (pydy)$ python -c \"import pydy; print(pydy.__version__)\"\n\nOther installation options\n--------------------------\n\nIf you have the pip package manager installed you can type::\n\n $ pip install pydy\n\nInstalling from source is also supported. The latest stable version of the\npackage can be downloaded from PyPi\\ [#]_::\n\n $ wget https://pypi.python.org/packages/source/p/pydy/pydy-X.X.X.tar.gz\n\n.. [#] Change ``X.X.X`` to the latest version number.\n\nand extracted and installed\\ [#]_::\n\n $ tar -zxvf pydy-X.X.X.tar.gz\n $ cd pydy-X.X.X\n $ python setup.py install\n\n.. [#] For system wide installs you may need root permissions (perhaps prepend\n commands with ``sudo``).\n\nDependencies\n------------\n\nPyDy has hard dependencies on the following software\\ [#]_:\n\n.. [#] We only test PyDy with these minimum dependencies; these module versions\n are provided in the Ubuntu 22.04 packages. Previous versions may work.\n\n- Python >= 3.9\n- setuptools >= 44.1.1\n- packaging >= 21.3\n- NumPy_ >= 1.21.5\n- SciPy_ >= 1.8.0\n- SymPy_ >= 1.9\n- PyWin32 >= 303 (Windows Only)\n\nPyDy has optional dependencies for extended code generation on:\n\n- Cython_ >= 0.29.28\n- Theano_ >= 1.0.5\n\nand animated visualizations with ``Scene.display_jupyter()`` on:\n\n- `Jupyter Notebook`_ >= 6.0.0 or `Jupyter Lab` >= 1.0.0\n- ipywidgets_ >= 6.0.0\n- pythreejs_ >= 2.1.1\n\nor interactive animated visualizations with ``Scene.display_ipython()`` on:\n\n- 4.0.0 <= `Jupyter Notebook`_ < 5.0.0\n- 4.0.0 <= ipywidgets_ < 5.0.0\n\n.. _Cython: http://cython.org/\n.. _Theano: http://deeplearning.net/software/theano/\n.. _Jupyter Notebook: https://jupyter-notebook.readthedocs.io\n.. _Jupyter Lab: https://jupyterlab.readthedocs.io\n\nThe examples may require these dependencies:\n\n- matplotlib_ >= 3.5.1\n- version_information_\n\n.. _version_information: https://pypi.python.org/pypi/version_information\n\nUsage\n=====\n\nThis is an example of a simple one degree of freedom system: a mass under the\ninfluence of a spring, damper, gravity and an external force::\n\n\n / / / / / / / / /\n -----------------\n | | | | g\n \\ | | | V\n k / --- c |\n | | | x, v\n -------- V\n | m | -----\n --------\n | F\n V\n\nDerive the system:\n\n.. code:: python\n\n from sympy import symbols\n import sympy.physics.mechanics as me\n\n mass, stiffness, damping, gravity = symbols('m, k, c, g')\n\n position, speed = me.dynamicsymbols('x v')\n positiond = me.dynamicsymbols('x', 1)\n force = me.dynamicsymbols('F')\n\n ceiling = me.ReferenceFrame('N')\n\n origin = me.Point('origin')\n origin.set_vel(ceiling, 0)\n\n center = origin.locatenew('center', position * ceiling.x)\n center.set_vel(ceiling, speed * ceiling.x)\n\n block = me.Particle('block', center, mass)\n\n kinematic_equations = [speed - positiond]\n\n force_magnitude = mass * gravity - stiffness * position - damping * speed + force\n forces = [(center, force_magnitude * ceiling.x)]\n\n particles = [block]\n\n kane = me.KanesMethod(ceiling, q_ind=[position], u_ind=[speed],\n kd_eqs=kinematic_equations)\n kane.kanes_equations(particles, loads=forces)\n\nCreate a system to manage integration and specify numerical values for the\nconstants and specified quantities. Here, we specify sinusoidal forcing:\n\n.. code:: python\n\n from numpy import array, linspace, sin\n from pydy.system import System\n\n sys = System(kane,\n constants={mass: 1.0, stiffness: 10.0,\n damping: 0.4, gravity: 9.8},\n specifieds={force: lambda x, t: sin(t)},\n initial_conditions={position: 0.1, speed: -1.0},\n times=linspace(0.0, 10.0, 1000))\n\nIntegrate the equations of motion to get the state trajectories:\n\n.. code:: python\n\n y = sys.integrate()\n\nPlot the results:\n\n.. code:: python\n\n import matplotlib.pyplot as plt\n\n plt.plot(sys.times, y)\n plt.legend((str(position), str(speed)))\n plt.xlabel('Time [s]')\n plt.show()\n\n.. image:: readme-msd-result.png\n\nDocumentation\n=============\n\nThe documentation for this package is hosted at http://pydy.readthedocs.org but\nyou can also build them from source using the following instructions.\n\nTo build the documentation you must install the dependencies:\n\n- Sphinx_\n- numpydoc_\n- jupyter-sphinx_\n\n.. _Sphinx: http://sphinx-doc.org/\n.. _numpydoc: https://pypi.python.org/pypi/numpydoc\n.. _jupyter-sphinx: https://jupyter-sphinx.readthedocs.io/\n\nTo build the HTML docs, run Make from within the ``docs`` directory::\n\n $ cd docs\n $ make html\n\nYou can then view the documentation from your preferred web browser, for\nexample::\n\n $ firefox _build/html/index.html\n\nModules and Packages\n====================\n\nCode Generation (codegen)\n-------------------------\n\nThis package provides code generation facilities. It generates functions that\ncan numerically evaluate the right hand side of the ordinary differential\nequations generated with sympy.physics.mechanics_ with three different\nbackends: SymPy's lambdify_, Theano, and Cython.\n\n.. _sympy.physics.mechanics: http://docs.sympy.org/latest/modules/physics/mechanics\n.. _lambdify: http://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify\n\nModels (models.py)\n------------------\n\nThe models module provides some canned models of classic systems.\n\nSystems (system.py)\n-------------------\n\nThe System module provides a ``System`` class to manage simulation of a single\nsystem.\n\nVisualization (viz)\n-------------------\n\nThis package provides tools to create 3D animated visualizations of the\nsystems. The visualizations utilize WebGL and run in a web browser. They can\nalso be embedded into an IPython notebook for added interactivity.\n\nDevelopment Environment\n=======================\n\nThe source code is managed with the Git version control system. To get the\nlatest development version and access to the full repository, clone the\nrepository from Github with::\n\n $ git clone https://github.com/pydy/pydy.git\n\nYou should then install the dependencies for running the tests:\n\n- pytest\n- phantomjs_: 1.9.0\n\n.. _phantomjs: http://phantomjs.org\n\nIsolated Environments\n---------------------\n\nIt is typically advantageous to setup a virtual environment to isolate the\ndevelopment code from other versions on your system. There are two popular\nenvironment managers that work well with Python packages: virtualenv and\nconda_.\n\nThe following installation assumes you have virtualenvwrapper_ in addition to\nvirtualenv and all the dependencies needed to build the various packages::\n\n $ mkvirtualenv pydy-dev\n (pydy-dev)$ pip install numpy scipy cython pytest theano sympy ipython \"notebook<5.0\" \"ipywidgets<5.0\" version_information\n (pydy-dev)$ pip install matplotlib # make sure to do this after numpy\n (pydy-dev)$ git clone git@github.com:pydy/pydy.git\n (pydy-dev)$ cd pydy\n (pydy-dev)$ python setup.py develop\n\n.. _virtualenvwrapper: https://pypi.python.org/pypi/virtualenvwrappe://pypi.python.org/pypi/virtualenvwrapper\n\nOr with conda_::\n\n $ conda create -c pydy -n pydy-dev setuptools numpy scipy ipython \"notebook<5.0\" \"ipywidgets<5.0\" cython pytest theano sympy matplotlib version_information\n $ source activate pydy-dev\n (pydy-dev)$ git clone git@github.com:pydy/pydy.git\n (pydy-dev)$ cd pydy\n (pydy-dev)$ conda develop .\n\nThe full Python test suite can be run with::\n\n (pydy-dev)$ pytest pydy/\n\nFor the JavaScript tests the Jasmine and blanket.js libraries are used. Both\nof these libraries are included in pydy.viz with the source. To run the\nJavaScript tests::\n\n cd pydy/viz/static/js/tests && phantomjs run-jasmine.js SpecRunner.html && cd ../../../../../\n\nBenchmark\n=========\n\nRun the benchmark to test the n-link pendulum problem with the various backends::\n\n $ python bin/benchmark_pydy_code_gen.py <max # of links> <# of time steps> <duration>\n\nCitation\n========\n\nIf you make use of PyDy in your work or research, please cite us in your\npublications or on the web. This citation can be used:\n\n Gilbert Gede, Dale L Peterson, Angadh S Nanjangud, Jason K Moore, and Mont\n Hubbard, \"Constrained Multibody Dynamics With Python: From Symbolic Equation\n Generation to Publication\", ASME 2013 International Design Engineering\n Technical Conferences and Computers and Information in Engineering\n Conference, 2013, `10.1115/DETC2013-13470\n <http://dx.doi.org/10.1115/DETC2013-13470>`_.\n\nQuestions, Bugs, Feature Requests\n=================================\n\nIf you have any question about installation, usage, etc, feel free send a\nmessage to our public `mailing list`_.\n\n.. _mailing list: http://groups.google.com/group/pydy\n\nIf you think there\u2019s a bug or you would like to request a feature, please open\nan `issue`_ on Github.\n\n.. _issue: https://github.com/pydy/pydy/issues\n\nRelated Packages\n================\n\nThese are various related and similar Python packages:\n\n- https://github.com/cdsousa/sympybotics\n- https://pypi.python.org/pypi/ARS\n- https://pypi.python.org/pypi/Hamilton\n- https://pypi.python.org/pypi/PyODE\n- https://pypi.python.org/pypi/arboris\n- https://pypi.python.org/pypi/odeViz\n- https://pypi.python.org/pypi/pymunk\n",
"bugtrack_url": null,
"license": "LICENSE.txt",
"summary": "Python tool kit for multi-body dynamics.",
"version": "0.8.0",
"project_urls": {
"Homepage": "http://pydy.org"
},
"split_keywords": [
"multibody",
"dynamics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "31a19652a151e9eb90738408626cf97265bf7502262fc58de1a55fa7fd937a34",
"md5": "5f2e7b3d578a9756e6cf1c7e4e7891a4",
"sha256": "1b78aa333cbf5b772dcff7384f72ea6324d33156e5cb518c92630b8bdea6ccc7"
},
"downloads": -1,
"filename": "pydy-0.8.0.tar.gz",
"has_sig": false,
"md5_digest": "5f2e7b3d578a9756e6cf1c7e4e7891a4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6591160,
"upload_time": "2025-08-28T09:47:12",
"upload_time_iso_8601": "2025-08-28T09:47:12.459048Z",
"url": "https://files.pythonhosted.org/packages/31/a1/9652a151e9eb90738408626cf97265bf7502262fc58de1a55fa7fd937a34/pydy-0.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-28 09:47:12",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pydy"
}