Skip to content

Commit c0235a5

Browse files
Merge pull request #3454 from ashutosh-b-b/bb/build_explicit_observed_function
Fix: Make `build explicit observed function` return Expr when `expression=true`
2 parents 2db7f5f + 3d5fdd8 commit c0235a5

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/systems/diffeqs/odesystem.jl

+6
Original file line numberDiff line numberDiff line change
@@ -574,12 +574,18 @@ function build_explicit_observed_function(sys, ts;
574574
sys, ts, args...; p_start, p_end, filter_observed = obsfilter,
575575
output_type, mkarray, try_namespaced = true, expression = Val{true})
576576
if fns isa Tuple
577+
if expression
578+
return return_inplace ? fns : fns[1]
579+
end
577580
oop, iip = eval_or_rgf.(fns; eval_expression, eval_module)
578581
f = GeneratedFunctionWrapper{(
579582
p_start + is_dde(sys), length(args) - length(ps) + 1 + is_dde(sys), is_split(sys))}(
580583
oop, iip)
581584
return return_inplace ? (f, f) : f
582585
else
586+
if expression
587+
return fns
588+
end
583589
f = eval_or_rgf(fns; eval_expression, eval_module)
584590
f = GeneratedFunctionWrapper{(
585591
p_start + is_dde(sys), length(args) - length(ps) + 1 + is_dde(sys), is_split(sys))}(

test/odesystem.jl

+12
Original file line numberDiff line numberDiff line change
@@ -1724,3 +1724,15 @@ end
17241724
@mtkbuild ode = ODESystem(D(x(t)) ~ mat * x(t), t; constraints = cons)
17251725
@test length(constraints(ModelingToolkit.get_constraintsystem(ode))) == 5
17261726
end
1727+
1728+
@testset "`build_explicit_observed_function` with `expression = true` returns `Expr`" begin
1729+
@variables x(t)
1730+
@mtkbuild sys = ODESystem(D(x) ~ 2x, t)
1731+
obsfn_expr = ModelingToolkit.build_explicit_observed_function(
1732+
sys, 2x + 1, expression = true)
1733+
@test obsfn_expr isa Expr
1734+
obsfn_expr_oop, obsfn_expr_iip = ModelingToolkit.build_explicit_observed_function(
1735+
sys, [x + 1, x + 2, x + t], return_inplace = true, expression = true)
1736+
@test obsfn_expr_oop isa Expr
1737+
@test obsfn_expr_iip isa Expr
1738+
end

0 commit comments

Comments
 (0)