Git Product home page Git Product logo

josbert1 / pyfmi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from modelon-community/pyfmi

0.0 0.0 0.0 14.61 MB

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)

Home Page: http://jmodelica.org/pyfmi

License: GNU Lesser General Public License v3.0

Python 100.00%

pyfmi's Introduction

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:

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.

For information about contributing, see here.

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 (35000+ models), exported as FMUs.
  • Unit tests from the tests directory. These use FMUs generated by
    • OCT
    • JModelica.org
    • FMUs in the example directory are generated via FMU SDK by Qtronic, more information is available in related README.txt for 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 win64 Dymola FMUs have been tested with PyFMI 2.11.0 and pass with default options.
    • On Ubuntu 20.04 using Python 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 Radau5ODE instead of CVode)
      • 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 an execution tool are not supported.
  • Reference FMUs
    • All FMUs pass on both win64 and linux64 (tested on Ubuntu 20.04).

pyfmi's People

Contributors

chria avatar modelonrobinandersson avatar christian-winther avatar agnesramle avatar petermeisrimelmodelon avatar teonilsson avatar jschueller avatar modelonandrijakukolj avatar efredriksson-modelon avatar jakesson-modelon avatar jespermattsson avatar filip-stenstrom avatar toivoh avatar jonathankampemodelon avatar thorade avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.