Skip to content

Commit b604146

Browse files
gossenOpenModelica-Hudson
authored andcommitted
Replacing BackendDAE record constructors in DynamicOptimization
1 parent cbf3347 commit b604146

File tree

1 file changed

+33
-36
lines changed

1 file changed

+33
-36
lines changed

Compiler/BackEnd/DynamicOptimization.mo

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -406,22 +406,16 @@ protected function inputDerivativesForDynOptWork "author: "
406406

407407
algorithm
408408

409-
(osyst, outChanged) := matchcontinue(isyst)
409+
(osyst, outChanged) := matchcontinue isyst
410410
local
411-
BackendDAE.Variables orderedVars "ordered Variables, only states and alg. vars";
412411
BackendDAE.EquationArray orderedEqs "ordered Equations";
413-
Option<BackendDAE.IncidenceMatrix> m;
414-
Option<BackendDAE.IncidenceMatrixT> mT;
415-
BackendDAE.Matching matching;
416412
list<DAE.ComponentRef> idercr={}, icr={};
417413
DAE.ComponentRef cr;
418414
String s;
419-
BackendDAE.StateSets stateSets;
420-
BackendDAE.BaseClockPartitionKind partitionKind;
421415
list<BackendDAE.Var> varLst={};
422416
BackendDAE.Variables vars;
423417

424-
case BackendDAE.EQSYSTEM(orderedVars, orderedEqs, _, _, _, stateSets, partitionKind) algorithm
418+
case BackendDAE.EQSYSTEM(orderedEqs=orderedEqs) algorithm
425419
vars := BackendVariable.daeKnVars(outShared);
426420

427421
((_, idercr, icr, varLst)) := BackendDAEUtil.traverseBackendDAEExpsEqnsWithUpdate(orderedEqs, traverserinputDerivativesForDynOpt, (vars, idercr, icr, varLst));
@@ -442,7 +436,7 @@ algorithm
442436
end for;
443437
_ := BackendVariable.daeKnVars(outShared);
444438
//BackendDump.printVariables(vars);
445-
then (BackendDAEUtil.createEqSystem(orderedVars, orderedEqs, stateSets, partitionKind), true);
439+
then (isyst, true);
446440

447441
else (isyst, inChanged);
448442
end matchcontinue;
@@ -577,43 +571,46 @@ algorithm
577571
local
578572
BackendDAE.Variables vars;
579573
BackendDAE.EquationArray eqns;
580-
BackendDAE.StateSets stateSets;
581-
BackendDAE.BaseClockPartitionKind partitionKind;
582-
list<Integer> eindex,vindx;
583-
Integer eindex_,vindx_;
574+
list<Integer> eindex, vindx;
575+
Integer eindex_, vindx_;
584576
BackendDAE.Shared shared;
585577
DAE.Exp e1, e2, varexp;
586578
BackendDAE.Var v;
587579
DAE.ComponentRef cr;
588580
DAE.FunctionTree funcs;
589581
BackendDAE.JacobianType jacType;
582+
BackendDAE.EqSystem syst;
590583
Boolean linear;
591584

592-
case (BackendDAE.EQSYSTEM(orderedVars=vars,orderedEqs=eqns,stateSets=stateSets,partitionKind=partitionKind),shared,(BackendDAE.EQUATIONSYSTEM(eqns=eindex,vars=vindx, jacType=jacType)))
585+
case ( syst as BackendDAE.EQSYSTEM(orderedVars=vars, orderedEqs=eqns), shared,
586+
(BackendDAE.EQUATIONSYSTEM(eqns=eindex, vars=vindx, jacType=jacType)) )
593587
guard l2p_all or (if l2p_l then isConstOrlinear(jacType) else not isConstOrlinear(jacType))
594-
equation
595-
if l2p_l then
596-
end if;
597-
(eqns,vars,shared) = res2Con(eqns, vars, eindex, vindx,shared);
598-
then (BackendDAEUtil.createEqSystem(vars, eqns, stateSets, partitionKind), shared);
588+
algorithm
589+
(eqns, vars, shared) := res2Con(eqns, vars, eindex, vindx, shared);
590+
syst.orderedEqs := eqns; syst.orderedVars := vars;
591+
then (BackendDAEUtil.clearEqSyst(syst), shared);
599592

