def create_message_federate(fedinitstring,name,period): # Create Federate Info object that describes the federate properties fedinfo = h.helicsCreateFederateInfo() # Set core type from string h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "tcpss") #assert status == 0 # Federate init string # you need to tell helics what message bus to use h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) #assert status == 0 # Set one second message interval h.helicsFederateInfoSetTimeProperty(fedinfo, h.helics_property_time_period, period) #assert status == 0 # set wait for current time update to true h.helicsFederateInfoSetFlagOption(fedinfo, h.helics_flag_uninterruptible, True) # h.helics_flag_uninterruptible should have integer value of 1 #assert status == 0 # see 'helics_federate_flags' in # https://docs.helics.org/en/latest/doxygen/helics__enums_8h_source.html h.helicsFederateInfoSetIntegerProperty(fedinfo, h.helics_property_int_log_level, 1) # more info: # https://docs.helics.org/en/latest/user-guide/logging.html # https://docs.helics.org/en/latest/doxygen/helics__enums_8h_source.html # scroll to section on 'helics_log_levels' #print('status is',status) # make sure these links aren't dead #assert status == 0 # Create combo federate and give it a name fed = h.helicsCreateMessageFederate(name, fedinfo) # should this actually be a message federate? #fed = h.helicsCreateMessageFederate(name, fedinfo) print("Message federate created") return fed
def AddFederate(broker, core_type="zmq", count=1, deltat=1.0, name_prefix="fed"): # Create Federate Info object that describes the federate properties # fedinfo = h.helicsFederateInfoCreate() # Set Federate name # status = h.helicsFederateInfoSetFederateName(fedinfo, name_prefix) # Set core type from string # status = h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "zmq") # Federate init string # fedinitstring = "--broker=mainbroker --federates={}".format(count) status = h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) # Set the message interval (timedelta) for federate. Note th# # HELICS minimum message time interval is 1 ns and by default # it uses a time delta of 1 second. What is provided to the # setTimedelta routine is a multiplier for the default timedelta. # Set one second message interval # status = h.helicsFederateInfoSetTimeDelta(fedinfo, deltat) status = h.helicsFederateInfoSetLoggingLevel(fedinfo, 1) mFed = h.helicsCreateMessageFederate(fedinfo) return mFed
def mFed(): import helics as h initstring = "1 --name=mainbroker" fedinitstring = "--broker=mainbroker --federates=1" deltat = 0.01 helicsversion = h.helicsGetVersion() # Create broker # broker = h.helicsCreateBroker("zmq", "", initstring) isconnected = h.helicsBrokerIsConnected(broker) if isconnected == 1: pass # Create Federate Info object that describes the federate properties # fedinfo = h.helicsFederateInfoCreate() # Set Federate name # status = h.helicsFederateInfoSetFederateName(fedinfo, "TestA Federate") # Set core type from string # status = h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "zmq") # Federate init string # status = h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) # Set the message interval (timedelta) for federate. Note th# # HELICS minimum message time interval is 1 ns and by default # it uses a time delta of 1 second. What is provided to the # setTimedelta routine is a multiplier for the default timedelta. # Set one second message interval # status = h.helicsFederateInfoSetTimeDelta(fedinfo, deltat) status = h.helicsFederateInfoSetLoggingLevel(fedinfo, 1) mFed = h.helicsCreateMessageFederate(fedinfo) yield mFed status = h.helicsFederateFinalize(mFed) status, state = h.helicsFederateGetState(mFed) assert state == 3 while (h.helicsBrokerIsConnected(broker)): time.sleep(1) h.helicsFederateFree(mFed) h.helicsCloseLibrary()
def mFed(): initstring = "-f 1 --name=mainbroker" fedinitstring = "--broker=mainbroker --federates=1" deltat = 0.01 h.helicsGetVersion() # Create broker # broker = h.helicsCreateBroker("zmq", "", initstring) isconnected = h.helicsBrokerIsConnected(broker) if isconnected == 1: pass # Create Federate Info object that describes the federate properties # fedinfo = h.helicsCreateFederateInfo() # Set Federate name # h.helicsFederateInfoSetCoreName(fedinfo, "CoreA Federate") # Set core type from string # h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "zmq") # Federate init string # h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) # Set the message interval (timedelta) for federate. Note th# # HELICS minimum message time interval is 1 ns and by default # it uses a time delta of 1 second. What is provided to the # setTimedelta routine is a multiplier for the default timedelta. # Set one second message interval # h.helicsFederateInfoSetTimeProperty(fedinfo, h.helics_property_time_delta, deltat) h.helicsFederateInfoSetIntegerProperty(fedinfo, h.helics_property_int_log_level, 1) mFed = h.helicsCreateMessageFederate("TestA Federate", fedinfo) yield mFed h.helicsFederateFinalize(mFed) state = h.helicsFederateGetState(mFed) assert state == 3 while h.helicsBrokerIsConnected(broker): time.sleep(1) h.helicsFederateInfoFree(fedinfo) h.helicsFederateFree(mFed) h.helicsCloseLibrary()
def create_message_federate(fedinitstring, name, period): fedinfo = h.helicsCreateFederateInfo() h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "tcpss") h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) # Set one second message interval h.helicsFederateInfoSetTimeProperty(fedinfo, h.helics_property_time_period, period) # set wait for current time update to true h.helicsFederateInfoSetFlagOption(fedinfo, h.helics_flag_uninterruptible, True) h.helicsFederateInfoSetIntegerProperty(fedinfo, h.helics_property_int_log_level, 1) fed = h.helicsCreateMessageFederate(name, fedinfo) #print("Message federate created") return fed
def create_message_federate(fedinitstring, name, timedelta): fedinfo = h.helicsCreateFederateInfo() # "coreType": "zmq", h.helicsFederateInfoSetCoreTypeFromString(fedinfo, "zmq") h.helicsFederateInfoSetCoreInitString(fedinfo, fedinitstring) # "loglevel": 1, h.helicsFederateInfoSetIntegerProperty(fedinfo, h.helics_property_int_log_level, 11) # "timedelta": 1, h.helicsFederateInfoSetTimeProperty(fedinfo, h.helics_property_time_delta, timedelta) # "uninterruptible": false, h.helicsFederateInfoSetFlagOption(fedinfo, h.helics_flag_uninterruptible, False) # "terminate_on_error": true, h.helicsFederateInfoSetFlagOption(fedinfo, h.HELICS_FLAG_TERMINATE_ON_ERROR, True) # "name": "Controller", fed = h.helicsCreateMessageFederate(name, fedinfo) return fed
def createMessageFederate(federates=1, name="A Federate", deltat=0.01): fedinfo = setupFederateInfo(name, federates, deltat) mFed = h.helicsCreateMessageFederate(f"Test{name}", fedinfo) # assert mFed isa h.MessageFederate return mFed, fedinfo