@@ -65,10 +65,12 @@ import ExpressionDump;
6565import ExpressionSimplify ;
6666import Flags ;
6767import GC ;
68+ import IndexReduction ;
6869import List ;
6970import Matching ;
7071import MetaModelica.Dangerous ;
7172import Sorting ;
73+ import SymbolicJacobian ;
7274
7375// =============================================================================
7476// section for all public functions
@@ -154,8 +156,8 @@ algorithm
154156 datarecon := true ;
155157 end if ;
156158 ((vars, fixvars, eqns, _)) := BackendVariable . traverseBackendDAEVars(dae. shared . aliasVars, introducePreVarsForAliasVariables, (vars, fixvars, eqns, hs));
157- ((vars, fixvars, eqns, _, _, _)) := BackendVariable . traverseBackendDAEVars(dae. shared . globalKnownVars, collectInitialVars, (vars, fixvars, eqns, hs, allPrimaryParameters,datarecon));
158- ((vars, fixvars, eqns, _, _, _)) := BackendVariable . traverseBackendDAEVars(dae. shared . localKnownVars, collectInitialVars, (vars, fixvars, eqns, hs, allPrimaryParameters,datarecon));
159+ ((vars, fixvars, eqns, _, _, _, _ )) := BackendVariable . traverseBackendDAEVars(dae. shared . globalKnownVars, collectInitialVars, (vars, fixvars, eqns, arrayCreate( 0 , 0 ) , hs, allPrimaryParameters,datarecon));
160+ ((vars, fixvars, eqns, _, _, _, _ )) := BackendVariable . traverseBackendDAEVars(dae. shared . localKnownVars, collectInitialVars, (vars, fixvars, eqns, arrayCreate( 0 , 0 ) , hs, allPrimaryParameters,datarecon));
159161 ((eqns, reeqns)) := BackendEquation . traverseEquationArray(dae. shared . initialEqs, collectInitialEqns, (eqns, reeqns));
160162 ((eqns, reeqns)) := BackendEquation . traverseEquationArray(dae. shared . removedEqs, collectInitialEqns, (eqns, reeqns));
161163 // if Flags.isSet(Flags.DUMP_INITIAL_SYSTEM) then
@@ -2065,6 +2067,8 @@ protected function collectInitialVarsEqnsSystem
20652067 input HashSet . HashSet hs;
20662068 input AvlSetCR . Tree allPrimaryParams;
20672069 input Boolean datareconFlag;
2070+ protected
2071+ array< Integer > stateSetFixCounts;
20682072algorithm
20692073 for eq in eqSystems loop
20702074 () := match eq
@@ -2077,28 +2081,112 @@ algorithm
20772081
20782082 else
20792083 algorithm
2080- (vars, fixVars, eqns, _, _, _) := BackendVariable . traverseBackendDAEVars(eq. orderedVars,
2081- collectInitialVars, (vars, fixVars, eqns, hs, allPrimaryParams, datareconFlag));
2084+ stateSetFixCounts := arrayCreate(listLength(eq. stateSets), 0 );
2085+ (vars, fixVars, eqns, stateSetFixCounts, _, _, _) := BackendVariable . traverseBackendDAEVars(eq. orderedVars,
2086+ collectInitialVars, (vars, fixVars, eqns, stateSetFixCounts, hs, allPrimaryParams, datareconFlag));
20822087 (eqns, reEqns) := BackendEquation . traverseEquationArray(eq. orderedEqs, collectInitialEqns, (eqns, reEqns));
2088+ if Flags . getConfigBool(Flags . INITIAL_STATE_SELECTION ) then
2089+ (vars, eqns) := collectInitialStateSets(eq. stateSets, stateSetFixCounts, vars, eqns);
2090+ end if ;
2091+ GC . free(stateSetFixCounts);
20832092 then
20842093 ();
20852094 end match;
20862095 end for ;
20872096end collectInitialVarsEqnsSystem;
20882097
2098+ protected function collectInitialStateSets "author: kabdelhak
2099+ This function collects all information from stateSets for the initial system.
2100+ TODO: Implement better algorithm for stateSets which are not selfdependent."
2101+ input BackendDAE . StateSets stateSets;
2102+ input array< Integer > stateSetFixCounts;
2103+ input BackendDAE . Variables iVars;
2104+ input BackendDAE . EquationArray iEqns;
2105+ output BackendDAE . Variables oVars;
2106+ output BackendDAE . EquationArray oEqns;
2107+
2108+ protected
2109+ BackendDAE . StateSet stateSet;
2110+ BackendDAE . Equation eqn, Feqn , initEqn;
2111+ DAE . Exp lhs, rhs, exp, expcrF, expInitset, mulFstates;
2112+ list< DAE . Exp > expLst = {}, expcrstates, expcrInitset;
2113+ list< DAE . ComponentRef > crLst, crInitSet;
2114+ DAE . ComponentRef set, crF, crInitStates;
2115+ BackendDAE . Var var , fixState;
2116+ list< BackendDAE . Var > statesToFix = {}, unfixedStates = {}, VarsF , oInitSetVars;
2117+ DAE . Type tp, tyExpCrStates;
2118+ Integer toFix, setsize, nCandidates;
2119+ Boolean b;
2120+ DAE . Operator op;
2121+ DAE . ElementSource source;
2122+ algorithm
2123+ (oVars, oEqns) := (iVars, iEqns);
2124+ for stateSet in stateSets loop
2125+ oVars := BackendVariable . addVars(stateSet. varA, oVars);
2126+ lhs := Expression . crefToExp(stateSet. crA);
2127+
2128+ expLst:= {};
2129+
2130+ crLst := SymbolicJacobian . getJacobianDependencies(stateSet. jacobian);
2131+ expLst := list(Expression . crefToExp(cr) for cr in crLst);
2132+ expLst := DAE . ICONST (integer= stateSet. index- 1 )::expLst;
2133+
2134+ rhs := DAE . CALL (path= Absyn . IDENT (name= "$stateSelectionSet" ),expLst= expLst,attr= DAE . callAttrBuiltinOther);
2135+ eqn := BackendDAE . ARRAY_EQUATION (dimSize= {listLength(stateSet. varA)}, left= lhs, right= rhs,source= DAE . emptyElementSource,attr= BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2136+ oEqns := ExpandableArray . add(eqn,oEqns);
2137+
2138+ if Flags . isSet(Flags . BLT_DUMP ) or Flags . isSet(Flags . INITIALIZATION ) then
2139+ BackendDump . dumpEquationList({eqn}, "initial state selection equation generated:" );
2140+ end if ;
2141+
2142+ if arrayLength(stateSetFixCounts) >= stateSet. index and arrayGet(stateSetFixCounts,stateSet. index) > 0 then
2143+ unfixedStates := {};
2144+ for state in stateSet. statescandidates loop
2145+ if not BackendVariable . varFixed(state) then
2146+ unfixedStates := state::unfixedStates;
2147+ end if ;
2148+ end for ;
2149+ toFix := arrayGet(stateSetFixCounts,stateSet. index);
2150+ statesToFix := {};
2151+
2152+ // ToDo: If selfdependent -> heuristic, if not -> add new vars and write new pivot algorithm c
2153+ // if IndexReduction.isSelfDependent(stateSet) then
2154+ statesToFix := SymbolicJacobian . getFixedStatesForSelfdependentSets(stateSet,unfixedStates,toFix);
2155+
2156+ // oVars := BackendVariable.addVars(statesToFix, oVars);
2157+ // oFixVars := BackendVariable.addVars(statesToFix, oFixVars);
2158+ for state in statesToFix loop
2159+ lhs := Expression . crefToExp(state. varName);
2160+ rhs := IndexReduction . makeStartExp(state. varName);
2161+ initEqn := BackendDAE . EQUATION (exp= lhs,scalar= rhs,source= DAE . emptyElementSource,attr= BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2162+ oEqns := ExpandableArray . add(initEqn,oEqns);
2163+ end for ;
2164+
2165+ if Flags . isSet(Flags . BLT_DUMP ) or Flags . isSet(Flags . INITIALIZATION ) then
2166+ print("StateSet " + intString(stateSet. index) + " is underconstraint for the initial system. \n " );
2167+ print("====================================== \n " );
2168+ print("# States left to fix: " + intString(toFix) + ". \n " );
2169+ print("# Unfixed candidates: " + intString(listLength(stateSet. statescandidates)- toFix) + ". \n " );
2170+ BackendDump . dumpVarList(statesToFix, "Chosen states to fix:" );
2171+ end if ;
2172+ end if ;
2173+ end for ;
2174+ end collectInitialStateSets;
2175+
20892176protected function collectInitialVars "author: lochel
20902177 This function collects all the vars for the initial system.
20912178 TODO: return additional equations for pre-variables"
20922179 input BackendDAE . Var inVar;
2093- input tuple< BackendDAE . Variables , BackendDAE . Variables , BackendDAE . EquationArray , HashSet . HashSet , AvlSetCR . Tree , Boolean > inTpl;
2180+ input tuple< BackendDAE . Variables , BackendDAE . Variables , BackendDAE . EquationArray , array < Integer > , HashSet . HashSet , AvlSetCR . Tree , Boolean > inTpl;
20942181 output BackendDAE . Var outVar;
2095- output tuple< BackendDAE . Variables , BackendDAE . Variables , BackendDAE . EquationArray , HashSet . HashSet , AvlSetCR . Tree , Boolean > outTpl;
2182+ output tuple< BackendDAE . Variables , BackendDAE . Variables , BackendDAE . EquationArray , array < Integer > , HashSet . HashSet , AvlSetCR . Tree , Boolean > outTpl;
20962183algorithm
20972184 (outVar, outTpl) := matchcontinue (inVar, inTpl)
20982185 local
20992186 BackendDAE . Var var , preVar, derVar, startVar;
21002187 BackendDAE . Variables vars, fixvars;
21012188 BackendDAE . EquationArray eqns;
2189+ array< Integer > stateSetFixCounts;
21022190 BackendDAE . Equation eqn;
21032191 DAE . ComponentRef cr, preCR, derCR, startCR;
21042192 Boolean isFixed, isInput, b, preUsed, datarecon;
@@ -2109,13 +2197,15 @@ algorithm
21092197 DAE . Exp startExp, bindExp, crefExp, e;
21102198 BackendDAE . VarKind varKind;
21112199 HashSet . HashSet hs;
2112- String s, str, sv;
2200+ String s, str, sv, stateSetIdxString;
2201+ list< String > stateSetSplit;
2202+ Integer stateSetIdx;
21132203 SourceInfo info;
21142204 AvlSetCR . Tree allPrimaryParameters;
21152205 list< DAE . ComponentRef > parameters;
21162206
21172207 // state
2118- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . STATE (), varType= ty), (vars, fixvars, eqns, hs, allPrimaryParameters,datarecon)) equation
2208+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . STATE (), varType= ty), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters,datarecon)) equation
21192209 isFixed = BackendVariable . varFixed(var );
21202210 // _ = BackendVariable.varStartValueOption(var);
21212211 preUsed = BaseHashSet . has(cr, hs);
@@ -2141,8 +2231,17 @@ algorithm
21412231 end if ;
21422232
21432233 if isFixed then
2144- eqn = BackendDAE . EQUATION (crefExp, Expression . crefExp(startCR), DAE . emptyElementSource, BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2145- eqns = BackendEquation . add(eqn, eqns);
2234+ // Special case for initial state selection
2235+ if Util . stringStartsWith("$STATESET" ,ComponentReference . crefFirstIdent(cr)) and Flags . getConfigBool(Flags . INITIAL_STATE_SELECTION ) then
2236+ stateSetSplit = Util . stringSplitAtChar(ComponentReference . crefFirstIdent(cr),"." );
2237+ stateSetIdxString::stateSetSplit = stateSetSplit;
2238+ stateSetIdxString = substring(stateSetIdxString,10 ,stringLength(stateSetIdxString));
2239+ stateSetIdx = stringInt(stateSetIdxString);
2240+ arrayUpdate(stateSetFixCounts, stateSetIdx, arrayGet(stateSetFixCounts, stateSetIdx) + 1 );
2241+ else
2242+ eqn = BackendDAE . EQUATION (crefExp, Expression . crefExp(startCR), DAE . emptyElementSource, BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2243+ eqns = BackendEquation . add(eqn, eqns);
2244+ end if ;
21462245 end if ;
21472246
21482247 var = BackendVariable . setVarKind(var , BackendDAE . VARIABLE ());
@@ -2165,10 +2264,10 @@ algorithm
21652264 vars = BackendVariable . addVar(var , vars);
21662265 vars = if preUsed then BackendVariable . addVar(preVar, vars) else vars;
21672266 eqns = if preUsed then BackendEquation . add(eqn, eqns) else eqns;
2168- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2267+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
21692268
21702269 // discrete (preUsed=true)
2171- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . DISCRETE (), varType= ty), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2270+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . DISCRETE (), varType= ty), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
21722271 true = BaseHashSet . has(cr, hs);
21732272 true = BackendVariable . varFixed(var );
21742273 startValue_ = BackendVariable . varStartValue(var );
@@ -2187,10 +2286,10 @@ algorithm
21872286 vars = BackendVariable . addVar(var , vars);
21882287 vars = BackendVariable . addVar(preVar, vars);
21892288 eqns = BackendEquation . add(eqn, eqns);
2190- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2289+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
21912290
21922291 // discrete
2193- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . DISCRETE ()), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2292+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . DISCRETE ()), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
21942293 preUsed = BaseHashSet . has(cr, hs);
21952294 startValue = BackendVariable . varStartValueOption(var );
21962295
@@ -2205,10 +2304,10 @@ algorithm
22052304
22062305 vars = BackendVariable . addVar(var , vars);
22072306 vars = if preUsed then BackendVariable . addVar(preVar, vars) else vars;
2208- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2307+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22092308
22102309 // parameter without binding and fixed=true
2211- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= NONE ()), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2310+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= NONE ()), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22122311 true = BackendVariable . varFixed(var );
22132312 startExp = BackendVariable . varStartValueType(var );
22142313
@@ -2227,10 +2326,10 @@ algorithm
22272326 Error . addSourceMessage(Error . UNBOUND_PARAMETER_WITH_START_VALUE_WARNING , {s, str}, info);
22282327
22292328 // vars = BackendVariable.addVar(var, vars);
2230- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2329+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22312330
22322331 // parameter with binding and fixed=false
2233- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp), varType= ty), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2332+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp), varType= ty), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22342333 true = intGt(Flags . getConfigEnum(Flags . LANGUAGE_STANDARD ), 31 );
22352334 false = BackendVariable . varFixed(var );
22362335 var = BackendVariable . setVarKind(var , BackendDAE . VARIABLE ());
@@ -2245,12 +2344,12 @@ algorithm
22452344 eqns = BackendEquation . add(eqn, eqns);
22462345
22472346 vars = BackendVariable . addVar(var , vars);
2248- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2347+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22492348
22502349 // *** MODELICA 3.1 COMPATIBLE ***
22512350 // parameter with binding and fixed=false and no start value
22522351 // use the binding as start value
2253- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp)), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2352+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp)), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22542353 true = intLe(Flags . getConfigEnum(Flags . LANGUAGE_STANDARD ), 31 );
22552354 false = BackendVariable . varFixed(var );
22562355 var = BackendVariable . setVarKind(var , BackendDAE . VARIABLE ());
@@ -2264,12 +2363,12 @@ algorithm
22642363 Error . addSourceMessage(Error . UNFIXED_PARAMETER_WITH_BINDING_31 , {s, s, str}, info);
22652364
22662365 vars = BackendVariable . addVar(var , vars);
2267- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2366+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22682367
22692368 // *** MODELICA 3.1 COMPATIBLE ***
22702369 // parameter with binding and fixed=false and a start value
22712370 // ignore the binding and use the start value
2272- case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp)), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2371+ case (var as BackendDAE . VAR (varName= cr, varKind= BackendDAE . PARAM (), bindExp= SOME (bindExp)), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22732372 true = intLe(Flags . getConfigEnum(Flags . LANGUAGE_STANDARD ), 31 );
22742373 false = BackendVariable . varFixed(var );
22752374 var = BackendVariable . setVarKind(var , BackendDAE . VARIABLE ());
@@ -2283,21 +2382,21 @@ algorithm
22832382 Error . addSourceMessage(Error . UNFIXED_PARAMETER_WITH_BINDING_AND_START_VALUE_31 , {s, sv, s, str}, info);
22842383
22852384 vars = BackendVariable . addVar(var , vars);
2286- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2385+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22872386
22882387 // secondary parameter
2289- case (var as BackendDAE . VAR (varKind= BackendDAE . PARAM ()), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2388+ case (var as BackendDAE . VAR (varKind= BackendDAE . PARAM ()), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22902389 // true = BackendVariable.varFixed(var);
22912390 var = BackendVariable . setVarKind(var , BackendDAE . VARIABLE ());
22922391 vars = BackendVariable . addVar(var , vars);
2293- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2392+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
22942393
22952394 // external objects
2296- case (var as BackendDAE . VAR (varKind= BackendDAE . EXTOBJ ()), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2395+ case (var as BackendDAE . VAR (varKind= BackendDAE . EXTOBJ ()), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
22972396 // var = BackendVariable.setVarFixed(var, false);
22982397 // var = BackendVariable.setVarKind(var, BackendDAE.VARIABLE());
22992398 vars = BackendVariable . addVar(var , vars);
2300- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2399+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
23012400
23022401 // skip constant
23032402 case (var as BackendDAE . VAR (varKind= BackendDAE . CONST ()), _) // equation
@@ -2306,7 +2405,7 @@ algorithm
23062405
23072406 // VARIABLE (fixed=true)
23082407 // DUMMY_STATE
2309- case (var as BackendDAE . VAR (varName= cr, varType= ty), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2408+ case (var as BackendDAE . VAR (varName= cr, varType= ty), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
23102409 true = BackendVariable . varFixed(var );
23112410 // check if dataReconciliation is present and set the Input variables to true, as Qualified components are not handled as toplevel inputs
23122411 if datarecon then
@@ -2352,11 +2451,11 @@ algorithm
23522451 eqns = BackendEquation . add(eqn, eqns);
23532452
23542453 // Error.addCompilerNotification("VARIABLE (fixed=true): " + BackendDump.varString(var));
2355- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2454+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
23562455
23572456 // VARIABLE (fixed=false)
23582457 // DUMMY_STATE
2359- case (var as BackendDAE . VAR (varName= cr, varType= ty), (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon)) equation
2458+ case (var as BackendDAE . VAR (varName= cr, varType= ty), (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon)) equation
23602459 false = BackendVariable . varFixed(var );
23612460 // check if dataReconciliation is present and set the Input variables to true, as Qualified components are not handled as toplevel inputs
23622461 if datarecon then
@@ -2378,12 +2477,12 @@ algorithm
23782477 startExp = BackendVariable . varStartValue(var );
23792478 parameters = Expression . getAllCrefs(startExp);
23802479
2381- if not min(AvlSetCR . hasKey(allPrimaryParameters, p) for p in parameters) then
2382- eqn = BackendDAE . EQUATION (Expression . crefExp(startCR), startExp, DAE . emptyElementSource, BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2383- eqns = BackendEquation . add(eqn, eqns);
2480+ if not min(AvlSetCR . hasKey(allPrimaryParameters, p) for p in parameters) then
2481+ eqn = BackendDAE . EQUATION (Expression . crefExp(startCR), startExp, DAE . emptyElementSource, BackendDAE . EQ_ATTR_DEFAULT_INITIAL );
2482+ eqns = BackendEquation . add(eqn, eqns);
23842483
23852484 vars = BackendVariable . addVar(startVar, vars);
2386- end if ;
2485+ end if ;
23872486
23882487 preCR = ComponentReference . crefPrefixPre(cr); // cr => $PRE.cr
23892488 preVar = BackendVariable . copyVarNewName(preCR, var );
@@ -2400,7 +2499,7 @@ algorithm
24002499 eqns = if preUsed then BackendEquation . add(eqn, eqns) else eqns;
24012500
24022501 // Error.addCompilerNotification("VARIABLE (fixed=false); " + BackendDump.varString(var));
2403- then (var , (vars, fixvars, eqns, hs, allPrimaryParameters, datarecon));
2502+ then (var , (vars, fixvars, eqns, stateSetFixCounts, hs, allPrimaryParameters, datarecon));
24042503
24052504 else equation
24062505 Error . addInternalError("function collectInitialVars failed for: " + BackendDump . varString(inVar), sourceInfo());
0 commit comments