@@ -595,7 +595,6 @@ fmiStatus fmiInitialize(fmiComponent c, fmiBoolean toleranceControlled, fmiReal
595595 if (comp -> loggingOn ) comp -> functions .logger (c , comp -> instanceName , fmiOK , "log" ,
596596 "fmiInitialize: toleranceControlled=%d relativeTolerance=%g" ,
597597 toleranceControlled , relativeTolerance );
598- * eventInfo = comp -> eventInfo ;
599598
600599 /* set zero-crossing tolerance */
601600 setZCtol (relativeTolerance );
@@ -643,19 +642,19 @@ fmiStatus fmiInitialize(fmiComponent c, fmiBoolean toleranceControlled, fmiReal
643642 /* due to an event overwrite old values */
644643 overwriteOldSimulationData (comp -> fmuData );
645644
646- comp -> eventInfo . iterationConverged = fmiTrue ;
647- comp -> eventInfo . stateValueReferencesChanged = fmiFalse ;
648- comp -> eventInfo . stateValuesChanged = fmiTrue ;
649- comp -> eventInfo . terminateSimulation = fmiFalse ;
645+ eventInfo -> iterationConverged = fmiTrue ;
646+ eventInfo -> stateValueReferencesChanged = fmiFalse ;
647+ eventInfo -> stateValuesChanged = fmiTrue ;
648+ eventInfo -> terminateSimulation = fmiFalse ;
650649
651650 /* Get next event time (sample calls)*/
652651 nextSampleEvent = getNextSampleTimeFMU (comp -> fmuData );
653652 if (nextSampleEvent == -1 ){
654- comp -> eventInfo . upcomingTimeEvent = fmiFalse ;
653+ eventInfo -> upcomingTimeEvent = fmiFalse ;
655654 }else {
656- comp -> eventInfo . upcomingTimeEvent = fmiTrue ;
657- comp -> eventInfo . nextEventTime = nextSampleEvent ;
658- fmiEventUpdate (comp , fmiFalse , & ( comp -> eventInfo ) );
655+ eventInfo -> upcomingTimeEvent = fmiTrue ;
656+ eventInfo -> nextEventTime = nextSampleEvent ;
657+ fmiEventUpdate (comp , fmiFalse , eventInfo );
659658 }
660659
661660 return fmiOK ;
@@ -692,50 +691,33 @@ fmiStatus fmiEventUpdate(fmiComponent c, fmiBoolean intermediateResults, fmiEven
692691 eventInfo -> stateValuesChanged = fmiTrue ;
693692 }
694693
695- if (eventInfo -> nextEventTime <= comp -> fmuData -> localData [0 ]-> timeValue )
696- comp -> fmuData -> simulationInfo .sampleActivated = 1 ;
694+ storePreValues (comp -> fmuData );
697695
698- /* sample event */
699- if ( comp -> fmuData -> simulationInfo . sampleActivated )
696+ /* activate sample event */
697+ for ( i = 0 ; i < comp -> fmuData -> modelData . nSamples ; ++ i )
700698 {
701- storePreValues (comp -> fmuData );
702-
703- /* activate sample event */
704- for (i = 0 ; i < comp -> fmuData -> modelData .nSamples ; ++ i )
699+ if (comp -> fmuData -> simulationInfo .nextSampleTimes [i ] <= comp -> fmuData -> localData [0 ]-> timeValue )
705700 {
706- if (comp -> fmuData -> simulationInfo .nextSampleTimes [i ] <= comp -> fmuData -> localData [0 ]-> timeValue )
707- {
708- comp -> fmuData -> simulationInfo .samples [i ] = 1 ;
709- infoStreamPrint (LOG_EVENTS , 0 , "[%ld] sample(%g, %g)" , comp -> fmuData -> modelData .samplesInfo [i ].index , comp -> fmuData -> modelData .samplesInfo [i ].start , comp -> fmuData -> modelData .samplesInfo [i ].interval );
710- }
701+ comp -> fmuData -> simulationInfo .samples [i ] = 1 ;
702+ infoStreamPrint (LOG_EVENTS , 0 , "[%ld] sample(%g, %g)" , comp -> fmuData -> modelData .samplesInfo [i ].index , comp -> fmuData -> modelData .samplesInfo [i ].start , comp -> fmuData -> modelData .samplesInfo [i ].interval );
711703 }
704+ }
712705
713- comp -> fmuData -> callback -> functionDAE (comp -> fmuData );
706+ comp -> fmuData -> callback -> functionDAE (comp -> fmuData );
714707
715- /* deactivate sample events */
716- for (i = 0 ; i < comp -> fmuData -> modelData .nSamples ; ++ i )
708+ /* deactivate sample events */
709+ for (i = 0 ; i < comp -> fmuData -> modelData .nSamples ; ++ i )
710+ {
711+ if (comp -> fmuData -> simulationInfo .samples [i ])
717712 {
718- if (comp -> fmuData -> simulationInfo .samples [i ])
719- {
720- comp -> fmuData -> simulationInfo .samples [i ] = 0 ;
721- comp -> fmuData -> simulationInfo .nextSampleTimes [i ] += comp -> fmuData -> modelData .samplesInfo [i ].interval ;
722- }
713+ comp -> fmuData -> simulationInfo .samples [i ] = 0 ;
714+ comp -> fmuData -> simulationInfo .nextSampleTimes [i ] += comp -> fmuData -> modelData .samplesInfo [i ].interval ;
723715 }
724-
725- for (i = 0 ; i < comp -> fmuData -> modelData .nSamples ; ++ i )
726- if ((i == 0 ) || (comp -> fmuData -> simulationInfo .nextSampleTimes [i ] < comp -> fmuData -> simulationInfo .nextSampleEvent ))
727- comp -> fmuData -> simulationInfo .nextSampleEvent = comp -> fmuData -> simulationInfo .nextSampleTimes [i ];
728-
729- comp -> fmuData -> simulationInfo .sampleActivated = 0 ;
730716 }
731- else
732- {
733- comp -> fmuData -> callback -> function_updateRelations (comp -> fmuData , 1 );
734- updateRelationsPre (comp -> fmuData );
735- storeRelations (comp -> fmuData );
736717
737- comp -> fmuData -> callback -> functionDAE (comp -> fmuData );
738- }
718+ for (i = 0 ; i < comp -> fmuData -> modelData .nSamples ; ++ i )
719+ if ((i == 0 ) || (comp -> fmuData -> simulationInfo .nextSampleTimes [i ] < comp -> fmuData -> simulationInfo .nextSampleEvent ))
720+ comp -> fmuData -> simulationInfo .nextSampleEvent = comp -> fmuData -> simulationInfo .nextSampleTimes [i ];
739721
740722 if (comp -> fmuData -> callback -> checkForDiscreteChanges (comp -> fmuData ) || comp -> fmuData -> simulationInfo .needToIterate || checkRelations (comp -> fmuData ) || eventInfo -> stateValuesChanged )
741723 {
0 commit comments