@@ -470,33 +470,36 @@ function rm_calls_with_iv(expr)
470
470
Rewriters. Prewalk (Rewriters. Chain ([@rule ((~ f:: (x->x isa Sym) )(~ t:: (x->x isa Sym) ) => Sym {symtype((~f)(~t))} ((term_to_symbol (~ f))))]))(value (expr))
471
471
end
472
472
473
- get_varnumber (varop:: Operation ,vars:: Vector{Operation} ) = findfirst (x-> isequal (x,varop),vars)
474
- get_varnumber (varop:: Operation ,vars:: Vector{<:Variable} ) = findfirst (x-> isequal (x,varop. op),vars)
473
+ get_varnumber (varop, vars:: Vector ) = findfirst (x-> isequal (x,varop),vars)
475
474
476
- function numbered_expr (O:: Operation ,args... ;varordering = args[1 ],offset = 0 ,
475
+ function numbered_expr (O:: Union{Term,Sym} ,args... ;varordering = args[1 ],offset = 0 ,
477
476
lhsname= gensym (" du" ),rhsnames= [gensym (" MTK" ) for i in 1 : length (args)])
478
- if isa (O. op, ModelingToolkit. Variable)
477
+ O = value (O)
478
+ if O isa Sym || isa (O. op, Sym)
479
479
for j in 1 : length (args)
480
480
i = get_varnumber (O,args[j])
481
481
if i != = nothing
482
482
return :($ (rhsnames[j])[$ (i+ offset)])
483
483
end
484
484
end
485
485
end
486
- return Expr (:call , Symbol (O. op),
486
+ return Expr (:call , O isa Sym ? nameof (O) : Symbol (O. op),
487
487
[numbered_expr (x,args... ;offset= offset,lhsname= lhsname,
488
488
rhsnames= rhsnames,varordering= varordering) for x in O. args]. .. )
489
489
end
490
490
491
491
function numbered_expr (de:: ModelingToolkit.Equation ,args... ;varordering = args[1 ],
492
492
lhsname= gensym (" du" ),rhsnames= [gensym (" MTK" ) for i in 1 : length (args)],offset= 0 )
493
+
494
+ varordering = value .(args[1 ])
493
495
i = findfirst (x-> isequal (x isa Sym ? term_to_symbol (x) : term_to_symbol (x. op),term_to_symbol (var_from_nested_derivative (de. lhs)[1 ])),varordering)
494
496
:($ lhsname[$ (i+ offset)] = $ (numbered_expr (de. rhs,args... ;offset= offset,
495
497
varordering = varordering,
496
498
lhsname = lhsname,
497
499
rhsnames = rhsnames)))
498
500
end
499
- numbered_expr (c:: ModelingToolkit.Constant ,args... ;kwargs... ) = c. value
501
+ numbered_expr (c,args... ;kwargs... ) = c
502
+ numbered_expr (c:: Num ,args... ;kwargs... ) = error (" Num found" )
500
503
501
504
"""
502
505
Build function target: CTarget
0 commit comments