Co-Simulation Execution Services

The SIMULIA Execution Engine runtime environment provides a bulletin board messaging system that allows components to exchange a low volume of small textual messages. This system is available throughout the runtime environment such that components running on different SIMULIA Execution Engine stations can view messages published by components running on other stations. Within a co-simulation group, components can easily exchange messages with other members of the group no matter what station they are running on.

The bulletin board messages are organized by topics to make it easy for cooperating components to find each other’s messages. Each distinct job, workflow, and co-simulation group has its own bulletin board. Messages on different bulletin boards are not visible to each other. Bulletin board data is deleted when the associated job, workflow, or co-simulation ends; in other words, the data is not persistent and is not available in the job results or in postprocessing.

Each message is posted to one of three possible bulletin boards:

  • The job-scope board, which is visible to every component in the job, even those that might run much later in the simulation flow or in later iterations of a design driver.

  • The workflow-scope board, which is visible to all components within a single level of the workflow; for example, all components that are a direct descendent of the same parent process component. This bulletin board is “per-execution” of the workflow; each iteration of the workflow has a separate bulletin board.

  • The cosim-scope board, which is visible to all components within a single co-simulation group. Like the workflow-scope bulletin board, the cosim-scope board is “per-execution” of the co-simulation group. If the group is executed more than once, a separate bulletin board will exist for each execution.

In addition, each note is associated with a topic that is an arbitrary string used to group related notes.

The bulletin board functions are available to a running component through the RuntimeEnv interface. In particular, the following methods are available to send and retrieve messages:

getBulletinBoardNoteList(BulletinBoardType scope, String topic)

Returns a list of bulletin board notes that match the given scope and topic that are visible to the currently executing component. Only notes that are in the given scope and that were posted with the given topic name will be returned.

postBulletinBoardNote(BulletinBoardType, bbScope, String topic, String note)

Posts a note to the given bulletin board with the given topic.

Refer to the Java API documentation (javadocs) installed with Isight for detailed descriptions of each of these methods.

In addition to the bulletin board service, the RuntimeEnv interface also provides a count of the co-simulation group size, which can be used to inform each component of the size of the group.

getCosimGroupSize()

Returns the number of components in the co-simulation group of which this component is a member. Returns zero if this component is not a member of a co-simulation group. The value returned includes the current component (e.g., it is the total number of components in the group). This does not provide any indication of the execution status of the group members (e.g., some of they may have not started yet).

Bulletin Board Limitations

Bulletin boards are intended for low-volume, small text messages. They should not be used as the primary communications mechanism for co-simulation codes. Instead, the bulletin board should be used to exchange communication parameters among the co-simulation group members so that they can establish their own direct communications paths.

Bulletin board messages are limited to 1000 characters; topic names are limited to 100 characters.