PyFMI
PyFMI is a package for loading and interacting with Functional Mock-Up Units (FMUs) both for Model Exchange and Co-Simulation, which are compiled dynamic models compliant with the Functional Mock-Up Interface (FMI)
Install / Use
/learn @modelon-community/PyFMIREADME
About
PyFMI is a package for loading and interacting with Functional Mock-Up Units (FMUs) both for Model Exchange and Co-Simulation, which are compiled dynamic models compliant with the Functional Mock-Up Interface (FMI).
For a more indebt technical description of the features / functionality see the following link.
For citing PyFMI, please use:
<em>Andersson, C, Åkesson, J & Führer, C 2016, PyFMI: A Python Package for Simulation of Coupled Dynamic Models with the Functional Mock-up Interface. Technical Report in Mathematical Sciences, nr. 2, vol. 2016, vol. LUTFNA-5008-2016, Centre for Mathematical Sciences, Lund University</em>.
Contributing
For information about contributing, see https://github.com/modelon-community/contributing.
Installation from source
PyFMI can be built and installed from source, note this requires FMI library. Additional details are found in the file setup.py.
python setup.py install --fmil-home=/path/to/FMI_Library/
Here the flag "--fmil-home" points to where FMI Library is installed. The Python package Assimulo needs to be installed in order to build from source.
Installation using CONDA
conda install -c conda-forge pyfmi
Note that some examples requires optional dependencies for plotting, they are:
- wxPython
- matplotlib
FMU Import Compliance
PyFMI is tested daily in several different ways:
- Extensive external testing within the
Optimica Compiler Toolkit(OCT) provided by Modelon using all models in Modelon Modelica libraries (7000+ models), exported as FMUs. - Unit tests from the
testsdirectory. These use FMUs generated by- OCT
- FMUs in the example directory are generated via <em>FMU SDK by Qtronic</em>, more information is available in related
README.txtfor these FMUs with proper license text.
- PyFMI is the default execution engine for Modelon Impact.
- Testing with FMUs from FMI Cross Check and commit 55c6704:
- All the
win64Dymola FMUs have been tested with PyFMI2.11.0and pass with default options. - On
Ubuntu 20.04usingPython 3.9,PyFMI 2.11.0, the following FMUs pass (95 out of 116):- fmus/2.0/me/linux64/MapleSim/2015.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2015.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2015.1/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2015.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2015.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2015.2/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2016.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2016.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2016.1/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2016.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2016.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2016.2/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2018/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2018/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2018/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2019/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2019/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2019/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2021.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2021.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2021.1/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/2021.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/MapleSim/2021.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/MapleSim/2021.2/Rectifier/Rectifier.fmu
- fmus/2.0/me/linux64/MapleSim/7.01/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/solidThinking_Activate/2020/ActivateRC/ActivateRC.fmu
- fmus/2.0/me/linux64/solidThinking_Activate/2020/Arenstorf/Arenstorf.fmu
- fmus/2.0/me/linux64/solidThinking_Activate/2020/Boocwen/Boocwen.fmu
- fmus/2.0/me/linux64/solidThinking_Activate/2020/CVloop/CVloop.fmu (simulated with
Radau5ODEinstead ofCVode) - fmus/2.0/me/linux64/solidThinking_Activate/2020/Pendulum/Pendulum.fmu
- fmus/2.0/me/linux64/SystemModeler/5.0/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/me/linux64/SystemModeler/5.0/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/BouncingBall/BouncingBall.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/Dahlquist/Dahlquist.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/Feedthrough/Feedthrough.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/Resource/Resource.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/Stair/Stair.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.1/VanDerPol/VanDerPol.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/BouncingBall/BouncingBall.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/Dahlquist/Dahlquist.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/Feedthrough/Feedthrough.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/Resource/Resource.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/Stair/Stair.fmu
- fmus/2.0/me/linux64/Test-FMUs/0.0.2/VanDerPol/VanDerPol.fmu
- fmus/2.0/cs/linux64/20sim/4.6.4.8004/TorsionBar/TorsionBar.fmu
- fmus/2.0/cs/linux64/EDALab_HIFSuite/2017.05_antlia/b01/b01.fmu
- fmus/2.0/cs/linux64/EDALab_HIFSuite/2017.05_antlia/des56_original/des56_original.fmu
- fmus/2.0/cs/linux64/EDALab_HIFSuite/2017.05_antlia/m6502/m6502.fmu
- fmus/2.0/cs/linux64/EDALab_HIFSuite/2017.05_antlia/uart/uart.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.1/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2015.2/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.1/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2016.2/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2018/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2018/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2018/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2019/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2019/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2019/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.1/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.1/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.1/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.2/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.2/CoupledClutches/CoupledClutches.fmu
- fmus/2.0/cs/linux64/MapleSim/2021.2/Rectifier/Rectifier.fmu
- fmus/2.0/cs/linux64/MapleSim/7.01/ControlledTemperature/ControlledTemperature.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/ActivateRC/ActivateRC.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/Arenstorf/Arenstorf.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/Boocwen/Boocwen.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/CVloop/CVloop.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/DiscreteController/DiscreteController.fmu
- fmus/2.0/cs/linux64/solidThinking_Activate/2020/Pendulum/Pendulum.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/BouncingBall/BouncingBall.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/Dahlquist/Dahlquist.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/Feedthrough/Feedthrough.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/Resource/Resource.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/Stair/Stair.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.1/VanDerPol/VanDerPol.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/BouncingBall/BouncingBall.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/Dahlquist/Dahlquist.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/Feedthrough/Feedthrough.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/Resource/Resource.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/Stair/Stair.fmu
- fmus/2.0/cs/linux64/Test-FMUs/0.0.2/VanDerPol/VanDerPol.fmu
- fmus/2.0/cs/linux64/YAKINDU_Statechart_Tools/4.0.4/BouncingBall/BouncingBall.fmu
- fmus/2.0/cs/linux64/YAKINDU_Statechart_Tools/4.0.4/Feedthrough/Feedthrough.fmu
- fmus/2.0/cs/linux64/YAKINDU_Statechart_Tools/4.0.4/Stairs/Stairs.fmu
- Those that does not pass are believed to fail due to:
- Linux compliance issues.
- AMESim FMUs fail since FMUs that need
- All the
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
