Skip to content

Commit

Permalink
- bugfix dynamic state selection, start value for A Matrix
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14514 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Jens Frenkel committed Dec 22, 2012
1 parent d848adb commit 0090f58
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions Compiler/BackEnd/IndexReduction.mo
Original file line number Diff line number Diff line change
Expand Up @@ -6113,7 +6113,7 @@ algorithm
oAVars := List.map1(oAVars,BackendVariable.setVarFixed,true);
// add start value A[i,j] = if i==j then 1 else 0 via initial equations
oAVars := List.map1(oAVars,BackendVariable.setVarStartValue,DAE.ICONST(0));
oAVars := setSetAStart(oAVars,1,nStates,{});
oAVars := setSetAStart(oAVars,1,1,nStates,{});
tp := Util.if_(intGt(nCEqns,1),DAE.T_ARRAY(DAE.T_REAL_DEFAULT,{DAE.DIM_INTEGER(nCEqns)}, DAE.emptyTypeSource),DAE.T_REAL_DEFAULT);
ocrJ := ComponentReference.joinCrefs(set,ComponentReference.makeCrefIdent("J",tp,{}));
oJVars := generateArrayVar(ocrJ,BackendDAE.VARIABLE(),tp,NONE());
Expand All @@ -6124,24 +6124,26 @@ end getSetVars;
protected function setSetAStart
input list<BackendDAE.Var> iVars;
input Integer n;
input Integer r;
input Integer nStates;
input list<BackendDAE.Var> iAcc;
output list<BackendDAE.Var> oAcc;
algorithm
oAcc := match(iVars,n,nStates,iAcc)
oAcc := match(iVars,n,r,nStates,iAcc)
local
BackendDAE.Var v;
list<BackendDAE.Var> rest;
Integer n1;
Integer n1,r1;
DAE.Exp start;
case({},_,_,_) then listReverse(iAcc);
case(v::rest,_,_,_)
case({},_,_,_,_) then listReverse(iAcc);
case(v::rest,_,_,_,_)
equation
start = Util.if_(intEq(n,1),DAE.ICONST(1),DAE.ICONST(0));
start = Util.if_(intEq(n,r),DAE.ICONST(1),DAE.ICONST(0));
v = BackendVariable.setVarStartValue(v,start);
n1 = Util.if_(intEq(n,nStates),1,n+1);
r1 = Util.if_(intEq(n,nStates),r+1,r);
then
setSetAStart(rest,n1,nStates,v::iAcc);
setSetAStart(rest,n1,r1,nStates,v::iAcc);
end match;
end setSetAStart;
/*
Expand Down

0 comments on commit 0090f58

Please sign in to comment.