Skip to content

Commit c11f4ee

Browse files
Handle events requested by fmi2_completedIntegratorStep
refs #1515
1 parent 4c3fe79 commit c11f4ee

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())
@@ -844,14 +846,17 @@ oms_status_enu_t oms::SystemSC::doStepCVODE(double stopTime)
844846
updateInputs(eventGraph);
845847
if (isTopLevelSystem())
846848
getModel().emit(time, false);
847-
849+
850+
bool immediateEvent = false;
848851
for (size_t i = 0; i < fmus.size(); ++i)
849852
{
850853
fmistatus = fmi2_completedIntegratorStep(fmus[i]->getFMU(), fmi2True, &callEventUpdate[i], &terminateSimulation[i]);
851854
if (fmi2OK != fmistatus) return logError_FMUCall("fmi2_completedIntegratorStep", fmus[i]);
855+
856+
immediateEvent = immediateEvent || callEventUpdate[i];
852857
}
853858

854-
if (flag == CV_ROOT_RETURN || tnext_is_event && time == tnext)
859+
if (flag == CV_ROOT_RETURN || tnext_is_event && time == tnext || immediateEvent)
855860
{
856861
logDebug("event found!!! " + std::to_string(time));
857862

0 commit comments

Comments
 (0)