Skip to content

Commit 34e01d0

Browse files
almost to new GeneratedGeneralized
1 parent 712723f commit 34e01d0

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

src/systems/diffeqs/diffeqsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ function (f::ODEToExpr)(O::Operation)
156156
isempty(O.args) && return O.op.name # 0-ary parameters
157157
return build_expr(:call, Any[O.op.name; f.(O.args)])
158158
end
159-
return build_expr(:call, Any[O.op; f.(O.args)])
159+
return build_expr(:call, Any[Symbol(O.op); f.(O.args)])
160160
end
161161
(f::ODEToExpr)(x) = convert(Expr, x)
162162

src/utils.jl

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,6 @@ function flatten_expr!(x)
3131
x
3232
end
3333

34-
mk_function(args, kwargs, body) =
35-
let Args = args |> GeneralizedGenerated.expr2typelevel,
36-
Kwargs = kwargs |> GeneralizedGenerated.expr2typelevel,
37-
Body = body |> GeneralizedGenerated.expr2typelevel
38-
GeneralizedGenerated.RuntimeFn{Args, Kwargs, Body}()
39-
end
40-
4134
function build_function(rhss, vs, ps = (), args = (), conv = simplified_expr, expression = Val{true}; constructor=nothing)
4235
_vs = map(x-> x isa Operation ? x.op : x, vs)
4336
_ps = map(x-> x isa Operation ? x.op : x, ps)
@@ -58,22 +51,30 @@ function build_function(rhss, vs, ps = (), args = (), conv = simplified_expr, ex
5851

5952
fargs = ps == () ? :(u,$(args...)) : :(u,p,$(args...))
6053

54+
oop_ex = :(
55+
function $fname($(fargs.args...))
56+
X = $let_expr
57+
T = promote_type(map(typeof,X)...)
58+
convert.(T,X)
59+
construct = $(constructor === nothing ? :(u isa ModelingToolkit.StaticArrays.StaticArray ? ModelingToolkit.StaticArrays.similar_type(typeof(u), eltype(X)) : x->(du=similar(u, T, $(size(rhss)...)); vec(du) .= x; du)) : constructor)
60+
construct(X)
61+
end
62+
)
63+
64+
iip_ex = :(
65+
function $fname($X,$(fargs.args...))
66+
$ip_let_expr
67+
nothing
68+
end
69+
)
70+
6171
if expression == Val{true}
6272
return quote
63-
function $fname($X,$(fargs.args...))
64-
$ip_let_expr
65-
nothing
66-
end
67-
function $fname($(fargs.args...))
68-
X = $let_expr
69-
T = promote_type(map(typeof,X)...)
70-
convert.(T,X)
71-
construct = $(constructor === nothing ? :(u isa ModelingToolkit.StaticArrays.StaticArray ? ModelingToolkit.StaticArrays.similar_type(typeof(u), eltype(X)) : x->(du=similar(u, T, $(size(rhss)...)); vec(du) .= x; du)) : constructor)
72-
construct(X)
73-
end
73+
$oop_ex
74+
$iip_ex
7475
end
7576
else
76-
return mk_function(fargs,:(),let_expr), mk_function(:($X,$(fargs.args...)),:(),ip_let_expr)
77+
return GeneralizedGenerated.mk_function(oop_ex), GeneralizedGenerated.mk_function(iip_ex)
7778
end
7879
end
7980

0 commit comments

Comments
 (0)