Skip to content

Commit 77ddf9e

Browse files
committed
Fix some ordering of listAppend in SimCodeUtil
1 parent fc73d03 commit 77ddf9e

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

Compiler/SimCode/SimCodeUtil.mo

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ algorithm
302302
// just the algorithms without outputs
303303

304304
algebraicEquations := listAppend(algebraicEquations, removedEquations::{});
305-
allEquations := listAppend(allEquations, removedEquations);
305+
allEquations := List.append_reverse(allEquations, removedEquations);
306306

307307
// state set stuff
308308
(dlow, stateSets, uniqueEqIndex, tempvars, numStateSets) := createStateSets(dlow, {}, uniqueEqIndex, tempvars);
@@ -353,8 +353,8 @@ algorithm
353353
(_, numberofLinearSys, numberofNonLinearSys, numberofMixedSys, numberOfJacobians, SymbolicJacs) := countandIndexAlgebraicLoops({}, numberofLinearSys, numberofNonLinearSys, numberofMixedSys, numberOfJacobians, LinearMatrices);
354354

355355
jacobianEquations := collectAllJacobianEquations(SymbolicJacsStateSelect, jacobianEquations);
356-
SymbolicJacsStateSelect := listAppend(SymbolicJacsStateSelect, SymbolicJacsStateSelectInternal);
357-
SymbolicJacsNLS := listAppend(SymbolicJacsNLS, SymbolicJacsStateSelect);
356+
SymbolicJacsNLS := listAppend(SymbolicJacsStateSelectInternal, SymbolicJacsNLS);
357+
SymbolicJacsNLS := listAppend(SymbolicJacsStateSelect, SymbolicJacsNLS);
358358
SymbolicJacs := listAppend(SymbolicJacsNLS, SymbolicJacs);
359359
jacobianSimvars := collectAllJacobianVars(SymbolicJacs, {});
360360
modelInfo := setJacobianVars(jacobianSimvars, modelInfo);
@@ -1020,8 +1020,8 @@ algorithm
10201020
case ({}, symJac::restSymJacs, _, _, _, _, _, _)
10211021
equation
10221022
(symJac, countLinearSys, countNonLinSys, countMixedSys, countJacobians, symjacs) = countandIndexAlgebraicLoopsSymJac(symJac, inLinearSysIndex, inNonLinSysIndex, inMixedSysIndex, inJacobianIndex);
1023-
symjacs = listAppend(symjacs,inSymJacsAcc);
1024-
(eqs, symjacs, countLinearSys, countNonLinSys, countMixedSys, countJacobians) = countandIndexAlgebraicLoopsWork({}, restSymJacs, countLinearSys, countNonLinSys, countMixedSys, countJacobians, inEqnsAcc, symJac::symjacs);
1023+
symjacs = symJac::listAppend(symjacs,inSymJacsAcc);
1024+
(eqs, symjacs, countLinearSys, countNonLinSys, countMixedSys, countJacobians) = countandIndexAlgebraicLoopsWork({}, restSymJacs, countLinearSys, countNonLinSys, countMixedSys, countJacobians, inEqnsAcc, symjacs);
10251025
then (eqs, symjacs, countLinearSys, countNonLinSys, countMixedSys, countJacobians);
10261026

10271027
// No dynamic tearing
@@ -1204,6 +1204,7 @@ algorithm
12041204
foldArg := (iuniqueEqIndex, {}, {}, {}, {}, itempvars, {}, {}, iBackendMapping, iSccOffset);
12051205
(ouniqueEqIndex, oodeEquations, oalgebraicEquations, oallEquations, oequationsForZeroCrossings, otempvars,
12061206
oeqSccMapping, oeqBackendSimCodeMapping, obackendMapping, oSccOffset) := List.fold1(inSysts, createEquationsForSystems1, arg, foldArg);
1207+
oequationsForZeroCrossings := Dangerous.listReverseInPlace(oequationsForZeroCrossings);
12071208
end createEquationsForSystems;
12081209

12091210
protected function createEquationsForSystems1
@@ -1251,8 +1252,8 @@ algorithm
12511252

12521253
odeEquations = List.consOnTrue(not listEmpty(odeEquations1), odeEquations1, odeEquations);
12531254
algebraicEquations = List.consOnTrue(not listEmpty(algebraicEquations1), algebraicEquations1, algebraicEquations);
1254-
allEquations = listAppend(allEquations, allEquations1);
1255-
equationsForZeroCrossings = listAppend(equationsForZeroCrossings, equationsForZeroCrossings1);
1255+
allEquations = List.append_reverse(allEquations1, allEquations);
1256+
equationsForZeroCrossings = List.append_reverse(equationsForZeroCrossings1, equationsForZeroCrossings);
12561257

