Skip to content

Commit 7c7412b

Browse files
committed
Merge branch 'master' into fb/builddocs
2 parents c257653 + 137e7a2 commit 7c7412b

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ModelingToolkit"
22
uuid = "961ee093-0014-501f-94e3-6117800e7a78"
33
authors = ["Chris Rackauckas <[email protected]>"]
4-
version = "8.11.0"
4+
version = "8.11.2"
55

66
[deps]
77
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"

src/structural_transformation/utils.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,20 @@ function find_var_sccs(g::BipartiteGraph, assign=nothing)
109109
return sccs
110110
end
111111

112-
function sorted_incidence_matrix(sys, val=true; only_algeqs=false, only_algvars=false)
113-
var_eq_matching, var_scc = algebraic_variables_scc(sys)
114-
s = structure(sys)
115-
@unpack fullvars, graph = s
116-
g = graph
112+
function sorted_incidence_matrix(ts::TransformationState, val=true; only_algeqs=false, only_algvars=false)
113+
var_eq_matching, var_scc = algebraic_variables_scc(ts)
114+
fullvars = ts.fullvars
115+
s = ts.structure
116+
graph = ts.structure.graph
117117
varsmap = zeros(Int, ndsts(graph))
118118
eqsmap = zeros(Int, nsrcs(graph))
119119
varidx = 0
120120
eqidx = 0
121-
for vs in scc, v in vs
121+
for vs in var_scc, v in vs
122122
eq = var_eq_matching[v]
123123
if eq !== unassigned
124124
eqsmap[eq] = (eqidx += 1)
125-
varsmap[var] = (varidx += 1)
125+
varsmap[v] = (varidx += 1)
126126
end
127127
end
128128
for i in diffvars_range(s)
@@ -139,9 +139,10 @@ function sorted_incidence_matrix(sys, val=true; only_algeqs=false, only_algvars=
139139

140140
I = Int[]
141141
J = Int[]
142-
for eq in 𝑠vertices(g)
143-
only_algeqs && (isalgeq(s, eq) || continue)
144-
for var in 𝑠neighbors(g, eq)
142+
algeqs_set = algeqs(s)
143+
for eq in 𝑠vertices(graph)
144+
only_algeqs && (eq in algeqs_set || continue)
145+
for var in 𝑠neighbors(graph, eq)
145146
only_algvars && (isalgvar(s, var) || continue)
146147
i = eqsmap[eq]
147148
j = varsmap[var]

src/systems/abstractsystem.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ end
171171

172172
Base.:(==)(e1::SymbolicContinuousCallback, e2::SymbolicContinuousCallback) = isequal(e1.eqs, e2.eqs) && isequal(e1.affect, e2.affect)
173173
Base.isempty(cb::SymbolicContinuousCallback) = isempty(cb.eqs)
174+
function Base.hash(cb::SymbolicContinuousCallback, s::UInt)
175+
s = foldr(hash, cb.eqs, init=s)
176+
foldr(hash, cb.affect, init=s)
177+
end
174178

175179
to_equation_vector(eq::Equation) = [eq]
176180
to_equation_vector(eqs::Vector{Equation}) = eqs
@@ -736,7 +740,7 @@ end
736740
function Base.show(io::IO, ::MIME"text/plain", sys::AbstractSystem)
737741
eqs = equations(sys)
738742
vars = states(sys); nvars = length(vars)
739-
if eqs isa AbstractArray
743+
if eqs isa AbstractArray && eltype(eqs) <: Equation
740744
neqs = count(eq->!(eq.lhs isa Connection), eqs)
741745
Base.printstyled(io, "Model $(nameof(sys)) with $neqs "; bold=true)
742746
nextras = n_extra_equations(sys)

test/odesystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ eqs = [D(x) ~ σ*(y-x),
1919
ModelingToolkit.toexpr.(eqs)[1]
2020
@named de = ODESystem(eqs; defaults=Dict(x => 1))
2121
@test eval(toexpr(de)) == de
22+
@test hash(deepcopy(de)) == hash(de)
2223

2324
generate_function(de)
2425

0 commit comments

Comments
 (0)