Here I summarize the good input I have got on how to setup PyFMI on Xubuntu 18.04 with OpenModelica.
The input has come from Christian Winther at Modelon and Adrian Pop at LiU and glad for that.
The installation follows https://jmodelica.org/pyfmi/installation.html with some clarifications.
The OpenModelica is installed in Linux on a VM you get here https://openmodelica.org/download/virtual-machine
It is all 64-bit software what I understand.
It is more convenient to use conda for installation than pip as shown below:
Download Miniconda for Python 3 here https://docs.conda.io/en/latest/miniconda.html
Install Miniconda3 and with that you get Python 3.7 and some packages. Good to update conda by
$conda update conda
Installation of PyFMI is now simply done by the following commands:
$conda config --add channels conda-forge
$conda install pyfmi
During this installation key packages like: NumPy, Scipy, Lxml, Matplotlib are also installed.
According to PyFMIs homepage mentioned above it could be of interest to also have wxpython installed but not necessary. If installed it should be done with conda as well.
We can interact with the FMU through Python script in different ways.
a) Put FMU generated from OpenModelica (or from some other Ubuntu environment) in a folder FMU_test together with some Python script simu_FMU that run the FMU and plot the results.
Go to the folder FMU_test. The following command runs the FMU and plot the results
$python3 simu_FMU.py
b) An interactive framework with the popular Jupyter notebook can be installed by
$conda install ipython
$conda install jupyter
Then to start up the notebook do the following command from the folder FMU_test
$jupyter notebook
And the web-browser opens up you can then run the python scripts from a cell and also directly interact with the FMU and change parameters etc. Several python commands can be done in each cell. The results of the cell is presented in an output cell. The Jupyter notebook focus on a sort of sequential approach to investigating a simulation model. All simulations in a diagram must be executed in one cell.
c) An interactive framework with IPython would also be interesting to have. In this way a more iterative approach to work with simulations could be done. Something like simulate, change some parameters, simulate again AND plot in the same diagram as before.
Using the interactive Python window, starting up with the following command
$ipython --pylab
requires setting of how a text-file should be read by the command “locale"
$import numpy as np
$import matplotlib.pyplot as pli
$from pyfmi import load_fmu
$import locale
$locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’)
$model = load_fmu(”FMU_example.fmu”)
There is a certain flexibility of how a model is represented in the FMU and those produced by OpenModelica contain a text-file of json-type that not all vendors have in their FMUs, and for instance not JModelica.org. And reading this json-file requires the setting made by locale to read it correctly in the IPython-window. Thus NOT needed in the Jupyter notebook environment, but has at least no negative effect there.
In the standard (Windows) JModelica installation of PyFMI the interaction using c) is used. The Python scripts tested so far work exactly the same way in Xubuntu 18.04 when using FMUs compiled by JModelica 2.4 in Ubuntu 18.04. Tests include both PyFMI model.simulate() and model.estimate().
The FMUs compiled by OpenModelica 1.14.1 and also later development versions can be used for simulation using the procedure mode.simulate(). However the interaction with model.get() and model.set() show different behaviour. This may be due to different interpretation of FMU-standard or even errors in the implementation. The people working with development of OpenModelica are aware and investigate it.