@@ -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);
12071208end createEquationsForSystems;
12081209
12091210protected 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;
52245225algorithm
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"
52575260protected
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;
52645267algorithm
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