Skip to content

Commit 0228571

Browse files
author
Willi Braun
committed
- removed second call of symbolic initialization. - fixes #2021, but break two other tests, which will be fixed, when help-vars for algorithm are finally removed. git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14827 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 6c9343a commit 0228571

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

Compiler/BackEnd/BackendDAEOptimize.mo

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10587,7 +10587,7 @@ algorithm
1058710587
(condition, vars, preStmts, additionalInitialEquations, index) = encapsulateWhenConditionsForAlgorithms1(condition, source, inIndex);
1058810588
vars = listAppend(vars, inVars);
1058910589
stmts_ = listAppend(preStmts, {DAE.STMT_WHEN(condition, stmts1, NONE(), helpVarIndices, source)});
10590-
10590+
1059110591
(stmts, preStmts, vars, additionalInitialEquations1, index) = encapsulateWhenConditionsForAlgorithms(rest, vars, index);
1059210592
stmts_ = listAppend(stmts_, stmts);
1059310593
additionalInitialEquations = listAppend(additionalInitialEquations, additionalInitialEquations1);
@@ -10597,7 +10597,7 @@ algorithm
1059710597
case ((DAE.STMT_WHEN(exp=condition, statementLst=stmts1, elseWhen=SOME(elseWhen), helpVarIndices=helpVarIndices, source=source))::rest, _, _) equation
1059810598
(condition, vars, preStmts, additionalInitialEquations, index) = encapsulateWhenConditionsForAlgorithms1(condition, source, inIndex);
1059910599
vars = listAppend(vars, inVars);
10600-
10600+
1060110601
({elseWhen}, preStmts2, vars, additionalInitialEquations1, index) = encapsulateWhenConditionsForAlgorithms({elseWhen}, vars, index);
1060210602
preStmts = listAppend(preStmts, preStmts2);
1060310603
additionalInitialEquations = listAppend(additionalInitialEquations, additionalInitialEquations1);
@@ -10657,7 +10657,7 @@ algorithm
1065710657
// array-condition
1065810658
case (DAE.ARRAY(array={condition}), _, index) equation
1065910659
crStr = "$whenCondition" +& intString(index);
10660-
10660+
1066110661
var = BackendDAE.VAR(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), BackendDAE.DISCRETE(), DAE.BIDIR(), DAE.NON_PARALLEL(), DAE.T_BOOL_DEFAULT, NONE(), NONE(), {}, inSource, NONE(), NONE(), DAE.NON_CONNECTOR());
1066210662
stmt = DAE.STMT_ASSIGN(DAE.T_BOOL_DEFAULT, DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT), condition, inSource);
1066310663
condition = DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT);
@@ -10674,7 +10674,7 @@ algorithm
1067410674
// simple condition
1067510675
case (condition, _, index) equation
1067610676
crStr = "$whenCondition" +& intString(index);
10677-
10677+
1067810678
var = BackendDAE.VAR(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), BackendDAE.DISCRETE(), DAE.BIDIR(), DAE.NON_PARALLEL(), DAE.T_BOOL_DEFAULT, NONE(), NONE(), {}, inSource, NONE(), NONE(), DAE.NON_CONNECTOR());
1067910679
stmt = DAE.STMT_ASSIGN(DAE.T_BOOL_DEFAULT, DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT), condition, inSource);
1068010680
condition = DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT);

SimulationRuntime/c/simulation/solver/initialization/initialization.c

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -660,23 +660,16 @@ static int symbolic_initialization(DATA *data)
660660
stateSelection(data,0);
661661
functionInitialEquations(data);
662662

663-
updateDiscreteSystem(data);
664-
665-
/* and restore start values and helpvars */
666-
restoreExtrapolationDataOld(data);
667-
initializeStateSetPivoting(data); /* reset state selection */
668-
syncPreForHelpVars(data); /* resetAllHelpVars(data); */
669-
storeRelations(data);
670-
storePreValues(data);
671-
672-
/* do pivoting for dynamic state selection */
673-
stateSelection(data,0);
674-
functionInitialEquations(data);
663+
/* update saved value for
664+
hysteresis relations */
665+
updateHysteresis(data);
675666

676667
/* do pivoting for dynamic state selection if selection changed try again an */
677668
if(stateSelection(data,1) == 1)
678669
{
679670
functionInitialEquations(data);
671+
updateHysteresis(data);
672+
680673
if(stateSelection(data,1) == 1)
681674
{
682675
/* report a warning about strange start values */

0 commit comments

Comments
 (0)