https://github.com/hyumo/qFMU
Generate standard form system FMUs through CLI.
https://github.com/hyumo/qFMU
fmi fmi2 fmu modeling python simulation
Last synced: 9 months ago
JSON representation
Generate standard form system FMUs through CLI.
- Host: GitHub
- URL: https://github.com/hyumo/qFMU
- Owner: hyumo
- License: other
- Created: 2021-10-18T05:49:28.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-10-26T05:00:14.000Z (over 2 years ago)
- Last Synced: 2024-11-13T10:37:45.064Z (over 1 year ago)
- Topics: fmi, fmi2, fmu, modeling, python, simulation
- Language: C
- Homepage:
- Size: 1.92 MB
- Stars: 10
- Watchers: 1
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-fmi - qFMU - Generate standard LTI system FMUs through CLI [BSD] (FMI 2 / Libraries)
README
---
**qfmu** is a python package to generate `continuous-time`, `LTI` system FMUs from command line.

## Installation
Install `qfmu` through PyPI
```
pip install qfmu
```
*Noted* that a C compiler is required
- `msvc` for Windows
- `gcc` for Linux
- `clang` for MacOS
## Features
Currently, qfmu is able to generate fmus that are compliant with **FMI2** standard.
The following models are supported:
| Model | ME | CS |
|--------------------------|-----|-----|
| State Space (`ss`) | ✔️ | ✔️ |
| Transfer Function (`tf`) | ✔️ | ✔️ |
| ZeroPoleGain (`zpk`) | ✔️ | ✔️ |
| PID (`pid`) | ✔️ | ✔️ |
*Noted* that only continuous-time models are supported currently.
## Examples
Generate a continuous-time state space FMU
```bash
qfmu ss -A "[[1,2],[3,4]]" -B "[[1],[2]]" -C "[[1,0],[0,1]]" -x0 "[3.14, 6]" -o ./example_ss.fmu
```
If `qfmu` is installed properly, you should see a `example_ss.fmu` file generated in your current working directory.
If you have `fmpy` installed, you can run `fmpy info example_ss.fmu` to see detailed model information.
```
Model Info
FMI Version 2.0
FMI Type Model Exchange, Co-Simulation
Model Name q
Description None
Platforms c-code, linux64
Continuous States 2
Event Indicators 0
Variables 10
Generation Tool qfmu
Generation Date 2023-10-08 21:24:32.733857
Default Experiment
Stop Time 1.0
Tolerance 0.0001
Variables (input, output)
Name Causality Start Value Unit Description
u1 input 0.0 Model input 1
y1 output Model output 1
y2 output Model output 2
```
Generate a continuous-time transfer function FMU using the `numerator`, `denominator` representation: $\frac{s}{s+1}$
```bash
qfmu tf --num "[1]" --den "[1,1]" -o ./example_tf.fmu
```
Generate a continuous-time transfer function FMU using the `zero-pole-gain` representation: $\frac{0.5(s-1)}{(s+1)(s+2)}$
```bash
qfmu zpk -z "[1]" -p "[-1, -2]" -k 0.5 -o ./example_zpk.fmu
```
Generate a continuous-time PI controller FMU: $3 + \frac{0.1}{s}$
```bash
qfmu pid --kp=3.0 --ki=0.1 -o ./example_pid.fmu
```