Project Chrono: Co-simulation

Topics | Classes
Co-simulation
VEHICLE module

## Description

Co-simulation support for vehicle-terrain interaction.

The vehicle co-simulation module provides an MPI_based framework for co-simulating a multibody system representing a wheeled or tracked mechanism with various terrain models and optionally various tire models.

It implements a 3-way explicit force-displacement co-simulation approach. The three different types of nodes present in a co-simulation are as follows:

- MBS node, a single MPI rank which simulates the multibody system.
- Tire nodes, a number of MPI ranks (equal to the number of wheels), each simulating one of the tires.
- Terrain node(s), one or more MPI ranks which simulate the deformable terrain.

For a wheeled system, the inter-node communication at each synchronization time is as follows:

- MBS node sends spindle body state to corresponding Tire nodes
- Tire nodes send spindle forces to MBS node
- Tire nodes send tire state (rigid body state or deformable mesh state) to Terrain node
- Terrain node sends tire forces (single resultant force or distributed vertex forces) to corresponding Tire node

For a tracked system, the inter-node communication at each synchronization time is at follows:

- MBS node sends track shoe states to the Terrain node
- Terrain node sends forces acting on track shoes to the MBS node

The communication interface between Tire and Terrain nodes or between tracked MBS and Terrain nodes can be of one of two types:

- ChVehicleCosimBaseNode::InterfaceType::BODY, in which force-displacement data for a single rigid body is exchanged
- ChVehicleCosimBaseNode::InterfaceType::MESH, in which force-displacement data for a deformable mesh is exchanged

Collaboration diagram for Co-simulation:

## Topics
| Multibody system nodes
| Tire simulation nodes
| This module defines concrete tire nodes using Chrono physics:
| Terrain nodes using Chrono physics
| This module defines concrete terrain nodes using Chrono physics:

## Classes
class | chrono::vehicle::ChVehicleCosimBaseNode
| Base class for a co-simulation node. More...
class | chrono::vehicle::ChVehicleCosimOtherNode
| Definition of an additional MPI node not directly involved in co-simulation. More...
class | chrono::vehicle::ChVehicleCosimTerrainNode
| Base class for a terrain node. More...
class | chrono::vehicle::ChVehicleCosimTireNode
| Base class for all tire nodes. More...
class | chrono::vehicle::ChVehicleCosimTrackedMBSNode
| Base class for all MBS nodes with tracks. More...
class | chrono::vehicle::ChVehicleCosimWheeledMBSNode
| Base class for all MBS nodes with wheels. More...