Skip to content

Commit 4cb17cd

Browse files
Merge pull request #3001 from hersle/fix_mtkmodel_iv
Fix @mtkmodel independent variable generation
2 parents 6195049 + dc954e8 commit 4cb17cd

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/independent_variables.jl

+3
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ Define one or more independent variables. For example:
99
macro independent_variables(ts...)
1010
:(@parameters $(ts...)) |> esc # TODO: treat independent variables separately from variables and parameters
1111
end
12+
13+
toiv(s::Symbolic) = setmetadata(s, MTKVariableTypeCtx, PARAMETER)
14+
toiv(s::Num) = Num(toiv(value(s)))

src/systems/model_parsing.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ function generate_var(a, varclass;
284284
first(@variables $a[indices...]::type)
285285
if varclass == :parameters
286286
var = toparam(var)
287+
elseif varclass == :independent_variables
288+
var = toiv(var)
287289
end
288290
var
289291
end
@@ -315,7 +317,7 @@ end
315317
function generate_var!(dict, a, b, varclass, mod;
316318
indices::Union{Vector{UnitRange{Int}}, Nothing} = nothing,
317319
type = Real)
318-
iv = b == :t ? get_t(mod, b) : generate_var(b, :variables)
320+
iv = b == :t ? get_t(mod, b) : generate_var(b, :independent_variables)
319321
prev_iv = get!(dict, :independent_variable) do
320322
iv
321323
end

test/odesystem.jl

+12
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,18 @@ end
12021202
@variables y(x)
12031203
@test_nowarn @named sys = ODESystem([y ~ 0], x)
12041204

1205+
# the same, but with @mtkmodel
1206+
@independent_variables x
1207+
@mtkmodel MyModel begin
1208+
@variables begin
1209+
y(x)
1210+
end
1211+
@equations begin
1212+
y ~ 0
1213+
end
1214+
end
1215+
@test_nowarn @mtkbuild sys = MyModel()
1216+
12051217
@variables x y(x)
12061218
@test_logs (:warn,) @named sys = ODESystem([y ~ 0], x)
12071219

0 commit comments

Comments
 (0)