Skip to content

FMI import compatibility

PINNeAPPle imports FMUs to generate training and validation data for Physics AI models (pinneapple_simulation.external_solvers.modelica: simulate_fmu, fmu_to_upd, sweeps). This page lists the FMUs that import has been tested with. It is generated by examples/modelica/fmi_compatibility.py, which runs every FMU through simulate_fmu in each interface it offers (check_fmus in fmi_compat.py).

Importing tool

  • PINNeAPPle with fmpy 0.3.32, Python 3.11.15, platform x86_64-linux, run on 2026-10-16.
  • CS = Co-Simulation, ME = Model Exchange.
  • A run passes when it reaches the stop time of the FMU's default experiment with finite outputs. For Dahlquist (x' = -k x) the trajectory is also compared with exp(-k t): within 1e-3 through Model Exchange and within 0.1 through Co-Simulation, where the FMU integrates with its own fixed-step explicit Euler.
  • Result: 38 of 38 runs passed.

Exporting tools

Reference-FMUs 0.0.39, FMI 1.0

FMU x86_64-linux
BouncingBall CS, ME
Dahlquist CS, ME
Feedthrough CS, ME
Resource CS
Stair CS, ME
VanDerPol CS, ME

Reference-FMUs 0.0.39, FMI 2.0

FMU x86_64-linux
BouncingBall CS, ME
Dahlquist CS, ME
Feedthrough CS, ME
Resource CS, ME
Stair CS, ME
VanDerPol CS, ME

Reference-FMUs 0.0.39, FMI 3.0

FMU x86_64-linux
BouncingBall CS, ME
Dahlquist CS, ME
Feedthrough CS, ME
Resource CS, ME
Stair CS, ME
StateSpace CS, ME
VanDerPol CS, ME

pythonfmu 0.7.0, FMI 2.0

FMU x86_64-linux
Oscillator CS

Measured errors:

  • FMI 1.0 Dahlquist (CS): max error 7.7e-02 against exp(-k t)
  • FMI 1.0 Dahlquist (ME): max error 6.0e-05 against exp(-k t)
  • FMI 2.0 Dahlquist (CS): max error 1.9e-02 against exp(-k t)
  • FMI 2.0 Dahlquist (ME): max error 6.0e-05 against exp(-k t)
  • FMI 3.0 Dahlquist (CS): max error 1.9e-02 against exp(-k t)
  • FMI 3.0 Dahlquist (ME): max error 6.0e-05 against exp(-k t)

Not tested: Clocks (FMI 3.0, Scheduled Execution only), and the Windows and macOS binaries.