I'm starting to study how to implement HLA in a project that I'm developing, and there's something that I can't understand very well.
In a federation, the data that are exchanged are defined in the FOM (Federation Object Model), that contains all the necessary stuff (classes, interactions and so on). That's ok.
I've also read that every federate needs to publish its own SOM (Simulation Object Model), that's a description of data that the federate publishes and for which it's subscribed.
My questions are:
- Who needs to load the FOM file? Every federate? It must be read from the RTI Manager?
- Why a federate needs to publish a SOM if the FOM is already available? If the FOM defines all strucutres that can be exchanged, the SOM duplicates a sub-part of the FOM that's needed only by the federate?
- Who reads the SOM that's sent by a federate?
- What data are stored inside the SOM? There's a deep copy of some structure defined in the FOM, there are links to them in the FOM?
- The SOM can contain classes, interactions and so on that are not defined in the FOM?
- If every federate publish data about objects that it uses with the SOM, why we need the FOM?
Sorry if they are simple questions, but I'm new to this and even if I understand the programming aspect of HLA, the logic behind these things are a bit obscure for me (maybe my not perfect English has a part in it, too).
Yserbius described the difference between a FOM and a SOM.
I have added some responses to your direct questions.
The RTI uses the FOM file. It has to be provided when the federation is created. Only the first federate needs to provide it.
The SOM is not needed at runtime, when your federates are executed. The SOM can be viewed as a document describing the capabilities of your simulator.
No SOM is needed at runtime.
The SOM is a subset of the FOM.
Yes, but they can not be used at runtime, unless they are added to the FOM.
Good question. It is usually the other way around, the federates provide a FOM at runtime, and no SOM exist to describe the federate.