@@ -277,8 +277,9 @@ algorithm
277277 guard(Util . boolAndList(list(CommonSubExpression . isCSECref(v. varName) for v in vars)) and not listEmpty(varIdxs))
278278 equation
279279 newResVars = list(BackendVariable . setVarKind(v, BackendDAE . DAE_AUX_VAR ()) for v in vars);
280+ new_eq = BackendEquation . setEquationAttributes(eq, BackendDAE . EQ_ATTR_DEFAULT_AUX );
280281 traverserArgs. auxVars = listAppend(newResVars, traverserArgs. auxVars);
281- traverserArgs. auxEqns = listAppend({eq }, traverserArgs. auxEqns);
282+ traverserArgs. auxEqns = listAppend({new_eq }, traverserArgs. auxEqns);
282283 crlst = list(v. varName for v in vars);
283284 traverserArgs. systemVars = BackendVariable . removeCrefs(crlst, traverserArgs. systemVars);
284285 if debug then print("[DAEmode] Added solved aux vars. vars: \n " +
@@ -293,6 +294,7 @@ algorithm
293294 equation
294295 eq. exp = ExpressionSolve . solve(eq. exp, eq. scalar, Expression . crefExp(var . varName));
295296 new_eq = BackendDAE . SOLVED_EQUATION (var . varName, eq. exp, eq. source, eq. attr);
297+ new_eq = BackendEquation . setEquationAttributes(new_eq, BackendDAE . EQ_ATTR_DEFAULT_AUX );
296298 traverserArgs. auxVars = listAppend({var }, traverserArgs. auxVars);
297299 traverserArgs. auxEqns = listAppend({new_eq}, traverserArgs. auxEqns);
298300 if debug then print("[DAEmode] Create solved equation. vars: \n " +
@@ -305,11 +307,24 @@ algorithm
305307 guard (not listEmpty(varIdxs) and // not inside of EQNS_SYSTEM possible solveable
306308 not Util . boolOrList(list(BackendVariable . isStateVar(v) for v in vars)))
307309 equation
310+ new_eq = BackendEquation . setEquationAttributes(eq, BackendDAE . EQ_ATTR_DEFAULT_AUX );
308311 traverserArgs. auxVars = listAppend(vars, traverserArgs. auxVars);
309- traverserArgs. auxEqns = listAppend({eq }, traverserArgs. auxEqns);
312+ traverserArgs. auxEqns = listAppend({new_eq }, traverserArgs. auxEqns);
310313 if debug then print("[DAEmode] Create solved complex equation. vars: \n " +
311314 BackendDump . varListString(vars, "" ) + "eq: \n " +
312- BackendDump . equationListString({eq}, "" ) + " \n " ); end if ;
315+ BackendDump . equationListString({new_eq}, "" ) + " \n " ); end if ;
316+ then
317+ (traverserArgs);
318+
319+ case ({eq as BackendDAE . WHEN_EQUATION ()}, {var })
320+ guard (not listEmpty(varIdxs)) // not inside of EQNS_SYSTEM possible solveable
321+ equation
322+ new_eq = BackendEquation . setEquationAttributes(eq, BackendDAE . EQ_ATTR_DEFAULT_DISCRETE );
323+ traverserArgs. auxVars = listAppend({var }, traverserArgs. auxVars);
324+ traverserArgs. auxEqns = listAppend({new_eq}, traverserArgs. auxEqns);
325+ if debug then print("[DAEmode] Create solved when equation. vars: \n " +
326+ BackendDump . varListString({var }, "" ) + "eq: \n " +
327+ BackendDump . equationListString({new_eq}, "" ) + " \n " ); end if ;
313328 then
314329 (traverserArgs);
315330
@@ -324,6 +339,7 @@ algorithm
324339 (newResEqns, newResVars, newnumResVars) = BackendEquation . convertResidualsIntoSolvedEquations(newResEqns,
325340 "$DAEres" , dummyVar, globalDAEData. numResVars);
326341 globalDAEData. numResVars = newnumResVars;
342+ newResEqns = list(BackendEquation . setEquationAttributes(e, BackendDAE . EQ_ATTR_DEFAULT_DYNAMIC ) for e in newResEqns);
327343 traverserArgs. resVars = listAppend(newResVars, traverserArgs. resVars);
328344 traverserArgs. resEqns = listAppend(newResEqns, traverserArgs. resEqns);
329345 globalDAEData = addVarsGlobalData(globalDAEData, vars);
@@ -357,6 +373,8 @@ algorithm
357373 newCref = ComponentReference . crefPrefixAux(cref);
358374 eq. left = Expression . crefExp(newCref);
359375 aux_eq = eq;
376+
377+ aux_eq = BackendEquation . setEquationAttributes(aux_eq, BackendDAE . EQ_ATTR_DEFAULT_AUX );
360378 traverserArgs. auxEqns = listAppend({aux_eq}, traverserArgs. auxEqns);
361379
362380 // prepare res equation aux = recordCref
@@ -369,6 +387,7 @@ algorithm
369387 (newResEqns, newResVars, newnumResVars) = BackendEquation . convertResidualsIntoSolvedEquations(newResEqns,
370388 "$DAEres" , dummyVar, globalDAEData. numResVars);
371389 globalDAEData. numResVars = newnumResVars;
390+ newResEqns = list(BackendEquation . setEquationAttributes(e, BackendDAE . EQ_ATTR_DEFAULT_DYNAMIC ) for e in newResEqns);
372391 traverserArgs. resVars = listAppend(listReverse(newResVars), traverserArgs. resVars);
373392 traverserArgs. resEqns = listAppend(listReverse(newResEqns), traverserArgs. resEqns);
374393 globalDAEData = addVarsGlobalData(globalDAEData, vars);
@@ -383,7 +402,7 @@ algorithm
383402 (traverserArgs);
384403
385404 case (_, _)
386- guard( listLength(inVars) == listLength(inEqns))
405+ guard( listLength(inVars) == listLength(inEqns) and not listEmpty(varIdxs) )
387406 algorithm
388407 vars := inVars;
389408 for e in inEqns loop
0 commit comments