Inferensys

Glossary

Functional Mock-up Interface (FMI)

An open standard for exchanging dynamic simulation models between different modeling tools, enabling tool-independent co-simulation and model exchange through a packaged Functional Mock-up Unit.
Developer demonstrating multi-agent tool use, agent tool selection interface on laptop, casual tech demo moment.
MODEL EXCHANGE STANDARD

What is Functional Mock-up Interface (FMI)?

An open standard for exchanging dynamic simulation models between different modeling tools, enabling tool-independent co-simulation and model exchange through a packaged Functional Mock-up Unit.

The Functional Mock-up Interface (FMI) is a tool-independent standard for the exchange of dynamic models and for co-simulation. It defines a containerized artifact called a Functional Mock-up Unit (FMU)—a ZIP file containing an XML model description and compiled C code or binaries—that encapsulates a system’s differential, algebraic, and discrete equations. This allows a model created in one simulation environment to be seamlessly imported and executed in another without exposing proprietary intellectual property.

FMI supports two primary interface types: Model Exchange, where the importing solver handles numerical integration, and Co-Simulation, where the FMU includes its own embedded solver. By decoupling model authoring from execution, FMI enables heterogeneous system simulation across the digital twin lifecycle, from virtual commissioning and hardware-in-the-loop (HIL) testing to model predictive control (MPC) deployment, establishing a vendor-neutral backbone for software-defined manufacturing automation.

INTEROPERABILITY FOUNDATIONS

Core Characteristics of the FMI Standard

The Functional Mock-up Interface (FMI) is defined by a set of core architectural characteristics that enable tool-independent model exchange and co-simulation. These principles ensure that dynamic models can be shared across the entire engineering supply chain without exposing proprietary intellectual property.

01

Functional Mock-up Unit (FMU)

An FMU is a self-contained, compressed ZIP file that packages a dynamic simulation model along with all necessary metadata and binaries. It is the atomic unit of exchange in the FMI ecosystem.

  • Structure: Contains an XML model description file, compiled C code binaries for target platforms, and optional documentation and resources
  • Self-Description: The XML file declares all variables, parameters, inputs, outputs, and the model's mathematical capabilities
  • Platform Portability: A single FMU can include binaries for multiple operating systems and architectures (win64, linux64, darwin64)
  • IP Protection: The model is distributed as compiled binaries, allowing suppliers to share high-fidelity models without revealing proprietary source code or internal equations
02

Model Exchange (FMI-ME)

Model Exchange enables a simulation environment to import and solve a model's equations using its own numerical solvers. The importing tool takes full control of the integration algorithm.

  • Mechanism: The FMU exposes a set of differential algebraic equations (DAEs) through a standardized C interface
  • Solver Responsibility: The host simulator provides the ODE/DAE solver, calling the FMU's functions to compute derivatives and outputs at each time step
  • Efficiency: Eliminates redundant solver overhead when multiple models are integrated into a single simulation environment
  • Use Case: Ideal when a tool vendor wants to leverage their own optimized, proprietary solvers for a specific domain like multi-body dynamics or circuit simulation
03

Co-Simulation (FMI-CS)

Co-Simulation allows each FMU to contain its own embedded solver, enabling the coupling of models from different domains where each subsystem advances in time independently and exchanges data only at discrete communication points.

  • Solver Encapsulation: Each FMU is a black-box solver that advances its internal state from one communication point to the next
  • Master Algorithm: A co-simulation master orchestrates the data exchange and time synchronization between all coupled FMUs
  • Variable-Step Support: FMUs can signal the master to reject a step and retry with a smaller step size, enabling robust handling of events and stiff dynamics
  • Use Case: Essential for coupling a mechanical multi-body tool with a hydraulic circuit simulator where each domain requires fundamentally different solver strategies
04

Model Description XML

Every FMU contains a mandatory modelDescription.xml file that serves as a machine-readable manifest, declaring the model's interface, capabilities, and structural metadata without executing any code.

  • Variable Catalog: Declares all scalar variables with attributes like name, causality (input, output, parameter, local), variability (constant, fixed, tunable, discrete, continuous), and initial value
  • Unit Definitions: Specifies physical units for all variables, enabling automatic unit checking and conversion by the importing tool
  • Capability Flags: Boolean flags declare optional features like canGetAndSetFMUstate, canSerializeFMUstate, and providesDirectionalDerivative
  • Structure: Groups variables into logical model structure sections for outputs, derivatives, and event indicators, aiding tools in generating efficient simulation code
05

State Serialization & Resumption

FMI supports saving and restoring the complete internal state of an FMU, enabling advanced simulation workflows like checkpointing, rollback, and iterative co-simulation algorithms.

  • FMU State Object: An opaque binary blob that captures the entire internal state vector, including solver memory and event history
  • Serialization: The serializeFMUstate function converts the state object into a byte stream that can be persisted to disk or transmitted over a network
  • Use Cases: Enables long-running simulations to be paused and resumed, supports Monte Carlo branching from a common checkpoint, and allows co-simulation masters to implement sophisticated step rejection and retry logic
  • Deterministic Restart: A deserialized FMU must produce bitwise-identical results when resumed, a critical requirement for debugging and verification
06

Directional & Adjoint Derivatives

Advanced FMUs can optionally expose directional derivatives and adjoint derivatives, enabling gradient-based optimization and sensitivity analysis directly within the importing tool.

  • Directional Derivatives: Compute the directional derivative of outputs with respect to inputs or states, essential for Newton-type solvers and parameter estimation
  • Adjoint Derivatives: Provide the reverse-mode derivative, enabling efficient gradient computation for models with many inputs and few outputs, critical for gradient-based optimization and machine learning integration
  • Performance: By exposing analytical derivatives, FMUs eliminate the need for slow and inaccurate finite-difference approximations
  • Use Case: Enables a digital twin to be used directly inside a Model Predictive Control (MPC) optimizer that requires Jacobian matrices at every time step
FMI STANDARD

Frequently Asked Questions

Clear answers to the most common technical questions about the Functional Mock-up Interface standard for model exchange and co-simulation.

The Functional Mock-up Interface (FMI) is an open, tool-independent standard for exchanging and co-simulating dynamic simulation models between different modeling and simulation environments. It works by packaging a model's equations, solver, and metadata into a single compressed file called a Functional Mock-up Unit (FMU)—a ZIP archive containing an XML model description file and compiled C code or binaries. The standard defines two primary interfaces: FMI for Model Exchange, where the importing tool provides the numerical solver and the FMU supplies the differential equations, and FMI for Co-Simulation, where the FMU includes its own embedded solver and the importing tool orchestrates data exchange at discrete communication points. This decoupling of model logic from tool-specific formats enables engineers to integrate a controller model built in Simulink with a plant model from Dymola without manual code translation, dramatically reducing integration errors and development time in model-based systems engineering workflows.

Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.