Skip to content

Commit 23cf2d6

Browse files
Merge pull request #3647 from AayushSabharwal/as/fix-oop-solve
fix: fix solving out-of-place `split = false` ODEs
2 parents a6fa1cc + 59832b8 commit 23cf2d6

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/systems/problem_utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,7 @@ function (siu::SetInitialUnknowns)(p::MTKParameters, u0)
988988
return p
989989
end
990990

991-
function (siu::SetInitialUnknowns)(p::Vector, u0)
991+
function (siu::SetInitialUnknowns)(p::AbstractVector, u0)
992992
if ArrayInterface.ismutable(p)
993993
siu.setter!(p, u0)
994994
else

test/odesystem.jl

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,3 +1730,28 @@ end
17301730
@test obsfn_expr_oop isa Expr
17311731
@test obsfn_expr_iip isa Expr
17321732
end
1733+
1734+
@testset "Solve with `split=false` static arrays" begin
1735+
@parameters σ ρ β
1736+
@variables x(t) y(t) z(t)
1737+
1738+
eqs = [D(D(x)) ~ σ * (y - x),
1739+
D(y) ~ x *- z) - y,
1740+
D(z) ~ x * y - β * z]
1741+
1742+
@mtkbuild sys=ODESystem(eqs, t) split=false
1743+
1744+
u0 = SA[D(x) => 2.0f0,
1745+
x => 1.0f0,
1746+
y => 0.0f0,
1747+
z => 0.0f0]
1748+
1749+
p = SA[σ => 28.0f0,
1750+
ρ => 10.0f0,
1751+
β => 8.0f0 / 3.0f0]
1752+
1753+
tspan = (0.0f0, 100.0f0)
1754+
prob = ODEProblem{false}(sys, u0, tspan, p)
1755+
sol = solve(prob, Tsit5())
1756+
@test SciMLBase.successful_retcode(sol)
1757+
end

0 commit comments

Comments
 (0)