Changeset 63d72ed in OpenModelica
- Timestamp:
- 2020-10-21T18:53:49+02:00 (4 years ago)
- Branches:
- maintenance/v1.16
- Children:
- 1e5d02e0
- Parents:
- 8dd669a
- git-author:
- Karim Abdelhak <karim.abdelhak@…> (10/09/20 11:07:13)
- git-committer:
- Adrian Pop <adrian.pop@…> (10/21/20 18:53:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo
rc0e8727d r63d72ed 4760 4760 lst = adjacencyRowExpEnhanced(e1, vars, mark, rowmark, isInitial, {}); 4761 4761 lst = adjacencyRowExpEnhanced(e2, vars, mark, rowmark, isInitial, lst); 4762 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve, shared);4762 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve,1,shared); 4763 4763 then 4764 4764 (row,1); … … 4768 4768 lst = adjacencyRowExpEnhanced(e1, vars, mark, rowmark, isInitial, {}); 4769 4769 lst = adjacencyRowExpEnhanced(e2, vars, mark, rowmark, isInitial, lst); 4770 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve,s hared);4770 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve,size,shared); 4771 4771 then 4772 4772 (row,size); … … 4776 4776 lst = adjacencyRowExpEnhanced(e1, vars, mark, rowmark, isInitial, {}); 4777 4777 lst = adjacencyRowExpEnhanced(e2, vars, mark, rowmark, isInitial, lst); 4778 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve,shared);4779 4778 size = List.fold(ds,intMul,1); 4779 row = adjacencyRowEnhanced1(lst,e1,e2,vars,globalKnownVars,mark,rowmark,{},trytosolve,size,shared); 4780 4780 then 4781 4781 (row,size); … … 4787 4787 lst = adjacencyRowExpEnhanced(expCref, vars, mark, rowmark, isInitial, {}); 4788 4788 lst = adjacencyRowExpEnhanced(e, vars, mark, rowmark, isInitial, lst); 4789 row = adjacencyRowEnhanced1(lst,expCref,e,vars,globalKnownVars,mark,rowmark,{},trytosolve, shared);4789 row = adjacencyRowEnhanced1(lst,expCref,e,vars,globalKnownVars,mark,rowmark,{},trytosolve,1,shared); 4790 4790 then 4791 4791 (row,1); … … 4794 4794 equation 4795 4795 lst = adjacencyRowExpEnhanced(e, vars, mark, rowmark, isInitial, {}); 4796 row = adjacencyRowEnhanced1(lst,e,DAE.RCONST(0.0),vars,globalKnownVars,mark,rowmark,{},trytosolve, shared);4796 row = adjacencyRowEnhanced1(lst,e,DAE.RCONST(0.0),vars,globalKnownVars,mark,rowmark,{},trytosolve,1,shared); 4797 4797 then 4798 4798 (row,1); … … 4863 4863 lst = List.fold4(expl, adjacencyRowExpEnhanced, vars, mark, rowmark, isInitial, {}); 4864 4864 _ = List.fold1(lst,markNegativ,rowmark,mark); 4865 row1 = adjacencyRowEnhanced1(lst,DAE.RCONST(0.0),DAE.RCONST(0.0),vars,globalKnownVars,mark,rowmark,{},trytosolve, shared);4865 row1 = adjacencyRowEnhanced1(lst,DAE.RCONST(0.0),DAE.RCONST(0.0),vars,globalKnownVars,mark,rowmark,{},trytosolve,1,shared); 4866 4866 4867 4867 (row, size) = adjacencyRowEnhancedEqnLst(eqnselse, vars, mark, rowmark, globalKnownVars, trytosolve,shared); … … 5083 5083 //leftexp = Expression.crefExp(left); 5084 5084 lst = adjacencyRowExpEnhanced(leftexp, vars, mark, rowmark, isInitial, lst); 5085 outRow = adjacencyRowEnhanced1(lst,leftexp,right,vars,globalKnownVars,mark,rowmark,outRow,false, shared);5085 outRow = adjacencyRowEnhanced1(lst,leftexp,right,vars,globalKnownVars,mark,rowmark,outRow,false,1,shared); 5086 5086 then (); 5087 5087 … … 5094 5094 _ = List.fold1(lst,markNegativ,rowmark,mark); 5095 5095 lst = adjacencyRowExpEnhanced(leftexp, vars, mark, rowmark, isInitial, lst); 5096 outRow = adjacencyRowEnhanced1(lst,leftexp,right,vars,globalKnownVars,mark,rowmark,outRow,false, shared);5096 outRow = adjacencyRowEnhanced1(lst,leftexp,right,vars,globalKnownVars,mark,rowmark,outRow,false,1,shared); 5097 5097 then (); 5098 5098 … … 5133 5133 input BackendDAE.AdjacencyMatrixElementEnhanced inRow; 5134 5134 input Boolean trytosolve; 5135 input Integer size; 5135 5136 input BackendDAE.Shared shared; 5136 5137 output BackendDAE.AdjacencyMatrixElementEnhanced outRow; … … 5167 5168 false = Expression.expHasDerCref(e2,cr); 5168 5169 then 5169 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5170 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5170 5171 case(r::rest,_,DAE.CALL(path= Absyn.IDENT("der"),expLst={DAE.CREF(componentRef = cr)}),_,_,_,_,_) 5171 5172 equation … … 5178 5179 false = Expression.expHasDerCref(e1,cr); 5179 5180 then 5180 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5181 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5181 5182 case(r::rest,DAE.CREF(componentRef=cr),_,_,_,_,_,_) 5182 5183 equation … … 5189 5190 false = Expression.expHasCrefNoPreorDer(e2,cr); 5190 5191 then 5191 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5192 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5192 5193 case(r::rest,DAE.CREF(componentRef=cr),_,_,_,_,_,_) 5193 5194 equation … … 5201 5202 false = Expression.expHasCrefNoPreorDer(e2,cr); 5202 5203 then 5203 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5204 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5204 5205 case(r::rest,DAE.LUNARY(operator=DAE.NOT(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_,_) 5205 5206 equation … … 5212 5213 false = Expression.expHasCrefNoPreorDer(e2,cr); 5213 5214 then 5214 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5215 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5215 5216 case(r::rest,DAE.UNARY(operator=DAE.UMINUS(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_,_) 5216 5217 equation … … 5223 5224 false = Expression.expHasCrefNoPreorDer(e2,cr); 5224 5225 then 5225 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5226 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5226 5227 case(r::rest,DAE.UNARY(operator=DAE.UMINUS_ARR(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_,_) 5227 5228 equation … … 5235 5236 false = Expression.expHasCrefNoPreorDer(e2,cr); 5236 5237 then 5237 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5238 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5238 5239 case(r::rest,_,DAE.CREF(componentRef=cr),_,_,_,_,_) 5239 5240 equation … … 5246 5247 false = Expression.expHasCrefNoPreorDer(e1,cr); 5247 5248 then 5248 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5249 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5249 5250 case(r::rest,_,DAE.CREF(componentRef=cr),_,_,_,_,_) 5250 5251 equation … … 5258 5259 false = Expression.expHasCrefNoPreorDer(e1,cr); 5259 5260 then 5260 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5261 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5261 5262 case(r::rest,_,DAE.LUNARY(operator=DAE.NOT(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_) 5262 5263 equation … … 5269 5270 false = Expression.expHasCrefNoPreorDer(e1,cr); 5270 5271 then 5271 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5272 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5272 5273 case(r::rest,_,DAE.UNARY(operator=DAE.UMINUS(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_) 5273 5274 equation … … 5280 5281 false = Expression.expHasCrefNoPreorDer(e1,cr); 5281 5282 then 5282 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5283 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5283 5284 case(r::rest,_,DAE.UNARY(operator=DAE.UMINUS_ARR(_),exp=DAE.CREF(componentRef=cr)),_,_,_,_,_) 5284 5285 equation … … 5292 5293 false = Expression.expHasCrefNoPreorDer(e1,cr); 5293 5294 then 5294 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5295 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5295 5296 case(r::rest,DAE.CREF(componentRef=cr),_,_,_,_,_,_) 5296 5297 equation … … 5303 5304 false = Expression.expHasCrefNoPreorDer(e2,cr); 5304 5305 then 5305 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5306 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5306 5307 case(r::rest,_,DAE.CREF(componentRef=cr),_,_,_,_,_) 5307 5308 equation … … 5314 5315 false = Expression.expHasCrefNoPreorDer(e1,cr); 5315 5316 then 5316 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5317 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5317 5318 case(r::rest,DAE.CALL(path=path,expLst=explst,attr=DAE.CALL_ATTR(ty= DAE.T_COMPLEX(complexClassType=ClassInf.RECORD(path1)))),_,_,_,_,_,_) 5318 5319 equation … … 5326 5327 false = Expression.expHasCrefNoPreorDer(e2,cr1); 5327 5328 then 5328 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5329 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5329 5330 case(r::rest,_,DAE.CALL(path=path,expLst=explst,attr=DAE.CALL_ATTR(ty= DAE.T_COMPLEX(complexClassType=ClassInf.RECORD(path1)))),_,_,_,_,_) 5330 5331 equation … … 5338 5339 false = Expression.expHasCrefNoPreorDer(e1,cr1); 5339 5340 then 5340 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5341 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5341 5342 case(r::rest,DAE.TUPLE(PR=explst),DAE.CALL(),_,_,_,_,_) 5342 5343 equation … … 5353 5354 false = Expression.expHasCrefNoPreorDer(e2,cr1); 5354 5355 then 5355 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,s hared);5356 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_SOLVED(),{})::inRow,trytosolve,size,shared); 5356 5357 case(r::rest,_,_,_,_,_,_,_) 5357 5358 // case: state derivative 5358 5359 equation 5360 // ticket #6806, only allow inverting of function if the sizes match 5361 1 = size; 5359 5362 // if not negated rowmark then linear or nonlinear 5360 5363 true = intGt(r,0); … … 5382 5385 end if; 5383 5386 then 5384 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,solvab,cons)::inRow,trytosolve,s hared);5387 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,solvab,cons)::inRow,trytosolve,size,shared); 5385 5388 case(r::rest,_,_,_,_,_,_,_) 5386 5389 equation 5390 // ticket #6806, only allow inverting of function if the sizes match 5391 1 = size; 5387 5392 rabs = intAbs(r); 5388 5393 // if not negated rowmark then linear or nonlinear … … 5408 5413 end if; 5409 5414 then 5410 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,solvab,cons)::inRow,trytosolve,s hared);5415 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,solvab,cons)::inRow,trytosolve,size,shared); 5411 5416 case(r::rest,_,_,_,_,_,_,_) 5412 5417 then 5413 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_UNSOLVABLE(),{})::inRow,trytosolve,s hared);5418 adjacencyRowEnhanced1(rest,e1,e2,vars,globalKnownVars,mark,rowmark,(r,BackendDAE.SOLVABILITY_UNSOLVABLE(),{})::inRow,trytosolve,size,shared); 5414 5419 end matchcontinue; 5415 5420 end adjacencyRowEnhanced1;
Note: See TracChangeset
for help on using the changeset viewer.