600-
case (BackendDAE.EQSYSTEM(orderedVars=vars,orderedEqs=eqns,stateSets=stateSets,partitionKind=partitionKind),shared,(BackendDAE.TORNSYSTEM(BackendDAE.TEARINGSET(residualequations=eindex,tearingvars=vindx),linear=linear)))
593+
case ( syst as BackendDAE.EQSYSTEM(orderedVars=vars, orderedEqs=eqns), shared,
594+
(BackendDAE.TORNSYSTEM(BackendDAE.TEARINGSET(residualequations=eindex, tearingvars=vindx), linear=linear)) )
601595
guard l2p_all or (if l2p_l then linear else not linear)
602-
equation
603-
(eqns,vars,shared) = res2Con(eqns, vars, eindex, vindx,shared);
604-
then (BackendDAEUtil.createEqSystem(vars, eqns, stateSets, partitionKind), shared);
605-
606-
case (BackendDAE.EQSYSTEM(orderedVars=vars,orderedEqs=eqns,stateSets=stateSets,partitionKind=partitionKind),shared,BackendDAE.SINGLEEQUATION(eqn=eindex_,var=vindx_))
596+
algorithm
597+
(eqns, vars, shared) := res2Con(eqns, vars, eindex, vindx, shared);
598+
syst.orderedEqs := eqns; syst.orderedVars := vars;
599+
then (BackendDAEUtil.clearEqSyst(syst), shared);
600+
601+
case ( syst as BackendDAE.EQSYSTEM(orderedVars=vars, orderedEqs=eqns),
602+
shared as BackendDAE.SHARED(functionTree = funcs),
603+
BackendDAE.SINGLEEQUATION(eqn=eindex_, var=vindx_) )
607604
guard l2p_all or not l2p_l
608-
equation
609-
BackendDAE.EQUATION(exp=e1, scalar=e2) = BackendEquation.equationNth1(eqns, eindex_);
610-
(v as BackendDAE.VAR(varName = cr)) = BackendVariable.getVarAt(vars, vindx_);
611-
varexp = Expression.crefExp(cr);
612-
varexp = if BackendVariable.isStateVar(v) then Expression.expDer(varexp) else varexp;
613-
BackendDAE.SHARED(functionTree = funcs) = shared;
614-
failure(ExpressionSolve.solve2(e1, e2, varexp, SOME(funcs), NONE()));
615-
(eqns,vars,shared) = res2Con(eqns, vars, {eindex_}, {vindx_},shared);
616-
then (BackendDAEUtil.createEqSystem(vars, eqns, stateSets, partitionKind), shared);
605+
algorithm
606+
BackendDAE.EQUATION(exp=e1, scalar=e2) := BackendEquation.equationNth1(eqns, eindex_);
607+
(v as BackendDAE.VAR(varName = cr)) := BackendVariable.getVarAt(vars, vindx_);
608+
varexp := Expression.crefExp(cr);
609+
varexp := if BackendVariable.isStateVar(v) then Expression.expDer(varexp) else varexp;
610+
failure(ExpressionSolve.solve2(e1, e2, varexp, SOME(funcs), NONE()));
611+
(eqns, vars, shared) := res2Con(eqns, vars, {eindex_}, {vindx_}, shared);
612+
syst.orderedEqs := eqns; syst.orderedVars := vars;
613+
then (BackendDAEUtil.clearEqSyst(syst), shared);
617614

618615

619616
else (isyst,ishared);
@@ -745,7 +742,7 @@ algorithm
745742
BackendDAE.SHARED(functionTree = funcs, knownVars = knownVars) := shared;
746743

747744
for syst in systlst loop
748-
BackendDAE.EQSYSTEM(orderedVars=vars,orderedEqs=eqns,matching=BackendDAE.MATCHING(comps=comps),stateSets=stateSets,partitionKind=partitionKind) := syst;
745+
BackendDAE.EQSYSTEM(orderedVars=vars,orderedEqs=eqns,matching=BackendDAE.MATCHING(comps=comps)) := syst;
749746
b := false;
750747
for comp in comps loop
751748
//BackendDump.dumpComponent(comp);
@@ -866,7 +863,7 @@ algorithm
866863
// remove empty entries from vars/eqns
867864
//vars := BackendVariable.listVar1(BackendVariable.varList(vars));
868865
//eqns := BackendEquation.listEquation(BackendEquation.equationList(eqns));
869-
new_systlst := BackendDAEUtil.createEqSystem(vars, eqns, stateSets, partitionKind) :: new_systlst;
866+
new_systlst := BackendDAEUtil.clearEqSyst(syst) :: new_systlst;
870867
else
871868
new_systlst := syst :: new_systlst;
872869
end if;

0 commit comments

Comments
 (0)