Skip to content

Commit e1a9a06

Browse files
authored
Merge pull request #2166 from SciML/myb/no_body
Drop expr body in RGF
2 parents 806e067 + 592bad1 commit e1a9a06

File tree

13 files changed

+41
-30
lines changed

13 files changed

+41
-30
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ MacroTools = "0.5"
7979
NaNMath = "0.3, 1"
8080
RecursiveArrayTools = "2.3"
8181
Reexport = "0.2, 1"
82-
RuntimeGeneratedFunctions = "0.4.3, 0.5"
82+
RuntimeGeneratedFunctions = "0.5.9"
8383
SciMLBase = "1.76.1"
8484
Setfield = "0.7, 0.8, 1"
8585
SimpleNonlinearSolve = "0.1.0"

src/ModelingToolkit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ using JumpProcesses
1818
using DataStructures
1919
using SpecialFunctions, NaNMath
2020
using RuntimeGeneratedFunctions
21+
using RuntimeGeneratedFunctions: drop_expr
2122
using Base.Threads
2223
using DiffEqCallbacks
2324
using Graphs

src/structural_transformation/StructuralTransformations.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ using ModelingToolkit.SystemStructures: algeqs, EquationsView
3434

3535
using ModelingToolkit.DiffEqBase
3636
using ModelingToolkit.StaticArrays
37-
using ModelingToolkit: @RuntimeGeneratedFunction, RuntimeGeneratedFunctions
37+
using RuntimeGeneratedFunctions: @RuntimeGeneratedFunction, RuntimeGeneratedFunctions,
38+
drop_expr
3839

3940
RuntimeGeneratedFunctions.init(@__MODULE__)
4041

