Skip to content

Commit 22300ab

Browse files
committed
nlsystem fixes
1 parent 139c4be commit 22300ab

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

src/systems/abstractsystem.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,9 @@ struct AbstractSysToExpr
263263
states::Vector
264264
end
265265
AbstractSysToExpr(sys) = AbstractSysToExpr(sys,states(sys))
266-
function (f::AbstractSysToExpr)(O::Operation)
266+
function (f::AbstractSysToExpr)(O::Term)
267267
any(isequal(O), f.states) && return O.op.name # variables
268268
if isa(O.op, Sym)
269-
isempty(O.args) && return O.op.name # 0-ary parameters
270269
return build_expr(:call, Any[O.op.name; f.(O.args)])
271270
end
272271
return build_expr(:call, Any[O.op; f.(O.args)])

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ struct NonlinearSystem <: AbstractSystem
2525
states::Vector
2626
"""Parameters."""
2727
ps::Vector
28-
pins::Vector{Variable}
28+
pins::Vector
2929
observed::Vector{Equation}
3030
"""
3131
Name: the name of the system
@@ -38,11 +38,11 @@ struct NonlinearSystem <: AbstractSystem
3838
end
3939

4040
function NonlinearSystem(eqs, states, ps;
41-
pins = Variable[],
42-
observed = Operation[],
41+
pins = [],
42+
observed = [],
4343
name = gensym(:NonlinearSystem),
4444
systems = NonlinearSystem[])
45-
NonlinearSystem(eqs, value.(states), value.(ps), pins, observed, name, systems)
45+
NonlinearSystem(eqs, value.(states), value.(ps), value.(pins), observed, name, systems)
4646
end
4747

4848
function calculate_jacobian(sys::NonlinearSystem;sparse=false,simplify=true)
@@ -59,21 +59,19 @@ end
5959
function generate_jacobian(sys::NonlinearSystem, vs = states(sys), ps = parameters(sys);
6060
sparse = false, simplify = true, kwargs...)
6161
jac = calculate_jacobian(sys,sparse=sparse, simplify=simplify)
62-
return build_function(jac, convert.(Variable,vs), convert.(Variable,ps);
62+
return build_function(jac, vs, ps;
6363
conv = AbstractSysToExpr(sys), kwargs...)
6464
end
6565

6666
function generate_function(sys::NonlinearSystem, vs = states(sys), ps = parameters(sys); kwargs...)
6767
rhss = [eq.rhs for eq sys.eqs]
68-
vs′ = convert.(Variable,vs)
69-
ps′ = convert.(Variable,ps)
70-
return build_function(rhss, vs′, ps′;
68+
return build_function(rhss, vs, ps;
7169
conv = AbstractSysToExpr(sys), kwargs...)
7270
end
7371

7472
jacobian_sparsity(sys::NonlinearSystem) =
7573
jacobian_sparsity([eq.rhs for eq equations(sys)],
76-
[dv() for dv in states(sys)])
74+
states(sys))
7775

7876
"""
7977
```julia

test/nonlinearsystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using ModelingToolkit, StaticArrays, LinearAlgebra
22
using DiffEqBase, SparseArrays
33
using Test
4+
using ModelingToolkit: value
45

56
canonequal(a, b) = isequal(simplify(a), simplify(b))
67

@@ -10,8 +11,8 @@ canonequal(a, b) = isequal(simplify(a), simplify(b))
1011

1112
function test_nlsys_inference(name, sys, vs, ps)
1213
@testset "NonlinearSystem construction: $name" begin
13-
@test Set(states(sys)) == Set(convert.(Variable,vs))
14-
@test Set(parameters(sys)) == Set(convert.(Variable,ps))
14+
@test Set(states(sys)) == Set(value.(vs))
15+
@test Set(parameters(sys)) == Set(value.(ps))
1516
end
1617
end
1718

0 commit comments

Comments
 (0)