Co-simulation with SIMO

Analysing complex physics sometimes require coupling of multiple numerical models to realistically represent the effects one wishes to study.

The term co-simulation refers to a simulation technique in which subsystems only exchange data at discrete communication points (also called synchronisation points) [39]. Between communication points, each subsystem is simulated independently using its own solver. The time between two communication points is sometimes called a macro time step to contrast it with the subsystems’ internal time steps, which are usually significantly shorter. The program that keeps the subsystems synchronised in time and takes care of routing data between them is variously called the co-simulation master or run-time infrastructure.

Co-simulation has many advantages, most of which stem from the fact that it only requires the subsystems to support a very simple, opaque interface consisting of the following operations; set input values, advance the simulation a macro time step, and retrieve output values. Most simulation tools and methods can be adapted to such an interface. This enables the use of tools, solvers and internal step sizes that are tailored to each subsystem, which is especially useful in simulations that span multiple domains of physics.

SIMO supports running as a subsystem in a co-simulation using the Functional Mockup Interface (FMI) standard - https://fmi-standard.org/. All subsystems in an FMI co-simulation are packaged in so-called Functional Mockup Units (FMUs). An FMU is a complete package with the required runtime libraries and input files required to run a simulation with the simulation tool. To create an FMU of a SIMO model, right click on the task, choose export and then SIMO Functional Mockup Unit (FMU).

simo fmu export
Figure 1. SIMO FMU export wizard

The FMU export wizard will create the unit in a file with suffix .fmu. The .fmu-file is a ZIP package which, among others, contain a file named modelDescription.xml. This file contains a list of the available inputs and outputs for the FMU along with a description of each value.

After the FMU has been created it can be run in a co-simulation. For this, a co-simulation master that supports FMI is required. The Open Simulation Platform cosim is one freely available co-simulation master. For more information see https://open-simulation-platform.github.io/cosim.

The following components in a SIMO model currently support receiving input in a co-simulation:

  • Thrusters: Demanded direction (for rotatable thrusters) and demanded rps

  • Winches: Demanded winch run speed (paying in or out wire)