 |
helics
3.3.0
|
9 #include "../common/GuardedTypes.hpp"
10 #include "ActionMessage.hpp"
11 #include "BaseTimeCoordinator.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()};
85 std::uint8_t currentRestrictionLevel{0};
121 void setProperty(
int intProperty,
int propertyVal);
164 void specifyNonGranting(
bool value =
true) {
nonGranting = value; }
168 bool updateNextExecutionTime();
171 void updateNextPossibleEventTime();
173 Time getNextPossibleTime()
const;
174 Time generateAllowedTime(
Time testTime)
const;
179 std::pair<bool, bool> checkAndSendTimeRequest(ActionMessage& upd, GlobalFederateId skip)
const;
181 void sendTimeRequest(GlobalFederateId triggerFed)
const;
182 void updateTimeGrant();
184 bool transmitTimingMessages(ActionMessage& msg,
185 GlobalFederateId skipFed = GlobalFederateId{})
const;
189 Time updateTimeBlocks(int32_t blockId,
Time newTime);
208 virtual bool addDependent(GlobalFederateId fedID)
override;
218 checkExecEntry(GlobalFederateId triggerFed = GlobalFederateId{})
override;
222 GlobalFederateId minFed = GlobalFederateId{},
223 std::int32_t responseSequenceCounter = 0);
233 Time newMessageTime);
constexpr Time timeZero
Definition: helicsTime.hpp:31
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:43
void processConfigUpdateMessage(const ActionMessage &cmd)
Definition: TimeCoordinator.cpp:1473
virtual std::string printTimeStatus() const override
Definition: TimeCoordinator.cpp:879
void enterInitialization()
Definition: TimeCoordinator.cpp:305
bool nonGranting
Definition: BaseTimeCoordinator.hpp:42
void setExtraDestData(int32_t data)
Definition: ActionMessage.hpp:161
@ processed
the message was used to update the current state
MessageProcessingResult checkTimeGrant(GlobalFederateId triggerFed=GlobalFederateId{})
Definition: TimeCoordinator.cpp:480
void resetIteratingTimeRequests(Time requestTime)
Definition: TimeDependencies.cpp:638
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:18
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:84
Time getGrantedTime() const
Definition: TimeCoordinator.hpp:135
TimeDependencies dependencies
Definition: BaseTimeCoordinator.hpp:27
bool hasInitUpdates
flag indicating that a value or message was received during initialization stage
Definition: TimeCoordinator.hpp:92
void requestTimeCheck()
Definition: TimeCoordinator.cpp:328
std::function< void(const ActionMessage &)> sendMessageFunction
callback used to send the messages
Definition: BaseTimeCoordinator.hpp:29
std::int32_t responseSequenceCounter
Definition: TimeDependencies.hpp:74
@ delay_processing
the message should be delayed and reprocessed later
void removeDependent(GlobalFederateId id)
Definition: TimeDependencies.cpp:409
void timeRequest(Time nextTime, IterationRequest iterate, Time newValueTime, Time newMessageTime)
Definition: TimeCoordinator.cpp:103
GlobalFederateId mSourceId
the identifier for inserting into the source id field of any generated messages;
Definition: BaseTimeCoordinator.hpp:32
shared_guarded_m< std::vector< GlobalFederateId > > dependent_federates
these are to maintain an accessible record of dependent federates
Definition: TimeCoordinator.hpp:78
bool checkAllPastExec(bool iterating) const
Definition: TimeDependencies.cpp:443
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
void removeDependency(GlobalFederateId id)
Definition: TimeDependencies.cpp:371
void resetDependentEvents(Time grantTime)
Definition: TimeDependencies.cpp:651
std::vector< std::pair< Time, int32_t > > timeBlocks
blocks for a particular timeblocking link
Definition: TimeCoordinator.hpp:82
void disconnect()
Definition: BaseTimeCoordinator.cpp:79
Definition: TimeDependencies.hpp:57
bool interrupted
indicator that the federates next event is a timing interruption
Definition: TimeDependencies.hpp:67
Time time_minminDe
the minimum of the minimum dependency event Time
Definition: TimeCoordinator.hpp:65
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
constexpr Time cBigTime
Definition: helicsTime.hpp:37
Time time_next
the next possible internal event time
Definition: TimeCoordinator.hpp:64
Time Te
the next currently scheduled event
Definition: TimeDependencies.hpp:60
Time time_block
a blocking time to not grant time >= the specified time
Definition: TimeCoordinator.hpp:75
Definition: GlobalFederateId.hpp:72
Definition: ActionMessage.hpp:30
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:64
std::int32_t sequenceCounter
storage for sequence counter
Definition: BaseTimeCoordinator.hpp:33
message_process_result
Definition: TimeCoordinator.hpp:23
message_process_result processTimeMessage(const ActionMessage &cmd)
Definition: TimeCoordinator.cpp:1217
void resetIteratingExecRequests()
Definition: TimeDependencies.cpp:624
bool hasIterationData
flag indicating that a value or message was received during iteration
Definition: TimeCoordinator.hpp:94
int appendMessage(ActionMessage &m, const ActionMessage &newMessage)
Definition: ActionMessage.cpp:925
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 globalTime
true if using a global time manager parent
Definition: TimeCoordinator.hpp:101
auto size() const
Definition: TimeDependencies.hpp:151
Time time_value
the time of the earliest value event
Definition: TimeCoordinator.hpp:70
@ HALTED
indicator that the simulation has been halted
bool dynamicJoining
if set to true the time coordinator is joining an ongoing co-simulation
Definition: TimeCoordinator.hpp:105
bool getOptionFlag(int optionFlag) const
Definition: TimeCoordinator.cpp:1455
std::int32_t sequenceCounter
the sequence Counter of the request
Definition: TimeDependencies.hpp:73
constexpr GlobalBrokerId gRootBrokerID
Definition: GlobalFederateId.hpp:66
Time next
next possible message or value
Definition: TimeDependencies.hpp:59
Time TeAlt
the second min event
Definition: TimeDependencies.hpp:62
bool executionMode
Definition: BaseTimeCoordinator.hpp:37
bool needSendAll
Definition: TimeCoordinator.hpp:97
bool event_triggered
Definition: TimeCoordinator.hpp:47
Definition: TimeCoordinator.hpp:30
void updateMessageTime(Time messageUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:396
void setOptionFlag(int optionFlag, bool value)
Definition: TimeCoordinator.cpp:1405
@ delayed_timing_flag
flag to indicate the request is from federate with delayed timing
Definition: flagOperations.hpp:30
IterationRequest
Definition: CoreTypes.hpp:92
Time time_allow
the current allowable time
Definition: TimeCoordinator.hpp:67
const DependencyInfo * getDependencyInfo(GlobalFederateId id) const
Definition: TimeDependencies.cpp:326
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
std::atomic< int32_t > iteration
current number of iterations
Definition: TimeCoordinator.hpp:107
@ ITERATING
indicator that the iterations need to continue
std::pair< GlobalFederateId, Time > getMinGrantedDependency() const
Definition: TimeCoordinator.cpp:1199
virtual void removeDependency(GlobalFederateId fedID) override
Definition: TimeCoordinator.cpp:911
void setExtraData(int32_t data)
Definition: ActionMessage.hpp:157
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:130
void sendUpdatedExecRequest(GlobalFederateId target=GlobalFederateId{}, GlobalFederateId minFed=GlobalFederateId{}, std::int32_t responseSequenceCounter=0)
Definition: TimeCoordinator.cpp:957
auto begin()
Definition: TimeDependencies.hpp:153
void sendTimingInfo()
Definition: BaseTimeCoordinator.cpp:268
@ ITERATE_IF_NEEDED
indicator that the iterations need to continue
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
virtual void removeDependent(GlobalFederateId fedID) override
Definition: TimeCoordinator.cpp:922
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
void updateValueTime(Time valueUpdateTime, bool allowRequestSend)
Definition: TimeCoordinator.cpp:210
Time Te
48 event time
Definition: ActionMessage.hpp:45
virtual MessageProcessingResult checkExecEntry(GlobalFederateId triggerFed=GlobalFederateId{}) override
Definition: TimeCoordinator.cpp:992
int dependencyCount() const
Definition: BaseTimeCoordinator.cpp:258
Definition: TimeCoordinator.hpp:55
virtual bool addDependent(GlobalFederateId fedID)
Definition: BaseTimeCoordinator.cpp:170
Time time_exec
the time of the next targeted execution
Definition: TimeCoordinator.hpp:68
TimeCoordinator(std::function< void(const ActionMessage &)> userSendMessageFunction)
Definition: TimeCoordinator.hpp:113
Time getTimeProperty(int timeProperty) const
Definition: TimeCoordinator.cpp:1425
@ CONTINUE_PROCESSING
the current loop should continue
DependencyProcessingResult updateTime(const ActionMessage &m)
Definition: TimeDependencies.cpp:432
MessageProcessingResult
Definition: CoreTypes.hpp:64
@ non_granting_flag
flag to indicate the request is from a non-granting federate
Definition: flagOperations.hpp:25
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:1368
Time time_grantBase
Definition: TimeCoordinator.hpp:73
Time Tdemin
56 min dependent event time
Definition: ActionMessage.hpp:46
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
constexpr bool isValid() const
Definition: GlobalFederateId.hpp:109
@ interrupted_flag
flag to mark an interrupted event
Definition: flagOperations.hpp:28
virtual bool updateTimeFactors() override
Definition: TimeCoordinator.cpp:430
void setDynamicJoining()
Definition: TimeCoordinator.hpp:125
Definition: BaseTimeCoordinator.hpp:25
@ no_effect
the message did not result in an update
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
Time getRequestedTime() const
Definition: TimeCoordinator.hpp:137
int getIntegerProperty(int intProperty) const
Definition: TimeCoordinator.cpp:1444
std::vector< GlobalFederateId > getDependencies() const
Definition: TimeCoordinator.cpp:933
virtual Time getNextTime() const override
Definition: TimeCoordinator.cpp:323
virtual bool addDependent(GlobalFederateId fedID) override
Definition: TimeCoordinator.cpp:902
@ iteration_requested_flag
Definition: flagOperations.hpp:23
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:138
@ NEXT_STEP
indicator that the iterations have completed
ActionMessage generateTimeRequest(const TimeData &dep, GlobalFederateId fed, std::int32_t responseCode) const
Definition: BaseTimeCoordinator.cpp:288
virtual void generateDebuggingTimeInfo(Json::Value &base) const
Definition: BaseTimeCoordinator.cpp:118
Time minDe
min dependency event time
Definition: TimeDependencies.hpp:61
shared_guarded_m< std::vector< GlobalFederateId > > dependency_federates
these are to maintain an accessible record of dependency federates
Definition: TimeCoordinator.hpp:80
TimeCoordinator()=default
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:143
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:89
action_message_def::action_t action() const noexcept
Definition: ActionMessage.hpp:88
tcoptions info
basic time control information
Definition: TimeCoordinator.hpp:84
bool empty() const
Definition: TimeDependencies.hpp:166
virtual void generateDebuggingTimeInfo(Json::Value &base) const override
Definition: TimeCoordinator.cpp:269
int32_t getCurrentIteration() const
Definition: TimeCoordinator.hpp:150
GlobalFederateId minFed
identifier for the min dependency
Definition: TimeDependencies.hpp:63
bool checkIfReadyForExecEntry(bool iterating, bool waiting) const
Definition: TimeDependencies.cpp:454
@ NO_ITERATIONS
indicator that the iterations have completed
virtual void enteringExecMode(IterationRequest mode) override
Definition: TimeCoordinator.cpp:24
bool checkIfReadyForTimeGrant(bool iterating, Time desiredGrantTime, GrantDelayMode delayMode) const
Definition: TimeDependencies.cpp:494
void generateConfig(Json::Value &base) const
Definition: TimeCoordinator.cpp:244
void localError()
Definition: TimeCoordinator.cpp:60
const int HELICS_INVALID_PROPERTY_VALUE
Definition: helics_enums.h:293
Time allowedSendTime() const
Definition: TimeCoordinator.hpp:139
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
bool triggered
indicator the federate was triggered recently
Definition: TimeCoordinator.hpp:99
std::pair< int, std::string > checkForIssues(bool waiting) const
Definition: TimeDependencies.cpp:661
virtual bool addDependency(GlobalFederateId fedID) override
Definition: TimeCoordinator.cpp:893
virtual bool addDependency(GlobalFederateId fedID)
Definition: BaseTimeCoordinator.cpp:156
void setIterationFlags(ActionMessage &command, IterationRequest iterate)
Definition: ActionMessage.cpp:936