What is FMI?

New to the FMI standard? Learn the basics here. 


What is FMI?

FMI stands for Functional Mock-up Interface. It is an open standard for exchanging dynamical simulation models between different tools in a standardized format.

Why FMI?

The value of model-based development and investment in a simulation model portfolio increases tremendously when the models can be reused in different contexts.

The FMI standard specifies an open format for exporting and importing simulation models. This means that you can select the tool best suited for each type of analysis while keeping the same model. You can also share your model with colleagues who can reuse it for other purposes, using tools that match their needs, skills, and preferences.

What is an FMU?

An FMU (Functional Mock-up Unit) is a file (with extension .fmu) that contains a simulation model that adheres to the FMI standard.

ME and CS, what is that?

The FMI standard specifies two different kinds of FMUs: Model Exchange (ME) and Co-Simulation (CS).

ME FMUs represent the dynamical systems by differential equations. To simulate the system, the importing tool needs to connect the FMU to a numerical solver. The solver sets the FMU internal state, asks for the state derivatives, and determines the step size and how to compute the state at the next time step. 

CS FMUs contain their own numerical solver. The importing tool sets the FMU inputs, asks the FMU to step forward a given time, and reads the FMU output after the step is completed.

FMI 1.0/2.0, what is the difference?

Version 1.0 of the standard was released in 2010. It includes all the basic FMU concepts such as ME and CS FMUs. Version 2.0 was released in 2014. It adds some functionality such as support for directional derivatives, and clarifies some ambiguities in the 1.0 standard.

Note that not all tools support both versions. For new applications, it is recommended to primarily use 2.0 since this will be the most wide-spread in the future.

What about binary and source code FMUs?

An FMU file is a zip file that can be opened with a standard zip tool. Normally, the user does not need to know about this since the importing tool will do this behind the scenes before simulation.

The zip file contains an XML file that defines the model structure (variable names, parameters, inputs, outputs, etc.), and at least one implementation of the functions specified in the FMI standard. Most commonly, this takes the form of a binary such as a Windows dll. Binary files can only be run on the platform they are compiled for. Therefore, most FMUs are restricted to run on a single platform such as Windows 64-bit or Linux 32-bit.

The FMU may contain binaries for multiple platforms, or source code so that it can be compiled to a target platform by the user. This is less common, so if you need this functionality make sure to check specifically if your tools support it.

Does my tool support FMI?

Probably! Check here for a full list of tools that support the standard. Modelon provides off-the-shelf FMI solutions for MATLAB/Simulink, Microsoft Excel, Python, C, C , .NET. 

Are you a tool vendor that currently does not support FMI? Do you need FMI support in your in-house tool chain? Modelon has ample experience in implementing FMI solutions, please contact us to learn more how we can help.

Want to learn more?

  • Next step: check out our one-day FMI course! Find a scheduled training session or talk to us about giving it on-site for your whole team.
  • Browse here a presentation on FMI.
  • Interested in the nitty-gritty? Read the full standard here

Maria Henningsson is a simulation consultant at Modelon working on modeling of thermofluid systems and integration of simulation models into CAE tool chains. She has an MSc in engineering mathematics and a PhD in combustion engine control, both from Lund University. 

by Maria Henningsson