The FMI++ Python Interface
About
The Functional Mock-up Interface
_ (FMI) specification intentionally provides only the most essential and fundamental functionalities in the form of a C interface.
On the one hand, this increases flexibility in use and portability to virtually any platform.
On the other hand, such a low-level approach implies several prerequisites a simulation tool has to fulfil in order to be able to utilize such an FMI component.
.. _Functional Mock-up Interface: https://fmi-standard.org/
The FMI++ Python Interface
_ is a Python wrapper for the FMI++ Library
_, which intends to bridge the gap between the basic fuctionality provided by the FMI specification and the typical requirements of simulation tools.
The FMI++ Library provides high-level functionalities that ease the handling and manipulation of FMUs, such as numerical integration, advanced event-handling or state predictions.
This allows FMUs to be integrated more easily, e.g., into fixed time step or discrete event simulations.
.. _FMI++ Python Interface: https://pypi.python.org/pypi?:action=display&name=fmipp
.. _FMI++ Library: https://github.com/fmipp
This package provides a stand-alone version of the Python interface for the FMI++ Library
_.
.. _FMI++ Library: https://github.com/fmipp
Documentation
The FMI++ Python Interface provides several classes that allow to manipulate FMUs for ModelExchange and for Co-Simulation.
An overview on how to use it can be found here
_.
.. _here: https://fmipp.readthedocs.io/projects/py-fmipp
More extensive background information can be found in the documentation of the FMI++ Library
_.
.. _FMI++ Library: https://github.com/fmipp
Installation on Windows
--prefer-binary
should guarantee that binary distributions (wheels) are chosen over source distributions for the installation.
Alternatively --only-binary :all:
can be used instead to force installing from binary distribution.
Installation on Linux (Ubuntu 20.04)
-
make sure to have installed the following prerequisites(e.g. via apt
, see package names in brackets below):
- python (python3) (recommended: version 3.7 or higher)
- pip (python3-pip)
- distutils (python3-setuptools)
- GCC compiler toolchain (build-essential)
- swig (swig)
- SUNDIALS library (libsundials-dev)
- Boost library (libboost-all-dev)
-
use pip
to install the FMI++ Python Interface from the PyPI via source distribution::
$ python3 -m pip install fmipp