@@ -372,7 +372,7 @@ algorithm
372
372
DAE . FunctionTree functionTree;
373
373
BackendDAE . SymbolicJacobians symjacs;
374
374
DAE . ComponentRef cr,cr1,cr2,scr;
375
- Boolean negate,b1,b2;
375
+ Boolean negate,b1,b2,b ;
376
376
DAE . Exp exp1,exp2;
377
377
BackendDAE . Var var1,var2;
378
378
BackendDAE . ConstraintEquations orgEqnsLst;
@@ -403,16 +403,17 @@ algorithm
403
403
e1 = inAss1[i];
404
404
// ass1 = arrayUpdate(inAss1,i,e);
405
405
// ass2 = arrayUpdate(inAss2,e,i);
406
- // ass2 = Debug.bcallret3(intGt(e1,0),arrayUpdate,ass2,e1,-1,ass2);
407
- ass1 = arrayUpdate(inAss1,i,-1 );
408
- ass2 = arrayUpdate(inAss2,e,-1 );
409
- ass2 = Debug . bcallret3(intGt(e1,0 ),arrayUpdate,ass2,e1,-1 ,ass2);
406
+ // ass2 = Debug.bcallret3(intGt(e1,0),arrayUpdate,ass2,e1,-1,ass2);
407
+ b = intGt(e1,0 );
408
+ ass1 = Debug . bcallret3(b,arrayUpdate,inAss1,i,-1 ,inAss1);
409
+ // ass2 = arrayUpdate(inAss2,e,-1);
410
+ ass2 = Debug . bcallret3(b,arrayUpdate,inAss2,e1,-1 ,inAss2);
410
411
syst = BackendDAE . EQSYSTEM (v1,eqns_1,SOME (m),SOME (mt),matching);
411
412
shared = BackendDAE . SHARED (kv,ev,av,ie,seqns,ae1,al1,constrs,complEqs,functionTree,BackendDAE . EVENT_INFO (wclst1,zc),eoc,btp,symjacs);
412
413
syst = BackendDAEUtil . updateIncidenceMatrix(syst, shared , changedEqns);
413
414
Debug . fcall(Flags . BLT_DUMP , BackendDump . debugStrCrefStrCrefStr,("Found Alias State " ,cr," := " ,scr," \n Update Incidence Matrix: " ));
414
415
Debug . fcall(Flags . BLT_DUMP , BackendDump . debuglst,(changedEqns,intString," " ," \n " ));
415
- // changedEqns = listAppend(changedEqns,inchangedEqns);
416
+ changedEqns = List . consOnTrue(b, e1, {e});
416
417
changedEqns = List . unionOnTrue(inchangedEqns, changedEqns, intEq);
417
418
(syst,shared ,ass1,ass2,so1,orgEqnsLst,changedEqns,eqnslst) = differentiateAliasEqns(syst,shared ,es,ass1,ass2,so,orgEqnsLst,changedEqns,iEqnsAcc);
418
419
then
@@ -507,8 +508,6 @@ algorithm
507
508
shared = BackendDAE . SHARED (kv,ev,av,ie,seqns,ae1,al1,constrs,complEqs,functionTree,BackendDAE . EVENT_INFO (wclst1,zc),eoc,btp,symjacs);
508
509
syst = BackendDAEUtil . updateIncidenceMatrix(syst, shared , eqnslst1);
509
510
orgEqnsLst = BackendDAETransform . addOrgEqn(inOrgEqnsLst,e,eqn);
510
- // changedEqns = listAppend(inchangedEqns,eqnslst);
511
- // changedEqns = e::changedEqns;
512
511
changedEqns = List . unionOnTrue(inchangedEqns, e::eqnslst, intEq);
513
512
(syst,shared ,ass1,ass2,derivedAlgs1,derivedMultiEqn1,so1,orgEqnsLst,changedEqns) = differentiateEqns(syst,shared ,es,ass1,ass2,derivedAlgs,derivedMultiEqn,so,orgEqnsLst,changedEqns);
514
513
then
@@ -1585,7 +1584,7 @@ algorithm
1585
1584
Debug . fcall(Flags . BLT_DUMP , BackendDump . dumpAdjacencyMatrixTEnhanced,meT);
1586
1585
(hov1,dummystates,lov,syst,shared ) = selectDummyDerivatives1(me,meT,vars1,varSize,eqns,eqnsSize,eqnindxlst,hov,inDummyStates,isyst,ishared,inLov);
1587
1586
then
1588
- (hov1,dummystates,lov,syst,shared );
1587
+ (hov1,dummystates,lov,syst,shared );
1589
1588
case (_,_,_,_,_,_,_,_,_,_)
1590
1589
equation
1591
1590
// try to select dummy vars heuristic based
@@ -1598,6 +1597,8 @@ algorithm
1598
1597
crlst = List . map(varlst,BackendVariable . varCref);
1599
1598
states = List . threadTuple(crlst,List . intRange2(1 ,varSize));
1600
1599
states = BackendDAETransform . sortStateCandidates(states,syst);
1600
+ // states = List.sort(states,stateSortFund);
1601
+ // states = listReverse(states);
1601
1602
Debug . fcall(Flags . BLT_DUMP , print, ("Select as dummyStates: \n " ));
1602
1603
Debug . fcall(Flags . BLT_DUMP , BackendDump . debuglst,((states,BackendDAETransform . dumpStates," \n " ," \n " )));
1603
1604
(hov1,lov,dummystates) = selectDummyStates(states,1 ,eqnsSize,vars,hov,inLov,inDummyStates);
@@ -1615,6 +1616,14 @@ algorithm
1615
1616
end matchcontinue;
1616
1617
end selectDummyDerivatives;
1617
1618
1619
+ protected function stateSortFund
1620
+ input tuple< DAE . ComponentRef , Integer > inA;
1621
+ input tuple< DAE . ComponentRef , Integer > inB;
1622
+ output Boolean b;
1623
+ algorithm
1624
+ b:= ComponentReference . crefSortFunc(Util . tuple21(inA),Util . tuple21(inB));
1625
+ end stateSortFund;
1626
+
1618
1627
protected function selectDummyDerivatives1
1619
1628
"function: selectDummyDerivatives1
1620
1629
author: Frenkel TUD 2012-05
@@ -1763,8 +1772,9 @@ algorithm
1763
1772
list< DAE . Exp > explst;
1764
1773
list< BackendDAE . Equation > selecteqns,dselecteqns;
1765
1774
list< BackendDAE . WhenClause > wclst;
1766
- case (_,{},{} ,_,_,_,_,_,_,_,_,_,_,_,_)
1775
+ case (_,_,_ ,_,_,_,_,_,_,_,_,_,_,_,_)
1767
1776
equation
1777
+ true = intEq(listLength(dstates),eqnsSize);
1768
1778
Debug . fcall(Flags . BLT_DUMP , print, ("Select as dummyStates: \n " ));
1769
1779
Debug . fcall(Flags . BLT_DUMP , BackendDump . debuglst,((dstates,BackendDAETransform . dumpStates," \n " ," \n " )));
1770
1780
Debug . fcall(Flags . BLT_DUMP , BackendDump . debugStrIntStrIntStr, ("Select " ,varSize- eqnsSize," from " ,varSize," \n " ));
@@ -1776,6 +1786,9 @@ algorithm
1776
1786
// for now only implemented for one equation
1777
1787
true = intEq(eqnsSize,1 );
1778
1788
rang = eqnsSize- listLength(states);
1789
+ // workaround to avoid state changes
1790
+ // states = List.sort(states,stateSortFund);
1791
+ // states = listReverse(states);
1779
1792
Debug . fcall(Flags . BLT_DUMP , BackendDump . debugStrIntStrIntStr, ("Select " ,varSize- eqnsSize," from " ,varSize," \n " ));
1780
1793
Debug . fcall(Flags . BLT_DUMP , BackendDump . debuglst,((states,BackendDAETransform . dumpStates," \n " ," \n " )));
1781
1794
Debug . fcall(Flags . BLT_DUMP , print, ("Select as dummyStates: \n " ));
0 commit comments