What is the Functional Mock-up Interface (FMI)? FMI is an open standard for exchanging dynamical simulation models between different tools in a standardized format. 

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 applications and within tools that better match their needs, skills, and preferences. 

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

WHAT IS AN FMU OR FUNCTIONAL MOCK-UP UNIT? 

What does FMU stand for? It stands for: Functional Mock-up Unit, a file (with extension.fmu) that contains a simulation model that adheres to the FMI standard. 

The FMI standard specifies two different kinds of FMUs: 

  1. Model Exchange (ME) – 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. 
  2. Co-Simulation (CS) – 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! Click here for a full list of FMI-compliant tools.