src/structural_transformation/codegen.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ function gen_nlsolve!(is_not_prepended_assignment, eqs, vars, u0map::AbstractDic
219219
end
220220

221221
nlsolve_expr = Assignment[preassignments
222-
fname @RuntimeGeneratedFunction(f)
222+
fname drop_expr(@RuntimeGeneratedFunction(f))
223223
DestructuredArgs(vars, inbounds = !checkbounds) solver_call]
224224

225225
nlsolve_expr
@@ -345,7 +345,7 @@ function build_torn_function(sys;
345345
end
346346
end
347347

348-
ODEFunction{true, SciMLBase.AutoSpecialize}(@RuntimeGeneratedFunction(expr),
348+
ODEFunction{true, SciMLBase.AutoSpecialize}(drop_expr(@RuntimeGeneratedFunction(expr)),
349349
sparsity = jacobian_sparsity ?
350350
torn_system_with_nlsolve_jacobian_sparsity(state,
351351
var_eq_matching,
@@ -501,7 +501,7 @@ function build_observed_function(state, ts, var_eq_matching, var_sccs,
501501
isscalar ? ts[1] : MakeArray(ts, output_type),
502502
false))), sol_states)
503503

504-
expression ? ex : @RuntimeGeneratedFunction(ex)
504+
expression ? ex : drop_expr(@RuntimeGeneratedFunction(ex))
505505
end
506506

507507
"""

src/systems/callbacks.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,8 @@ function compile_affect(eqs::Vector{Equation}, sys, dvs, ps; outputidxs = nothin
354354
# applied user-provided function to the generated expression
355355
if postprocess_affect_expr! !== nothing
356356
postprocess_affect_expr!(rf_ip, integ)
357-
(expression == Val{false}) && (return @RuntimeGeneratedFunction(rf_ip))
357+
(expression == Val{false}) &&
358+
(return drop_expr(@RuntimeGeneratedFunction(rf_ip)))
358359
end
359360
rf_ip
360361
end

src/systems/clock_inference.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ function generate_discrete_affect(syss, inputs, continuous_id, id_to_clock;
219219
end
220220
if eval_expression
221221
affects = map(affect_funs) do a
222-
@RuntimeGeneratedFunction(eval_module, toexpr(LiteralExpr(a)))
222+
drop_expr(@RuntimeGeneratedFunction(eval_module, toexpr(LiteralExpr(a))))
223223
end
224224
else
225225
affects = map(a -> toexpr(LiteralExpr(a)), affect_funs)

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,8 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem, dvs = s
281281
expression_module = eval_module, checkbounds = checkbounds,
282282
kwargs...)
283283
f_oop, f_iip = eval_expression ?
284-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in f_gen) : f_gen
284+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in f_gen) :
285+
f_gen
285286
f(u, p, t) = f_oop(u, p, t)
286287
f(du, u, p, t) = f_iip(du, u, p, t)
287288

@@ -299,7 +300,7 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem, dvs = s
299300
expression_module = eval_module,
300301
checkbounds = checkbounds, kwargs...)
301302
tgrad_oop, tgrad_iip = eval_expression ?
302-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in tgrad_gen) :
303+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in tgrad_gen) :
303304
tgrad_gen
304305
_tgrad(u, p, t) = tgrad_oop(u, p, t)
305306
_tgrad(J, u, p, t) = tgrad_iip(J, u, p, t)
@@ -314,7 +315,7 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem, dvs = s
314315
expression_module = eval_module,
315316
checkbounds = checkbounds, kwargs...)
316317
jac_oop, jac_iip = eval_expression ?
317-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in jac_gen) :
318+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in jac_gen) :
318319
jac_gen
319320
_jac(u, p, t) = jac_oop(u, p, t)
320321
_jac(J, u, p, t) = jac_iip(J, u, p, t)
@@ -423,7 +424,8 @@ function DiffEqBase.DAEFunction{iip}(sys::AbstractODESystem, dvs = states(sys),
423424
expression_module = eval_module, checkbounds = checkbounds,
424425
kwargs...)
425426
f_oop, f_iip = eval_expression ?
426-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in f_gen) : f_gen
427+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in f_gen) :
428+
f_gen
427429
f(du, u, p, t) = f_oop(du, u, p, t)
428430
f(out, du, u, p, t) = f_iip(out, du, u, p, t)
429431

@@ -434,7 +436,7 @@ function DiffEqBase.DAEFunction{iip}(sys::AbstractODESystem, dvs = states(sys),
434436
expression_module = eval_module,
435437
checkbounds = checkbounds, kwargs...)
436438
jac_oop, jac_iip = eval_expression ?
437-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in jac_gen) :
439+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in jac_gen) :
438440
jac_gen
439441
_jac(du, u, p, ˍ₋gamma, t) = jac_oop(du, u, p, ˍ₋gamma, t)
440442

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ function build_explicit_observed_function(sys, ts;
387387
pre(Let(obsexprs,
388388
isscalar ? ts[1] : MakeArray(ts, output_type),
389389
false))) |> toexpr
390-
expression ? ex : @RuntimeGeneratedFunction(ex)
390+
expression ? ex : drop_expr(@RuntimeGeneratedFunction(ex))
391391
end
392392

393393
function _eq_unordered(a, b)

src/systems/diffeqs/sdesystem.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -385,10 +385,12 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = states(sys),
385385
ps = scalarize.(ps)
386386

387387
f_gen = generate_function(sys, dvs, ps; expression = Val{eval_expression}, kwargs...)
388-
f_oop, f_iip = eval_expression ? (@RuntimeGeneratedFunction(ex) for ex in f_gen) : f_gen
388+
f_oop, f_iip = eval_expression ?
389+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in f_gen) : f_gen
389390
g_gen = generate_diffusion_function(sys, dvs, ps; expression = Val{eval_expression},
390391
kwargs...)
391-
g_oop, g_iip = eval_expression ? (@RuntimeGeneratedFunction(ex) for ex in g_gen) : g_gen
392+
g_oop, g_iip = eval_expression ?
393+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in g_gen) : g_gen
392394

393395
f(u, p, t) = f_oop(u, p, t)
394396
f(du, u, p, t) = f_iip(du, u, p, t)
@@ -399,7 +401,7 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = states(sys),
399401
tgrad_gen = generate_tgrad(sys, dvs, ps; expression = Val{eval_expression},
400402
kwargs...)
401403
tgrad_oop, tgrad_iip = eval_expression ?
402-
(@RuntimeGeneratedFunction(ex) for ex in tgrad_gen) :
404+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in tgrad_gen) :
403405
tgrad_gen
404406
_tgrad(u, p, t) = tgrad_oop(u, p, t)
405407
_tgrad(J, u, p, t) = tgrad_iip(J, u, p, t)
@@ -411,7 +413,8 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = states(sys),
411413
jac_gen = generate_jacobian(sys, dvs, ps; expression = Val{eval_expression},
412414
sparse = sparse, kwargs...)
413415
jac_oop, jac_iip = eval_expression ?
414-
(@RuntimeGeneratedFunction(ex) for ex in jac_gen) : jac_gen
416+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in jac_gen) :
417+
jac_gen
415418
_jac(u, p, t) = jac_oop(u, p, t)
416419
_jac(J, u, p, t) = jac_iip(J, u, p, t)
417420
else
@@ -422,10 +425,10 @@ function DiffEqBase.SDEFunction{iip}(sys::SDESystem, dvs = states(sys),
422425
tmp_Wfact, tmp_Wfact_t = generate_factorized_W(sys, dvs, ps, true;
423426
expression = Val{true}, kwargs...)
424427
Wfact_oop, Wfact_iip = eval_expression ?
425-
(@RuntimeGeneratedFunction(ex) for ex in tmp_Wfact) :
428+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in tmp_Wfact) :
426429
tmp_Wfact
427430
Wfact_oop_t, Wfact_iip_t = eval_expression ?
428-
(@RuntimeGeneratedFunction(ex) for ex in tmp_Wfact_t) :
431+
(drop_expr(@RuntimeGeneratedFunction(ex)) for ex in tmp_Wfact_t) :
429432
tmp_Wfact_t
430433
_Wfact(u, p, dtgamma, t) = Wfact_oop(u, p, dtgamma, t)
431434
_Wfact(W, u, p, dtgamma, t) = Wfact_iip(W, u, p, dtgamma, t)

src/systems/discrete_system/discrete_system.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ function SciMLBase.DiscreteProblem(sys::DiscreteSystem, u0map = [], tspan = get_
227227

228228
f_gen = generate_function(sys; expression = Val{eval_expression},
229229
expression_module = eval_module)
230-
f_oop, _ = (@RuntimeGeneratedFunction(eval_module, ex) for ex in f_gen)
230+
f_oop, _ = (drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in f_gen)
231231
f(u, p, iv) = f_oop(u, p, iv)
232232
fd = DiscreteFunction(f; syms = Symbol.(dvs), indepsym = Symbol(iv),
233233
paramsyms = Symbol.(ps), sys = sys)
@@ -339,7 +339,8 @@ function SciMLBase.DiscreteFunction{iip, specialize}(sys::DiscreteSystem,
339339
f_gen = generate_function(sys, dvs, ps; expression = Val{eval_expression},
340340
expression_module = eval_module, kwargs...)
341341
f_oop, f_iip = eval_expression ?
342-
(@RuntimeGeneratedFunction(eval_module, ex) for ex in f_gen) : f_gen
342+
(drop_expr(@RuntimeGeneratedFunction(eval_module, ex)) for ex in f_gen) :
343+
f_gen
343344
f(u, p, t) = f_oop(u, p, t)
344345
f(du, u, p, t) = f_iip(du, u, p, t)
345346

0 commit comments

Comments
 (0)