@@ -107,9 +107,9 @@ function _build_function(target::JuliaTarget, op, args...;
107
107
symsdict = Dict ()
108
108
arg_pairs = map ((x,y)-> vars_to_pairs (x,y, symsdict), argnames, args)
109
109
process = unflatten_long_ops∘ (x-> substitute (x, symsdict, fold= false ))
110
- ls = reduce (vcat,first .(arg_pairs))
110
+ ls = reduce (vcat,conv .( first .(arg_pairs) ))
111
111
rs = reduce (vcat,last .(arg_pairs))
112
- var_eqs = Expr (:(= ), ModelingToolkit. build_expr (:tuple , ls), ModelingToolkit. build_expr (:tuple , process .(rs)))
112
+ var_eqs = Expr (:(= ), ModelingToolkit. build_expr (:tuple , ls), ModelingToolkit. build_expr (:tuple , conv .( process .(rs) )))
113
113
114
114
fname = gensym (:ModelingToolkitFunction )
115
115
op = process (op)
@@ -233,9 +233,11 @@ function _build_function(target::JuliaTarget, rhss::AbstractArray, args...;
233
233
argnames = [gensym (:MTKArg ) for i in 1 : length (args)]
234
234
symsdict = Dict ()
235
235
arg_pairs = map ((x,y)-> vars_to_pairs (x,y, symsdict), argnames, args)
236
- ls = reduce (vcat,first .(arg_pairs))
236
+ process = unflatten_long_ops∘ (x-> substitute (x, symsdict, fold= false ))
237
+
238
+ ls = reduce (vcat,conv .(first .(arg_pairs)))
237
239
rs = reduce (vcat,last .(arg_pairs))
238
- var_eqs = Expr (:(= ), ModelingToolkit. build_expr (:tuple , ls), ModelingToolkit. build_expr (:tuple , rs ))
240
+ var_eqs = Expr (:(= ), ModelingToolkit. build_expr (:tuple , ls), ModelingToolkit. build_expr (:tuple , conv .( process .(rs)) ))
239
241
240
242
fname = gensym (:ModelingToolkitFunction )
241
243
fargs = Expr (:tuple ,argnames... )
@@ -244,8 +246,6 @@ function _build_function(target::JuliaTarget, rhss::AbstractArray, args...;
244
246
oidx = isnothing (outputidxs) ? (i -> i) : (i -> outputidxs[i])
245
247
X = gensym (:MTIIPVar )
246
248
247
- process = unflatten_long_ops∘ (x-> substitute (x, symsdict, fold= false ))
248
-
249
249
if rhss isa SparseMatrixCSC
250
250
rhs_length = length (rhss. nzval)
251
251
rhss = SparseMatrixCSC (rhss. m, rhss. m, rhss. colptr, rhss. rowval, map (process, rhss. nzval))
@@ -464,13 +464,13 @@ end
464
464
function vars_to_pairs (name,vs:: Union{Tuple, AbstractArray} , symsdict= Dict ())
465
465
vs_names = tosymbol .(vs)
466
466
for (v,k) in zip (vs_names, vs)
467
- symsdict[k] = v
467
+ symsdict[k] = Sym {symtype(k)} (v)
468
468
end
469
469
exs = [:($ name[$ i]) for (i, u) ∈ enumerate (vs)]
470
470
vs_names,exs
471
471
end
472
472
function vars_to_pairs (name,vs, symsdict)
473
- symsdict[vs] = tosymbol (vs)
473
+ symsdict[vs] = Sym {symtype(vs)} ( tosymbol (vs) )
474
474
[tosymbol (vs)], [name]
475
475
end
476
476
0 commit comments