@@ -92,6 +92,9 @@ function _build_function(target::JuliaTarget, rhss, vs, ps = (), args = (),
92
92
end
93
93
end
94
94
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
+
95
98
function numbered_expr (O:: Equation ,args... ;kwargs... )
96
99
:($ (numbered_expr (O. lhs,args... ;kwargs... )) = $ (numbered_expr (O. rhs,args... ;kwargs... )))
97
100
end
@@ -101,12 +104,12 @@ function numbered_expr(O::Operation,vars,parameters;
101
104
varname= :u ,paramname= :p )
102
105
if isa (O. op, ModelingToolkit. Differential)
103
106
varop = O. args[1 ]
104
- i = findfirst (x -> isequal (x, varop) ,vars)
107
+ i = get_varnumber ( varop,vars)
105
108
return :($ derivname[$ i])
106
109
elseif isa (O. op, ModelingToolkit. Variable)
107
- i = findfirst (x -> isequal (x,O) ,vars)
110
+ i = get_varnumber (O ,vars)
108
111
if i == nothing
109
- i = findfirst (x -> isequal (x,O) ,parameters)
112
+ i = get_varnumber (O ,parameters)
110
113
return :($ paramname[$ i])
111
114
else
112
115
return :($ varname[$ i])
@@ -116,7 +119,15 @@ function numbered_expr(O::Operation,vars,parameters;
116
119
[numbered_expr (x,vars,parameters;derivname= derivname,
117
120
varname= varname,paramname= paramname) for x in O. args]. .. )
118
121
end
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;
120
131
derivname= :du ,varname= :u ,paramname= :p )
121
132
i = findfirst (x-> isequal (x. op. name,de. x. name),vars)
122
133
:($ derivname[$ i] = $ (numbered_expr (de. rhs,vars,parameters;
0 commit comments