Skip to content
Philip Top edited this page Dec 7, 2018 · 2 revisions

Q. What features make HELICS unique?

A. There are several things about HELICS that are different from other co-simulation plaforms. The first is support for a variety of communication mechanism for different platforms and purposes. (ZMQ, MPI, IPC, TCP, etc) The second is a fully distributed time-coordination. There is no central time keeper unless you set it up that way. Another is that it is designed with the idea of mixing continuous systems, with discrete event simulations. Individual federates can support one or both modes. Perhaps the most unique feature is the concept of filters. Filters can intercept and alter discrete event messages, dropping, delaying, or rerouting them through other federates. This allows tremendous flexibility in allowing all simulations to interact with communication and network simulations, the full potential of such things is yet to be seen.

Q. Which core type should I use?

A. That depends on your requirement including platform, performance, and number of federates. Here are some general guidelines.

  • Just getting started, stick with the default of zmq
  • If you don't want to use zmq, use tcp
  • If you are on a single shared memory machine and concerned about performance, use ipc(unless you have big message (10kB+) sizes, then use something else
  • The test core can be used if you have all your federates in a single process
  • If you are concerned about round trip latency on a small network the tcp core is probably best
  • The udp core is similar to tcp, though slightly less reliable and with faster start up times, it is also probably faster on some network situations
  • mpi can be used on a high performance cluster, though it is still under development
  • The tcp_ss socket is targeted at specific applications through a firewall though it might be useful in other circumstances
  • A second zmq socket type is in development for large numbers federates(300+) on a single machine
Clone this wiki locally