A Python library for simulating Functional Mock-up Units (FMUs) with support for FMI standards and multiple interfaces.
FMPy is a Python library that simulates Functional Mock-up Units (FMUs), which are standardized models used for system simulation across different engineering tools and domains. It enables users to execute, analyze, and interact with FMUs through multiple interfaces including command-line, GUI, and web applications. The library supports the latest FMI standards and provides tools for debugging and integrating FMUs into custom workflows.
Engineers, researchers, and developers working with system simulation, model-based design, or cross-tool integration who need to work with FMUs in Python environments. This includes automotive, aerospace, and industrial automation professionals using FMI-compliant tools.
FMPy provides a comprehensive, free alternative to commercial FMI simulation tools with full support for multiple FMI versions and execution modes. Its multi-interface approach (CLI, GUI, web) and Jupyter Notebook integration make it uniquely flexible for different workflow requirements while maintaining cross-platform compatibility.
Simulate Functional Mock-up Units (FMUs) in Python
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports FMI 1.0, 2.0, and 3.0 for both Co-Simulation and Model Exchange, as directly stated in the README, ensuring compatibility with a wide range of exported models.
Provides command-line tools, a GUI, and a web app, allowing users to choose the workflow best suited to their needs, as demonstrated with examples like 'fmpy simulate' and the Dash-based web app.
Automatically creates Jupyter Notebooks from FMUs via GUI or command line, enabling interactive analysis and sharing, as shown in the README with the 'fmpy create-jupyter-notebook' command.
Runs consistently on Windows, Linux, and macOS, verified by platform-specific FMU downloads in the examples, facilitating collaboration across diverse engineering teams.
Compiles C code FMUs and generates CMake projects for debugging, offering deep customization and insight into model internals, as highlighted in the README's advanced features.
The recommended 'fmpy[complete]' installation pulls in numerous dependencies, which can complicate setup in lean or restricted environments, as noted in the Installation section.
Exclusively tied to the FMI standard, making it irrelevant for simulations not based on FMUs, thus limiting its applicability outside specific engineering domains like automotive or aerospace.
Advanced usage relies on example scripts like 'coupled_clutches.py' rather than comprehensive API docs, potentially increasing the learning curve for complex customizations.
As a Python library, it may introduce performance latency compared to native C++ FMI tools, especially for large-scale or high-frequency simulations, though it mitigates this with C code compilation.