@@ -92,6 +92,9 @@ function _build_function(target::JuliaTarget, rhss, vs, ps = (), args = (),
9292 end
9393end
9494
95+ get_varnumber (varop:: Operation ,vars:: Vector{Operation} ) = findfirst (x-> isequal (x,varop),vars)
96+ get_varnumber (varop:: Operation ,vars:: Vector{Variable} ) = findfirst (x-> isequal (x,varop. op),vars)
97+
9598function numbered_expr (O:: Equation ,args... ;kwargs... )
9699 :($ (numbered_expr (O. lhs,args... ;kwargs... )) = $ (numbered_expr (O. rhs,args... ;kwargs... )))
97100end
@@ -101,12 +104,12 @@ function numbered_expr(O::Operation,vars,parameters;
101104 varname= :u ,paramname= :p )
102105 if isa (O. op, ModelingToolkit. Differential)
103106 varop = O. args[1 ]
104- i = findfirst (x -> isequal (x, varop) ,vars)
107+ i = get_varnumber ( varop,vars)
105108 return :($ derivname[$ i])
106109 elseif isa (O. op, ModelingToolkit. Variable)
107- i = findfirst (x -> isequal (x,O) ,vars)
110+ i = get_varnumber (O ,vars)
108111 if i == nothing
109- i = findfirst (x -> isequal (x,O) ,parameters)
112+ i = get_varnumber (O ,parameters)
110113 return :($ paramname[$ i])
111114 else
112115 return :($ varname[$ i])
@@ -116,7 +119,15 @@ function numbered_expr(O::Operation,vars,parameters;
116119 [numbered_expr (x,vars,parameters;derivname= derivname,
117120 varname= varname,paramname= paramname) for x in O. args]. .. )
118121end
119- function numbered_expr (de:: ModelingToolkit.DiffEq ,vars,parameters;
122+
123+ function numbered_expr (de:: ModelingToolkit.DiffEq ,vars:: Vector{Variable} ,parameters;
124+ derivname= :du ,varname= :u ,paramname= :p )
125+ i = findfirst (x-> isequal (x. name,de. x. name),vars)
126+ :($ derivname[$ i] = $ (numbered_expr (de. rhs,vars,parameters;
127+ derivname= derivname,
128+ varname= varname,paramname= paramname)))
129+ end
130+ function numbered_expr (de:: ModelingToolkit.DiffEq ,vars:: Vector{Operation} ,parameters;
120131 derivname= :du ,varname= :u ,paramname= :p )
121132 i = findfirst (x-> isequal (x. op. name,de. x. name),vars)
122133 :($ derivname[$ i] = $ (numbered_expr (de. rhs,vars,parameters;
0 commit comments