Skip to content

FERAL Co-Simulation API

The FCAPI (FERAL Co-Simulation API) Gateway and Client libraries are designed to simplify the connection of applications to the FERAL framework. These libraries provide functions that encapsulate FERAL's message-based communication and offer various communication backends to ensure seamless interaction between client applications and the FERAL simulation environment.

Key Features

  • Connection Management: The client libraries handle the management of connections between the client and the server, ensuring reliable and efficient communication.
  • Data Transmission: They facilitate the transmission of data in both directions between the client and the server.
  • Property Transmission: The libraries manage the exchange of properties between the client and the server, maintaining synchronization and consistency.
  • Simulation Time Synchronization: They ensure the synchronization of simulation time between the client and server, crucial for accurate simulation results.

Communication Backends

The FERAL gateway supports multiple communication backends:

  • UDP: Useful for applications requiring low-latency communication.
  • TCP: Ideal for reliable, connection-oriented communication, allowing the client to run on different machines from the FERAL server.
  • SHM (Shared Memory): Provides high-speed communication for applications running on the same machine as the FERAL server.

Server-Side Setup

On the server side, the worker ports of the FERAL simulation's workers are connected to a FERAL Gateway, which facilitates communication with the client.

Client-Side Setup

On the client side, a client library implementation provides access to the FERAL simulation's functionalities. The client library is responsible for managing the connection, transmitting data and properties, and synchronizing simulation time.

Available Client Libraries

FERAL client libraries are available in multiple programming languages to support diverse application needs:

  • C++: Includes a plain C header for enhanced interoperability.
  • Python: Allows easy integration with Python applications, leveraging Python's extensive ecosystem.
  • Java: Provides a robust solution for Java applications, ensuring seamless integration with Java-based systems.

By using FERAL client libraries, developers can effortlessly connect their applications to the FERAL framework, enabling robust and efficient simulation-based interactions.