Skip to content

Commit

Permalink
- make the initial section balanced.
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@13925 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
adeas31 committed Nov 16, 2012
1 parent ab9d383 commit f52e7dc
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 15 deletions.
10 changes: 3 additions & 7 deletions Compiler/Template/CodegenFMU.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -1144,7 +1144,6 @@ case FMIIMPORT(fmiInfo=INFO(__),fmiExperimentAnnotation=EXPERIMENTANNOTATION(__)
parameter Real flowInstantiate(fixed=false);
Real flowTime;
parameter Real flowParamsStart(fixed=false);
Integer flowInitStatus;
Real flowStatesInputs;
Boolean callEventUpdate;
Boolean newStatesAvailable;
Expand All @@ -1156,14 +1155,12 @@ case FMIIMPORT(fmiInfo=INFO(__),fmiExperimentAnnotation=EXPERIMENTANNOTATION(__)
<%if not boolAnd(stringEq(integerStartVariablesValueReferences, ""), stringEq(integerStartVariablesNames, "")) then "flowParamsStart := fmiFunctions.fmiSetInteger(fmi, {"+integerStartVariablesValueReferences+"}, {"+integerStartVariablesNames+"});"%>
<%if not boolAnd(stringEq(booleanStartVariablesValueReferences, ""), stringEq(booleanStartVariablesNames, "")) then "flowParamsStart := fmiFunctions.fmiSetBoolean(fmi, {"+booleanStartVariablesValueReferences+"}, {"+booleanStartVariablesNames+"});"%>
<%if not boolAnd(stringEq(stringStartVariablesValueReferences, ""), stringEq(stringStartVariablesNames, "")) then "flowParamsStart := fmiFunctions.fmiSetString(fmi, {"+stringStartVariablesValueReferences+"}, {"+stringStartVariablesNames+"});"%>
(flowInitStatus, eventInfo) := fmiFunctions.fmiInitialize(fmi, eventInfo, flowParamsStart);
eventInfo := fmiFunctions.fmiInitialize(fmi, eventInfo, flowParamsStart);
<%if intGt(listLength(fmiInfo.fmiNumberOfContinuousStates), 0) then
<<
fmi_x := fmiFunctions.fmiGetContinuousStates(fmi, numberOfContinuousStates, flowStatesInputs);
fmi_x := fmiFunctions.fmiGetContinuousStates(fmi, numberOfContinuousStates, 1);
>>
%>
algorithm
flowInitStatus := 1;
equation
flowTime = fmiFunctions.fmiSetTime(fmi, time, flowInstantiate);
flowStatesInputs = fmiFunctions.fmiSetContinuousStates(fmi, fmi_x, flowParamsStart + flowTime);
Expand Down Expand Up @@ -1228,9 +1225,8 @@ case FMIIMPORT(fmiInfo=INFO(__),fmiExperimentAnnotation=EXPERIMENTANNOTATION(__)
input fmiImportInstance fmi;
input fmiEventInfo inEventInfo;
input Real inFlowInit;
output Integer outFlowInitStatus;
output fmiEventInfo outEventInfo;
external "C" outEventInfo = fmiInitialize_OMC(fmi, inEventInfo, inFlowInit, outFlowInitStatus) annotation(Library = {"omcruntime", "fmilib"<%if stringEq(platform, "win32") then ", \"shlwapi\""%>});
external "C" outEventInfo = fmiInitialize_OMC(fmi, inEventInfo, inFlowInit) annotation(Library = {"omcruntime", "fmilib"<%if stringEq(platform, "win32") then ", \"shlwapi\""%>});
end fmiInitialize;

function fmiSetTime
Expand Down
10 changes: 2 additions & 8 deletions Compiler/runtime/FMIWrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,16 +179,15 @@ int fmiSetDebugLogging_OMC(void* fmi, int debugLogging)
* Wrapper for the FMI function fmiInitialize.
* Returns FMI Event Info i.e fmi1_event_info_t.
*/
void* fmiInitialize_OMC(void* fmi, void* inEventInfo, double flowInit, int* status)
void* fmiInitialize_OMC(void* fmi, void* inEventInfo, double flowInit)
{
static int init = 0;
if (!init) {
init = 1;
fmi1_boolean_t toleranceControlled = fmi1_true;
fmi1_real_t relativeTolerance = 0.001;
fmi1_event_info_t* eventInfo = malloc(sizeof(fmi1_event_info_t));
fmi1_status_t fmistatus = fmi1_import_initialize((fmi1_import_t*)fmi, toleranceControlled, relativeTolerance, eventInfo);
*status = fmistatus;
fmi1_import_initialize((fmi1_import_t*)fmi, toleranceControlled, relativeTolerance, eventInfo);
return eventInfo;
}
return inEventInfo;
Expand All @@ -200,12 +199,7 @@ void* fmiInitialize_OMC(void* fmi, void* inEventInfo, double flowInit, int* stat
*/
void fmiGetContinuousStates_OMC(void* fmi, int numberOfContinuousStates, double flowInit, double* states)
{
int i;
for (i = 0 ; i < numberOfContinuousStates ; i++)
fprintf(stderr, "State before %d = %f\n", i, states[i]);fflush(NULL);
fmi1_import_get_continuous_states((fmi1_import_t*)fmi, (fmi1_real_t*)states, numberOfContinuousStates);
for (i = 0 ; i < numberOfContinuousStates ; i++)
fprintf(stderr, "State after %d = %f\n", i, states[i]);fflush(NULL);
}

/*
Expand Down

0 comments on commit f52e7dc

Please sign in to comment.