@@ -134,67 +134,50 @@ protected function getScalarArrayEqns1
134134 output list< BackendDAE . Equation > outEqnLst;
135135 output Boolean outFound;
136136algorithm
137- (outEqnLst, outFound) := matchcontinue(inEqn, inAccEqnLst)
137+ (outEqnLst, outFound) := matchcontinue inEqn
138138 local
139139 DAE . ElementSource source;
140- DAE . Exp lhs, rhs, e1_1, e2_1 ;
140+ DAE . Exp lhs, rhs, e1, e2 ;
141141 list< DAE . Exp > ea1, ea2;
142142 list< BackendDAE . Equation > eqns;
143- BackendDAE . EquationAttributes eqAttr;
144-
145- case (BackendDAE . ARRAY_EQUATION (left= lhs, right= rhs, source= source, attr= eqAttr), _) equation
146- true = Expression . isArray(lhs) or Expression . isMatrix(lhs);
147- true = Expression . isArray(rhs) or Expression . isMatrix(rhs);
148- ea1 = Expression . flattenArrayExpToList(lhs);
149- ea2 = Expression . flattenArrayExpToList(rhs);
150- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
151- then (eqns, true );
152-
153- case (BackendDAE . ARRAY_EQUATION (left= (lhs as DAE . CREF ()), right= rhs, source= source, attr= eqAttr), _) equation
154- // the lhs array is expressed as a cref
155- true = Expression . isArray(rhs) or Expression . isMatrix(rhs);
156- (e1_1, _) = Expression . extendArrExp(lhs, false );
157- ea1 = Expression . flattenArrayExpToList(e1_1);
158- ea2 = Expression . flattenArrayExpToList(rhs);
159- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
160- then (eqns, true );
161-
162- case (BackendDAE . ARRAY_EQUATION (left= lhs, right= rhs as DAE . CREF (), source= source, attr= eqAttr), _) equation
163- true = Expression . isArray(lhs) or Expression . isMatrix(lhs);
164- (e2_1, _) = Expression . extendArrExp(rhs,false );
165- ea1 = Expression . flattenArrayExpToList(lhs);
166- ea2 = Expression . flattenArrayExpToList(e2_1);
167- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
168- then (eqns,true );
169-
170- case (BackendDAE . ARRAY_EQUATION (left= lhs as DAE . CREF (),right= rhs as DAE . CREF (), source= source, attr= eqAttr), _) equation
171- (e1_1, _) = Expression . extendArrExp(lhs, false );
172- (e2_1, _) = Expression . extendArrExp(rhs, false );
173- ea1 = Expression . flattenArrayExpToList(e1_1);
174- ea2 = Expression . flattenArrayExpToList(e2_1);
175- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
176- then (eqns, true );
177-
178- case (BackendDAE . ARRAY_EQUATION (left= lhs,right= rhs, source= source, attr= eqAttr), _) equation
179- (e1_1, _) = Expression . extendArrExp(lhs, false );
180- (e2_1, _) = Expression . extendArrExp(rhs, false );
181- (e1_1,_) = ExpressionSimplify . simplify(e1_1);
182- (e2_1,_) = ExpressionSimplify . simplify(e2_1);
183- true = Expression . isArray(e1_1) or Expression . isMatrix(e1_1);
184- true = Expression . isArray(e2_1) or Expression . isMatrix(e2_1);
185- ea1 = Expression . flattenArrayExpToList(e1_1);
186- ea2 = Expression . flattenArrayExpToList(e2_1);
187- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
188- then (eqns, true );
189-
190- case (BackendDAE . COMPLEX_EQUATION (left= lhs, right= rhs, source= source, attr= eqAttr), _) equation
191- ea1 = Expression . splitRecord(lhs,Expression . typeof(lhs));
192- ea2 = Expression . splitRecord(rhs,Expression . typeof(rhs));
193- ((_, eqns)) = List . threadFold3(ea1, ea2, generateScalarArrayEqns2, source, eqAttr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
194- then (eqns, true );
195-
196- case (_, _)
197- then (inEqn::inAccEqnLst, false );
143+ BackendDAE . EquationAttributes attr;
144+ DAE . Exp e1_1, e2_1;
145+
146+ case BackendDAE . ARRAY_EQUATION (left = lhs, right = rhs, source = source, attr = attr)
147+ algorithm
148+ if Expression . isArray(lhs) or Expression . isMatrix(lhs) then
149+ ea1 := Expression . flattenArrayExpToList(lhs);
150+ else
151+ e1 := Expression . extendArrExp(lhs);
152+ e1 := ExpressionSimplify . simplify(e1);
153+ true := Expression . isArray(e1) or Expression . isMatrix(e1);
154+ ea1 := Expression . flattenArrayExpToList(e1);
155+ end if ;
156+
157+ if Expression . isArray(rhs) or Expression . isMatrix(rhs) then
158+ ea2 := Expression . flattenArrayExpToList(rhs);
159+ else
160+ e2 := Expression . extendArrExp(rhs);
161+ e2 := ExpressionSimplify . simplify(e2);
162+ true := Expression . isArray(e2) or Expression . isMatrix(e2);
163+ ea2 := Expression . flattenArrayExpToList(e2);
164+ end if ;
165+
166+ ((_, eqns)) := List . threadFold3(ea1, ea2, generateScalarArrayEqns2,
167+ source, attr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
168+ then
169+ (eqns, true );
170+
171+ case BackendDAE . COMPLEX_EQUATION (left = lhs, right = rhs, source = source, attr = attr)
172+ algorithm
173+ ea1 := Expression . splitRecord(lhs, Expression . typeof(lhs));
174+ ea2 := Expression . splitRecord(rhs, Expression . typeof(rhs));
175+ ((_, eqns)) := List . threadFold3(ea1, ea2, generateScalarArrayEqns2,
176+ source, attr, DAE . EQUALITY_EXPS (lhs, rhs), (1 , inAccEqnLst));
177+ then
178+ (eqns, true );
179+
180+ else (inEqn :: inAccEqnLst, false );
198181 end matchcontinue;
199182end getScalarArrayEqns1;
200183
0 commit comments