@@ -42,13 +42,11 @@ encapsulated package BackendDAETransform
42
42
RCS: $Id$
43
43
"
44
44
45
- public import Absyn ;
46
45
public import BackendDAE ;
47
46
public import DAE ;
48
47
49
48
protected import BackendDAEUtil ;
50
49
protected import BackendDump ;
51
- protected import BackendDAEOptimize ;
52
50
protected import BackendEquation ;
53
51
protected import BackendVariable ;
54
52
protected import ComponentReference ;
@@ -59,7 +57,6 @@ protected import Expression;
59
57
protected import ExpressionDump ;
60
58
protected import Flags ;
61
59
protected import List ;
62
- protected import Matching ;
63
60
protected import SCode ;
64
61
protected import Sorting ;
65
62
protected import SymbolicJacobian ;
@@ -82,32 +79,36 @@ public function strongComponentsScalar "author: PA
82
79
input array< Integer > mapIncRowEqn;
83
80
output BackendDAE . EqSystem outSystem;
84
81
output BackendDAE . StrongComponents outComps "list of components" ;
85
- protected
86
- list< list< Integer >> comps;
87
- array< Integer > ass1, ass2;
88
- BackendDAE . IncidenceMatrixT mt;
89
- BackendDAE . EquationArray eqs;
90
- BackendDAE . Variables vars;
91
- array< Integer > markarray;
92
- BackendDAE . StateSets stateSets;
93
- BackendDAE . BaseClockPartitionKind partitionKind;
94
82
algorithm
95
- try
96
- BackendDAE . EQSYSTEM (vars, eqs, SOME (_), SOME (mt), BackendDAE . MATCHING (ass1= ass1, ass2= ass2), stateSets= stateSets, partitionKind= partitionKind) := inSystem;
97
-
98
- comps := Sorting . TarjanTransposed (mt, ass2);
83
+ (outSystem, outComps) := matchcontinue inSystem
84
+ local
85
+ list< list< Integer >> comps_m;
86
+ array< Integer > ass1, ass2;
87
+ BackendDAE . IncidenceMatrixT mt;
88
+ BackendDAE . EquationArray eqs;
89
+ BackendDAE . Variables vars;
90
+ array< Integer > markarray;
91
+ BackendDAE . StrongComponents comps;
92
+ BackendDAE . EqSystem syst;
93
+ case syst as BackendDAE . EQSYSTEM (orderedEqs= eqs, m= SOME (_), mT= SOME (mt), matching= BackendDAE . MATCHING (ass1= ass1, ass2= ass2))
94
+ algorithm
95
+ comps_m := Sorting . TarjanTransposed (mt, ass2);
99
96
100
- markarray := arrayCreate(BackendDAEUtil . equationArraySize(eqs), -1 );
101
- outComps := analyseStrongComponentsScalar(comps , inSystem, inShared, ass1, ass2, mapEqnIncRow, mapIncRowEqn, 1 , markarray);
102
- ass1 := varAssignmentNonScalar(ass1, mapIncRowEqn);
97
+ markarray := arrayCreate(BackendDAEUtil . equationArraySize(eqs), -1 );
98
+ comps := analyseStrongComponentsScalar(comps_m , inSystem, inShared, ass1, ass2, mapEqnIncRow, mapIncRowEqn, 1 , markarray);
99
+ ass1 := varAssignmentNonScalar(ass1, mapIncRowEqn);
103
100
104
- // noscalass2 = eqnAssignmentNonScalar(1, arrayLength(mapEqnIncRow), mapEqnIncRow, ass2, {});
105
- // Frenkel TUD: Do not hand over the scalar incidence Matrix because following modules does not check if scalar or not
106
- outSystem := BackendDAE . EQSYSTEM (vars, eqs, NONE (), NONE (), BackendDAE . MATCHING (ass1, ass2, outComps), stateSets, partitionKind);
107
- else
108
- Error . addInternalError("function strongComponentsScalar failed (sorting strong components)" , sourceInfo());
109
- fail();
110
- end try ;
101
+ // noscalass2 = eqnAssignmentNonScalar(1, arrayLength(mapEqnIncRow), mapEqnIncRow, ass2, {});
102
+ // Frenkel TUD: Do not hand over the scalar incidence Matrix because following modules does not check if scalar or not
103
+ syst. m := NONE (); syst. mT := NONE (); syst. matching := BackendDAE . MATCHING (ass1, ass2, comps);
104
+ then
105
+ (syst, comps);
106
+ else
107
+ algorithm
108
+ Error . addInternalError("function strongComponentsScalar failed (sorting strong components)" , sourceInfo());
109
+ then
110
+ fail();
111
+ end matchcontinue;
111
112
end strongComponentsScalar;
112
113
113
114
public function eqnAssignmentNonScalar
@@ -159,7 +160,6 @@ protected
159
160
BackendDAE . StrongComponent acomp;
160
161
Integer mark = imark;
161
162
algorithm
162
-
163
163
for comp in inComps loop
164
164
(acomp, mark) := analyseStrongComponentScalar(comp, syst, shared , inAss1, inAss2, mapEqnIncRow, mapIncRowEqn, mark, markarray);
165
165
outComps := acomp :: outComps;
@@ -181,12 +181,12 @@ protected function analyseStrongComponentScalar "author: Frenkel TUD 2011-05"
181
181
output BackendDAE . StrongComponent outComp;
182
182
output Integer omark = imark + 1 ;
183
183
protected
184
- list< Integer > comp, vlst;
185
- list< BackendDAE . Var > varlst;
186
- list< tuple< BackendDAE . Var , Integer >> var_varindx_lst;
187
- BackendDAE . Variables vars;
188
- list< BackendDAE . Equation > eqn_lst;
189
- BackendDAE . EquationArray eqns;
184
+ list< Integer > comp, vlst;
185
+ list< BackendDAE . Var > varlst;
186
+ list< tuple< BackendDAE . Var , Integer >> var_varindx_lst;
187
+ BackendDAE . Variables vars;
188
+ list< BackendDAE . Equation > eqn_lst;
189
+ BackendDAE . EquationArray eqns;
190
190
algorithm
191
191
try
192
192
BackendDAE . EQSYSTEM (orderedVars= vars, orderedEqs= eqns) := syst;
0 commit comments