Skip to content

Commit 7b451b4

Browse files
Merge pull request #3105 from AayushSabharwal/as/callable-params-topsort
fix: handle unknowns inside callable parameters when topsorting equations
2 parents 535d1f4 + c3deaf9 commit 7b451b4

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ SpecialFunctions = "0.7, 0.8, 0.9, 0.10, 1.0, 2"
126126
StaticArrays = "0.10, 0.11, 0.12, 1.0"
127127
SymbolicIndexingInterface = "0.3.31"
128128
SymbolicUtils = "3.7"
129-
Symbolics = "6.12"
129+
Symbolics = "6.14"
130130
URIs = "1"
131131
UnPack = "0.1, 1.0"
132132
Unitful = "1.1"

src/utils.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,14 @@ function vars!(vars, eq::Equation; op = Differential)
383383
end
384384
function vars!(vars, O; op = Differential)
385385
if isvariable(O)
386+
if iscalledparameter(O)
387+
f = getcalledparameter(O)
388+
push!(vars, f)
389+
for arg in arguments(O)
390+
vars!(vars, arg; op)
391+
end
392+
return vars
393+
end
386394
return push!(vars, O)
387395
end
388396
if symbolic_type(O) == NotSymbolic() && O isa AbstractArray

test/structural_transformation/utils.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,11 @@ se = collect(StructuralTransformations.edges(graph))
3232
@test se == mapreduce(vcat, enumerate(graph.fadjlist)) do (s, d)
3333
StructuralTransformations.BipartiteEdge.(s, d)
3434
end
35+
36+
@testset "observed2graph handles unknowns inside callable parameters" begin
37+
@variables x(t) y(t)
38+
@parameters p(..)
39+
g, _ = ModelingToolkit.observed2graph([y ~ p(x), x ~ 0], [y, x])
40+
@test ModelingToolkit.𝑠neighbors(g, 1) == [2]
41+
@test ModelingToolkit.𝑑neighbors(g, 2) == [1]
42+
end

0 commit comments

Comments
 (0)