12571258
then ( uniqueEqIndex, odeEquations, algebraicEquations, allEquations, equationsForZeroCrossings, tempvars,
12581259
eqSccMapping, eqBackendSimCodeMapping, backendMapping, listLength(comps) + sccOffset );
@@ -5217,25 +5218,27 @@ protected
52175218
BackendDAE.EquationArray removedEqs;
52185219
list<SimCodeVar.SimVar> tempvars;
52195220
Integer uniqueEqIndex;
5220-
list<SimCode.SimEqSystem> allEquations, solvedEquations, removedEquations, aliasEquations, removedInitialEquations;
5221+
list<SimCode.SimEqSystem> allEquations, knownVarEquations, solvedEquations, removedEquations, aliasEquations, removedInitialEquations;
52215222
BackendDAE.EqSystems systs;
52225223
BackendDAE.Shared shared;
52235224
BackendDAE.Variables knvars, aliasVars;
52245225
algorithm
52255226
BackendDAE.DAE(systs, shared as BackendDAE.SHARED(knownVars=knvars, aliasVars=aliasVars)) := inInitDAE;
52265227
removedEqs := BackendDAEUtil.collapseRemovedEqs(inInitDAE);
52275228
// generate equations from the known unfixed variables
5228-
((uniqueEqIndex, allEquations)) := BackendVariable.traverseBackendDAEVars(knvars, traverseKnVarsToSimEqSystem, (iuniqueEqIndex, {}));
5229+
((uniqueEqIndex, knownVarEquations)) := BackendVariable.traverseBackendDAEVars(knvars, traverseKnVarsToSimEqSystem, (iuniqueEqIndex, {}));
52295230
// generate equations from the solved systems
52305231
(uniqueEqIndex, _, _, solvedEquations, _, tempvars, _, _, _, _) :=
52315232
createEquationsForSystems(systs, shared, uniqueEqIndex, {}, itempvars, 0, SimCode.NO_MAPPING());
5232-
allEquations := listAppend(allEquations, solvedEquations);
52335233
// generate equations from the removed equations
52345234
((uniqueEqIndex, removedEquations)) := BackendEquation.traverseEquationArray(removedEqs, traversedlowEqToSimEqSystem, (uniqueEqIndex, {}));
5235-
allEquations := listAppend(allEquations, removedEquations);
52365235
// generate equations from the alias variables
52375236
((uniqueEqIndex, aliasEquations)) := BackendVariable.traverseBackendDAEVars(aliasVars, traverseAliasVarsToSimEqSystem, (uniqueEqIndex, {}));
5238-
allEquations := listAppend(allEquations, aliasEquations);
5237+
5238+
allEquations := Dangerous.listReverseInPlace(aliasEquations);
5239+
allEquations := listAppend(removedEquations, allEquations);
5240+
allEquations := List.append_reverse(solvedEquations, allEquations);
5241+
allEquations := listAppend(knownVarEquations, allEquations);
52395242

52405243
// generate equations from removed initial equations
52415244
(removedInitialEquations, uniqueEqIndex, tempvars) := createNonlinearResidualEquations(inRemovedEqnLst, uniqueEqIndex, tempvars);
@@ -5257,22 +5260,22 @@ protected function createInitialEquations_lambda0 "author: lochel"
52575260
protected
52585261
list<SimCodeVar.SimVar> tempvars;
52595262
Integer uniqueEqIndex;
5260-
list<SimCode.SimEqSystem> allEquations, solvedEquations, aliasEquations;
5263+
list<SimCode.SimEqSystem> allEquations, knownEquations, solvedEquations, aliasEquations;
52615264
BackendDAE.EqSystems systs;
52625265
BackendDAE.Shared shared;
52635266
BackendDAE.Variables knvars, aliasVars;
52645267
algorithm
52655268
BackendDAE.DAE(systs, shared as BackendDAE.SHARED(knownVars=knvars, aliasVars=aliasVars)) := inInitDAE;
52665269

52675270
// generate equations from the known unfixed variables
5268-
((uniqueEqIndex, allEquations)) := BackendVariable.traverseBackendDAEVars(knvars, traverseKnVarsToSimEqSystem, (iuniqueEqIndex, {}));
5271+
((uniqueEqIndex, knownEquations)) := BackendVariable.traverseBackendDAEVars(knvars, traverseKnVarsToSimEqSystem, (iuniqueEqIndex, {}));
52695272
// generate equations from the solved systems
52705273
(uniqueEqIndex, _, _, solvedEquations, _, tempvars, _, _, _, _) :=
52715274
createEquationsForSystems(systs, shared, uniqueEqIndex, {}, itempvars, 0, SimCode.NO_MAPPING());
5272-
allEquations := listAppend(allEquations, solvedEquations);
52735275
// generate equations from the alias variables
52745276
((uniqueEqIndex, aliasEquations)) := BackendVariable.traverseBackendDAEVars(aliasVars, traverseAliasVarsToSimEqSystem, (uniqueEqIndex, {}));
5275-
allEquations := listAppend(allEquations, aliasEquations);
5277+
allEquations := List.append_reverse(solvedEquations, aliasEquations);
5278+
allEquations := listAppend(knownEquations, allEquations);
52765279

52775280
// output
52785281
outInitialEqns := allEquations;

0 commit comments

Comments
 (0)