Federate info

The FederateInfo structure contains information that can be passed to a federation upon construction. Some information can be updated continuously other can be only be changed before initializationMode is entered.

separator [char]

the separator character between federateName and endpoint or publications that are not declared global. the default is ‘/’

coreName [string]

The name of the core to connect with, can be left blank to either find an available core or generate one automatically.

coreInitString [string]

Command line arguments that are passed to the core when starting it. Some examples are:

  • “-f2” to specify 2 federates will connect
  • “-f1 –broker=” to specify a single federate and to connect to a broker at ipaddress port 23444

coreType [enum]

Specify which type of core to use. See core types for more details

They can be generated from a string using the

core_type coreTypeFromString (std::string type) noexcept

function call. The function

bool isCoreTypeAvailable (core_type type) noexcept;

will check if the specified core type is available in the current build of the library on a specific platform.

broker [string]

specify the broker to connect to, can be an ipaddress, or a name of the broker depending on the core type and federation configuration.

localport [string]

The local ip port to use for incoming connections. This is usually a number but depending on the system some ports can be named.

properties [bool]

Federate info structures accept properties as either Time values, integers, or flag values (bool). These are entered through the setProperty calls or the setFlagOption call. The function calls take a propertyID and a value. For a description of the available options see Timing and helics_enums and helics_definitions

Timing control variables

see timing for more details.


the minimum time advance allowed by the federate default timeEpsilon


The amount of time values and messages take to propagate to be available to external federates. default= 0


the time it takes values and messages to propagate to be accessible to the Federate default=0


a period value, all granted times must be on this period n*Period+offset default=0


offset to the time period default=0


real time tolerance - the maximum time grants can lag real time before HELICS automatically acts default=0.2 given this operates on a computer clock, time <0.005 are not going be very accurate or followed that closely unless the OS is specifically setup for that sort of timing level


real time tolerance - the maximum time grants can lead real time before HELICS forces an additional delay default 0.1

Timing flags

  • observer = false flag indicating that the federate is an observer
  • uninterruptible =false flag indicating that the federate should never return a time other than requested
  • source_only = false; flag indicating that the federate does not receive or do anything with received information.
  • only_transmit_on_change =false flag indicating that values should only updated if the number has actually changes
  • only_update_on_change = false flag indicating values should be discarded if they are not changed from previous values
  • wait_for_current_time_updates = false flag indicating that the federate should only grant when no more messages can be received at the current time
  • realtime = false flag indicating that the federate is required to operate in real time. the federate must have a non-zero period
  • slow_responding = false flag indicating that the federate might be slow to respond to internal pings or take a long time between steps

Other Controls


the maximum number of iterations allowed for the federate default=50


the logging level above which not to log to file default 1(WARNING)