What is co-simulation?

Co-operative simulation (co-simulation) is when two or more softwares are co-operating in executing a simulation. This can be beneficial to use if you need features from several different softwares. The participating softwares are called “slaves”, and the software that manages the slaves is called “master”. The Master usually starts/stops the slaves and handles communication in between them. The co-simulation algorithms can be categorized by using either loose and strong coupling. Loose coupling may be preferred when the dynamics is smooth enough. For stiff dynamics, strong coupling is to prefer. The term “coupling” is there because we are trying to couple variables over the software boundaries.

Co-simulation of two vehicles, where two slaves (softwares) are coupled, handling one vehicle each. In this case, the coupling is by the distance between the vehicles. This may be realized either by penalty force (soft or stiff) or by a distance constraint (stiff). In this case the coupling affects both the relative accelerations, velocities and positions of the vehicles handled by each software.

Loose coupling

A number of co-simulation algorithms have been investigated, for strong coupling and loose coupling of co-simulation slaves. Among the loose coupling algorithms were Jacobi, Gauss-Seidel, and Transmission Line Modelling (TLM).

Co-simulation of mass-spring systems using naive Gauss-Seidel coupling.
Rotating cylinders with angle coupled using Transmission line modelling. TLM is limited to velocity constraints, and therefore the constraint violation will drift. Two coupled cylinders works well, but ten serially coupled fails.

Strong coupling

A co-simulation master algorithm for strong coupling of mechanical subsystems have been developed, see the Simovate Platform. Using full parallelism, the number of slave solves needed for the coupling of two systems is linear with the number of coupled variables.

Co-simulation of a finite element beam (using Crank Nicolson time integration) coupled with a rigid body pendulum (semi-implicit Euler).
Execution of a slave and master during a co-simulation step. The slave has to do Jacobian evaluations, sync with the Master and then step. Typically, the Jacobian evaluations can be done in parallel inside the slave. The master starts the slave Jacobian evaluations in parallel, makes a global solve for constraint forces, and then tells all slaves to step using these forces.
Categories: Demos, Project News

Leave a Reply

You must be logged in to post a comment.