Skip to content

Commit 30931ca

Browse files
add parameter call finding helper
1 parent 006e459 commit 30931ca

File tree

5 files changed

+28
-1
lines changed

5 files changed

+28
-1
lines changed

src/ModelingToolkit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module ModelingToolkit
33
export Operation, Expression
44
export calculate_jacobian, generate_jacobian, generate_function
55
export independent_variables, dependent_variables, parameters
6+
export find_parameter_calls
67
export @register
78

89

src/equations.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,14 @@ Base.:(==)(a::Equation, b::Equation) = isequal((a.lhs, a.rhs), (b.lhs, b.rhs))
1010
Base.:~(lhs::Expression, rhs::Expression) = Equation(lhs, rhs)
1111
Base.:~(lhs::Expression, rhs::Number ) = Equation(lhs, rhs)
1212
Base.:~(lhs::Number , rhs::Expression) = Equation(lhs, rhs)
13+
14+
function find_parameter_calls(O::Operation,p_calls=Variable[])
15+
if O.op isa Variable && O.op.known && !isempty(O.args)
16+
push!(p_calls,O.op)
17+
find_parameter_calls.(O.args,(p_calls,))
18+
else
19+
find_parameter_calls.(O.args,(p_calls,))
20+
end
21+
p_calls
22+
end
23+
find_parameter_calls(O,p_calls) = nothing

src/variables.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export Variable, @variables, @parameters, @dependent_parameters
1+
export Variable, @variables, @parameters
22

33

44
struct Variable <: Function

test/find_parameter_calls.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using ModelingToolkit
2+
using Test
3+
4+
# Define some variables
5+
@parameters t σ ρ β, α(..)
6+
@variables x(t) y(t) z(t)
7+
@derivatives D'~t
8+
9+
eq1 = D(x) ~ σ*(y-x)
10+
eq2 = D(x) ~ α(t-2)*(y-x)
11+
12+
find_parameter_calls(eq1.rhs,Variable[])
13+
r = find_parameter_calls(eq2.rhs,Variable[])
14+
!isempty(r) && r[1].name ==

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ using ModelingToolkit, Test
33
@testset "Parsing Test" begin include("variable_parsing.jl") end
44
@testset "Differentiation Test" begin include("derivatives.jl") end
55
@testset "Simplify Test" begin include("simplify.jl") end
6+
@testset "Parameter Call Finding Test" begin include("find_parameter_calls.jl") end
67
@testset "System Construction Test" begin include("system_construction.jl") end

0 commit comments

Comments
 (0)