 |
helics
3.0.1
|
9 #include "../common/GuardedTypes.hpp"
10 #include "ActionMessage.hpp"
11 #include "TimeDependencies.hpp"
13 #include "json/forwards.h"
32 Time timeDelta = Time::epsilon();
42 bool wait_for_current_time_updates =
false;
43 bool uninterruptible =
false;
44 bool restrictive_time_policy =
false;
48 int maxIterations = 50;
76 Time maxTime{Time::maxVal()};
104 bool disconnected{
false};
120 void setProperty(
int intProperty,
int propertyVal);
163 void specifyNonGranting(
bool value =
true) {
nonGranting = value; }
171 DependencyInfo* getDependencyInfo(GlobalFederateId ofed);
173 bool isDependency(GlobalFederateId ofed)
const;
177 bool updateNextExecutionTime();
180 void updateNextPossibleEventTime();
182 Time getNextPossibleTime()
const;
183 Time generateAllowedTime(
Time testTime)
const;
185 bool checkAndSendTimeRequest(ActionMessage& upd, GlobalFederateId skip)
const;
187 void sendTimeRequest()
const;
188 void updateTimeGrant();
190 bool transmitTimingMessages(ActionMessage& msg,
191 GlobalFederateId skipFed = GlobalFederateId{})
const;
195 Time updateTimeBlocks(int32_t blockId,
Time newTime);
224 void setAsChild(GlobalFederateId fedID);
226 void setAsParent(GlobalFederateId fedID);
238 Time newMessageTime);
constexpr Time timeZero
Definition: helicsTime.hpp:31
void processConfigUpdateMessage(const ActionMessage &cmd)
Definition: TimeCoordinator.cpp:1197
void enterInitialization()
Definition: TimeCoordinator.cpp:367
bool nonGranting
Definition: TimeCoordinator.hpp:107
@ processed
the message was used to update the current state
void resetIteratingTimeRequests(Time requestTime)
Definition: TimeDependencies.cpp:422
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:80
constexpr uint16_t delayed_timing_flag
overload of extra_flag2 to indicate the request is from federate with delayed timing
Definition: flagOperations.hpp:65
Time getGrantedTime() const
Definition: TimeCoordinator.hpp:136
bool hasInitUpdates
flag indicating that a value or message was received during initialization stage
Definition: TimeCoordinator.hpp:100
void requestTimeCheck()
Definition: TimeCoordinator.cpp:385
@ delay_processing
the message should be delayed and reprocessed later
void removeDependent(GlobalFederateId id)
Definition: TimeDependencies.cpp:303
void timeRequest(Time nextTime, IterationRequest iterate, Time newValueTime, Time newMessageTime)
Definition: TimeCoordinator.cpp:143
bool isValid() const
Definition: GlobalFederateId.hpp:105
void processDependencyUpdateMessage(const ActionMessage &cmd)
Definition: TimeCoordinator.cpp:1054
shared_guarded_m< std::vector< GlobalFederateId > > dependent_federates
these are to maintain an accessible record of dependent federates
Definition: TimeCoordinator.hpp:78
void setMessageSender(std::function< void(const ActionMessage &)> userSendMessageFunction)
Definition: TimeCoordinator.cpp:36
bool executionMode
flag that the coordinator has entered the execution Mode
Definition: TimeCoordinator.hpp:98
Definition: TimeDependencies.hpp:75
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
GlobalFederateId getMinDependency() const
Definition: TimeDependencies.cpp:363
GlobalFederateId source_id
the identifier for inserting into the source id field of any generated messages;
Definition: TimeCoordinator.hpp:92
void removeDependency(GlobalFederateId fedID)
Definition: TimeCoordinator.cpp:758
void removeDependency(GlobalFederateId id)
Definition: TimeDependencies.cpp:265
void resetDependentEvents(Time grantTime)
Definition: TimeDependencies.cpp:435
std::vector< std::pair< Time, int32_t > > timeBlocks
blocks for a particular timeblocking link
Definition: TimeCoordinator.hpp:84
std::string printTimeStatus() const
Definition: TimeCoordinator.cpp:692
Definition: TimeDependencies.hpp:36
Time time_minminDe
the minimum of the minimum dependency event Time
Definition: TimeCoordinator.hpp:65
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
Time time_next
the next possible internal event time
Definition: TimeCoordinator.hpp:64
Time Te
the next currently scheduled event
Definition: TimeDependencies.hpp:39
Time time_block
a blocking time to not grant time >= the specified time
Definition: TimeCoordinator.hpp:75
Definition: GlobalFederateId.hpp:68
Definition: ActionMessage.hpp:30
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:60
message_process_result
Definition: TimeCoordinator.hpp:23
bool isDependency(GlobalFederateId ofed) const
Definition: TimeDependencies.cpp:202
message_process_result processTimeMessage(const ActionMessage &cmd)
Definition: TimeCoordinator.cpp:924
void resetIteratingExecRequests()
Definition: TimeDependencies.cpp:378
@ iteration_requested_flag
indicator that an iteration has been requested
Definition: flagOperations.hpp:16
bool checkIfReadyForTimeGrant(bool iterating, Time desiredGrantTime) const
Definition: TimeDependencies.cpp:387
int appendMessage(ActionMessage &m, const ActionMessage &newMessage)
Definition: ActionMessage.cpp:919
uint16_t counter
26 counter for filter tracking or message counter
Definition: ActionMessage.hpp:41
@ FORCE_ITERATION
force an iteration whether it is needed or not
Time time_granted
the most recent time granted
Definition: TimeCoordinator.hpp:62
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:85
auto size() const
Definition: TimeDependencies.hpp:100
Time time_value
the time of the earliest value event
Definition: TimeCoordinator.hpp:70
@ ITERATING
indicator that the iterations need to continue
void disconnect()
Definition: TimeCoordinator.cpp:63
bool dynamicJoining
if set to true the time coordinator is joining an ongoing co-simulation
Definition: TimeCoordinator.hpp:109
bool getOptionFlag(int optionFlag) const
Definition: TimeCoordinator.cpp:1179
constexpr uint16_t child_flag
overload of extra_flag4 indicating a message is from a child object
Definition: flagOperations.hpp:49
Time next
next possible message or value
Definition: TimeDependencies.hpp:38
Time TeAlt
the second min event
Definition: TimeDependencies.hpp:41
int activeDependencyCount() const
Definition: TimeDependencies.cpp:356
bool event_triggered
Definition: TimeCoordinator.hpp:47
bool updateTime(const ActionMessage &m)
Definition: TimeDependencies.cpp:326
Definition: TimeCoordinator.hpp:30
void updateMessageTime(Time messageUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:453
void setOptionFlag(int optionFlag, bool value)
Definition: TimeCoordinator.cpp:1129
IterationRequest
Definition: CoreTypes.hpp:89
Time time_allow
the current allowable time
Definition: TimeCoordinator.hpp:67
const DependencyInfo * getDependencyInfo(GlobalFederateId id) const
Definition: TimeDependencies.cpp:220
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
std::atomic< int32_t > iteration
iteration counter
Definition: TimeCoordinator.hpp:103
bool hasActiveTimeDependencies() const
Definition: TimeCoordinator.cpp:351
std::pair< GlobalFederateId, Time > getMinGrantedDependency() const
Definition: TimeCoordinator.cpp:906
void setExtraData(int32_t data)
Definition: ActionMessage.hpp:157
auto begin()
Definition: TimeDependencies.hpp:102
MessageProcessingResult checkTimeGrant()
Definition: TimeCoordinator.cpp:524
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:21
bool updateTimeFactors()
Definition: TimeCoordinator.cpp:485
constexpr uint16_t non_granting_flag
overload of extra_flag1 to indicate the request is from a non-granting federate
Definition: flagOperations.hpp:62
TimeDependencies dependencies
federates which this Federate is temporally dependent on
Definition: TimeCoordinator.hpp:82
bool addDependency(GlobalFederateId fedID)
Definition: TimeCoordinator.cpp:711
@ ITERATE_IF_NEEDED
indicator that the iterations need to continue
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:77
Time time_minDe
the minimum event time of the dependencies
Definition: TimeCoordinator.hpp:66
SmallBuffer payload
buffer to contain the data payload
Definition: ActionMessage.hpp:48
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
void updateValueTime(Time valueUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:249
TimeCoordinator()
Definition: TimeCoordinator.cpp:26
Time Te
48 event time
Definition: ActionMessage.hpp:45
MessageProcessingResult checkExecEntry()
Definition: TimeCoordinator.cpp:806
bool addDependency(GlobalFederateId id)
Definition: TimeDependencies.cpp:240
GlobalFederateId getMinDependency() const
Definition: TimeCoordinator.cpp:362
Definition: TimeDependencies.hpp:53
int dependencyCount() const
Definition: TimeCoordinator.cpp:356
Definition: TimeCoordinator.hpp:55
Time time_exec
the time of the next targeted execution
Definition: TimeCoordinator.hpp:68
Time getTimeProperty(int timeProperty) const
Definition: TimeCoordinator.cpp:1149
bool checkingExec
flag indicating that the coordinator is trying to enter the exec mode
Definition: TimeCoordinator.hpp:96
@ ERROR_RESULT
indicator that an error has occurred
constexpr uint16_t parent_flag
overload of extra_flag3 indicating the message is from a parent object
Definition: flagOperations.hpp:46
int32_t getExtraData() const
Definition: ActionMessage.hpp:159
Time time_message
the time of the earliest message event
Definition: TimeCoordinator.hpp:69
void setProperty(int timeProperty, Time propertyVal)
Definition: TimeCoordinator.cpp:1092
Time time_grantBase
Definition: TimeCoordinator.hpp:73
Time Tdemin
56 min dependent event time
Definition: ActionMessage.hpp:46
void enteringExecMode(IterationRequest mode)
Definition: TimeCoordinator.cpp:45
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
bool addDependent(GlobalFederateId id)
Definition: TimeDependencies.cpp:278
void setDynamicJoining()
Definition: TimeCoordinator.hpp:124
@ no_effect
the message did not result in an update
bool checkIfReadyForExecEntry(bool iterating) const
Definition: TimeDependencies.cpp:337
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
int getIntegerProperty(int intProperty) const
Definition: TimeCoordinator.cpp:1168
bool hasActiveTimeDependencies() const
Definition: TimeDependencies.cpp:349
std::vector< GlobalFederateId > getDependencies() const
Definition: TimeCoordinator.cpp:785
void generateDebuggingTimeInfo(Json::Value &base) const
Definition: TimeCoordinator.cpp:305
Time minDe
min dependency event time
Definition: TimeDependencies.hpp:40
shared_guarded_m< std::vector< GlobalFederateId > > dependency_federates
these are to maintain an accessible record of dependency federates
Definition: TimeCoordinator.hpp:80
bool addDependent(GlobalFederateId fedID)
Definition: TimeCoordinator.cpp:727
Time time_requested
the most recent time requested
Definition: TimeCoordinator.hpp:63
TimeData upstream
the variables for time coordination
Definition: TimeCoordinator.hpp:58
std::vector< GlobalFederateId > getDependents() const
Definition: TimeCoordinator.hpp:142
Definition: application_api/Federate.hpp:28
constexpr Time timeEpsilon
Definition: helicsTime.hpp:33
IterationRequest iterating
indicator that the coordinator should be iteratingif need be
Definition: TimeCoordinator.hpp:94
@ CONTINUE_PROCESSING
the current loop should continue
@ HALTED
indicator that the simulation has been halted
tcoptions info
basic time control information
Definition: TimeCoordinator.hpp:86
bool empty() const
Definition: TimeDependencies.hpp:115
std::function< void(const ActionMessage &)> sendMessageFunction
callback used to send the messages
Definition: TimeCoordinator.hpp:88
int32_t getCurrentIteration() const
Definition: TimeCoordinator.hpp:149
GlobalFederateId minFed
identifier for the min dependency
Definition: TimeDependencies.hpp:42
MessageProcessingResult
Definition: CoreTypes.hpp:64
@ NO_ITERATIONS
indicator that the iterations have completed
void generateConfig(Json::Value &base) const
Definition: TimeCoordinator.cpp:280
void localError()
Definition: TimeCoordinator.cpp:100
@ NEXT_STEP
indicator that the iterations have completed
const int HELICS_INVALID_PROPERTY_VALUE
Definition: helics_enums.h:278
void removeDependent(GlobalFederateId fedID)
Definition: TimeCoordinator.cpp:769
Time allowedSendTime() const
Definition: TimeCoordinator.hpp:138
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
void setIterationFlags(ActionMessage &command, IterationRequest iterate)
Definition: ActionMessage.cpp:930