Skip to content

Commit

Permalink
- bugfix for use assigments from SingularSystemCheck
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14921 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Jens Frenkel committed Jan 24, 2013
1 parent 021b098 commit 4d47da8
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
2 changes: 1 addition & 1 deletion Compiler/BackEnd/BackendDAEUtil.mo
Original file line number Diff line number Diff line change
Expand Up @@ -8129,7 +8129,7 @@ algorithm
neqns = systemSize(syst);
syst = Causalize.singularSystemCheck(nvars,neqns,syst,match_opts,matchingAlgorithm,arg,ishared);
// match the system and reduce index if neccessary
(syst,shared,arg) = matchingAlgorithmfunc(syst, ishared, true, match_opts, sssHandler, arg);
(syst,shared,arg) = matchingAlgorithmfunc(syst, ishared, false, match_opts, sssHandler, arg);
Debug.execStat("transformDAE -> matchingAlgorithm " +& mAmethodstr +& " index Reduction Method " +& str1,CevalScript.RT_CLOCK_EXECSTAT_BACKEND_MODULES);
then (syst,shared,SOME(arg));
case (_,_,_,(_,mAmethodstr),(_,str1,_,_))
Expand Down
30 changes: 15 additions & 15 deletions Compiler/BackEnd/Matching.mo
Original file line number Diff line number Diff line change
Expand Up @@ -4449,7 +4449,7 @@ algorithm
outUnMatched := match(algorithmid,nv,ne,m,mT,ass1,ass2,intRangeUsed)
case(1,_,_,_,_,_,_,_) then cheapmatching(1,nv,ne,m,mT,ass1,ass2,{});
case(3,_,_,_,_,_,_,_) then ks_rand_cheapmatching(nv,ne,m,mT,ass1,ass2);
case(_,_,_,_,_,_,_,true) then List.intRange(ne);
case(_,_,_,_,_,_,_,true) then getUnassigned(ne, ass1, {});
else then {};
end match;
end cheapmatchingalgorithm1;
Expand Down Expand Up @@ -4963,7 +4963,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,1,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5015,7 +5015,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,2,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5067,7 +5067,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,3,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5119,7 +5119,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,4,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5171,7 +5171,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,5,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5223,7 +5223,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,6,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5275,7 +5275,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,7,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5327,7 +5327,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,8,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5379,7 +5379,7 @@ algorithm
nvars = BackendVariable.daenumVariables(isyst);
true = intGt(nvars,0);
true = intGt(neqns,0);
(vec2,vec1) = getAssignment(clearMatching,nvars,neqns,isyst);
(vec1,vec2) = getAssignment(clearMatching,nvars,neqns,isyst);
true = Debug.bcallret4(not clearMatching,BackendDAEEXT.setAssignment, neqns, nvars, vec1, vec2, true);
(vec1,vec2,syst,shared,arg) = matchingExternal({},false,10,Config.getCheapMatchingAlgorithm(),Util.if_(clearMatching,1,0),isyst,ishared,nvars, neqns, vec1, vec2, inMatchingOptions, sssHandler, inArg);
syst = BackendDAEUtil.setEqSystemMatching(syst,BackendDAE.MATCHING(vec2,vec1,{}));
Expand Down Expand Up @@ -5962,22 +5962,22 @@ protected function getAssignment
input Integer nVars;
input Integer nEqns;
input BackendDAE.EqSystem iSyst;
output array<Integer> ass1;
output array<Integer> ass2;
output array<Integer> ass1 "ass[eqnindx]=varindx";
output array<Integer> ass2 "ass[varindx]=eqnindx";
algorithm
(ass1,ass2) := matchcontinue(clearMatching,nVars,nEqns,iSyst)
case(false,_,_,BackendDAE.EQSYSTEM(matching=BackendDAE.MATCHING(ass1=ass1,ass2=ass2)))
equation
true = intGe(nVars,arrayLength(ass1));
true = intGe(nEqns,arrayLength(ass2));
then
(ass1,ass2);
(ass2,ass1);
else
equation
ass2 = arrayCreate(nEqns,-1);
ass1 = arrayCreate(nVars,-1);
ass2 = arrayCreate(nVars,-1);
then
(ass1,ass2);
(ass2,ass1);
end matchcontinue;
end getAssignment;

Expand Down

0 comments on commit 4d47da8

Please sign in to comment.