Skip to content

Commit 8060da7

Browse files
fix: disallow parameter values in initial conditions
1 parent e1befe0 commit 8060da7

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/systems/parameter_buffer.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ function MTKParameters(
3838
elseif u0 === nothing || isempty(u0)
3939
u0 = Dict()
4040
end
41+
for sym in keys(u0)
42+
if is_parameter(sys, sym)
43+
error("Encountered parameter $sym in initial conditions")
44+
end
45+
end
4146
defs = merge(defs, u0)
4247
defs = merge(Dict(eq.lhs => eq.rhs for eq in observed(sys)), defs)
4348
p = merge(defs, p)

test/mtkparameters.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,15 @@ function loss(x)
224224
end
225225

226226
@test_nowarn ForwardDiff.gradient(loss, collect(tunables))
227+
228+
# Issue#2692
229+
@variables x(t)
230+
@parameters p d
231+
@mtkbuild osys = ODESystem(D(x) ~ p - d * x, t)
232+
u0 = [x => 5.0, d => 0.2]
233+
ps = [p => 5.0]
234+
@test_throws "Encountered parameter $d in initial conditions" ODEProblem(
235+
osys, u0, (0.0, 1.0), ps)
236+
u0 = [x => 5.0]
237+
ps = [p => 5.0, d => 0.2]
238+
@test_nowarn ODEProblem(osys, u0, (0.0, 1.0), ps)

0 commit comments

Comments
 (0)