Skip to content

Commit d07ea53

Browse files
Handle events requested by fmi2_completedIntegratorStep
refs #1515
1 parent 9fe15bd commit d07ea53

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

src/OMSimulatorLib/SystemSC.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,8 @@ oms_status_enu_t oms::SystemSC::doStepEuler(double stopTime)
612612

613613
step_size_adjustment *= 0.5; // reduce the step size in each iteration
614614

615+
// TODO: Check callEventUpdate values!
616+
615617
// a. Evaluate derivatives for each FMU
616618
// set time
617619
for (const auto& component : getComponents())
@@ -860,14 +862,17 @@ oms_status_enu_t oms::SystemSC::doStepCVODE(double stopTime)
860862
updateInputs(eventGraph);
861863
if (isTopLevelSystem())
862864
getModel().emit(time, false);
863-
865+
866+
bool immediateEvent = false;
864867
for (size_t i = 0; i < fmus.size(); ++i)
865868
{
866869
fmistatus = fmi2_completedIntegratorStep(fmus[i]->getFMU(), fmi2True, &callEventUpdate[i], &terminateSimulation[i]);
867870
if (fmi2OK != fmistatus) return logError_FMUCall("fmi2_completedIntegratorStep", fmus[i]);
871+
872+
immediateEvent = immediateEvent || callEventUpdate[i];
868873
}
869874

870-
if (flag == CV_ROOT_RETURN || tnext_is_event && time == tnext)
875+
if (flag == CV_ROOT_RETURN || tnext_is_event && time == tnext || immediateEvent)
871876
{
872877
logDebug("event found!!! " + std::to_string(time));
873878

0 commit comments

Comments
 (0)