Skip to content

Commit

Permalink
[FMI2] Calculate real values if needed
Browse files Browse the repository at this point in the history
  • Loading branch information
lochel authored and OpenModelica-Hudson committed Sep 27, 2017
1 parent 453670f commit 08c6143
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions SimulationRuntime/fmi/export/fmi2/fmu2_model_interface.c
Expand Up @@ -592,15 +592,29 @@ fmi2Status fmi2Reset(fmi2Component c)
fmi2Status fmi2GetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[])
{
int i;
ModelInstance *comp = (ModelInstance *)c;
ModelInstance *comp = (ModelInstance*)c;

if (invalidState(comp, "fmi2GetReal", modelInitializationMode|modelEventMode|modelContinuousTimeMode|modelTerminated|modelError, ~0))
return fmi2Error;
if (nvr > 0 && nullPointer(comp, "fmi2GetReal", "vr[]", vr))
return fmi2Error;
if (nvr > 0 && nullPointer(comp, "fmi2GetReal", "value[]", value))
return fmi2Error;

#if NUMBER_OF_REALS > 0
for (i = 0; i < nvr; i++) {
if (comp->_need_update)
{
comp->fmuData->callback->functionODE(comp->fmuData, comp->threadData);
overwriteOldSimulationData(comp->fmuData);
comp->fmuData->callback->functionAlgebraics(comp->fmuData, comp->threadData);
comp->fmuData->callback->output_function(comp->fmuData, comp->threadData);
comp->fmuData->callback->function_storeDelayed(comp->fmuData, comp->threadData);
storePreValues(comp->fmuData);
comp->_need_update = 0;
}

for (i = 0; i < nvr; i++)
{
if (vrOutOfRange(comp, "fmi2GetReal", vr[i], NUMBER_OF_REALS))
return fmi2Error;
value[i] = getReal(comp, vr[i]); // to be implemented by the includer of this file
Expand Down

0 comments on commit 08c6143

Please sign in to comment.