Skip to content

Commit b45fcde

Browse files
YingboMaChrisRackauckas
authored andcommitted
Handle overdetermined systems gracefully when fully_determined = false
1 parent 930517e commit b45fcde

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

src/bipartite_graph.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ return `false` may not be matched.
422422
"""
423423
function maximal_matching(g::BipartiteGraph, srcfilter = vsrc -> true,
424424
dstfilter = vdst -> true, ::Type{U} = Unassigned) where {U}
425-
matching = Matching{U}(ndsts(g))
425+
matching = Matching{U}(max(nsrcs(g), ndsts(g)))
426426
foreach(Iterators.filter(srcfilter, 𝑠vertices(g))) do vsrc
427427
construct_augmenting_path!(matching, g, vsrc, dstfilter)
428428
end

src/systems/nonlinear/initializesystem.jl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function initializesystem(sys::ODESystem; name = nameof(sys), guesses = Dict(),
1414
u0 = Vector{Pair}(undef, 0)
1515
defs = ModelingToolkit.defaults(sys)
1616

17-
full_states = [sts;getfield.((observed(sys)),:lhs)]
17+
full_states = [sts; getfield.((observed(sys)), :lhs)]
1818

1919
# Refactor to ODESystem construction
2020
# should be ModelingToolkit.guesses(sys)
@@ -28,26 +28,28 @@ function initializesystem(sys::ODESystem; name = nameof(sys), guesses = Dict(),
2828
def = defs[st]
2929

3030
if def isa Equation
31-
st keys(guesses) && error("Invalid setup: unknown $(st) has an initial condition equation with no guess.")
32-
push!(eqs_ics,def)
33-
push!(u0,st => guesses[st])
31+
st keys(guesses) &&
32+
error("Invalid setup: unknown $(st) has an initial condition equation with no guess.")
33+
push!(eqs_ics, def)
34+
push!(u0, st => guesses[st])
3435
else
35-
push!(eqs_ics,st ~ def)
36+
push!(eqs_ics, st ~ def)
3637
push!(u0, st => def)
3738
end
3839
elseif st keys(guesses)
39-
push!(u0,st => guesses[st])
40+
push!(u0, st => guesses[st])
4041
else
4142
error("Invalid setup: unknown $(st) has no default value or initial guess")
4243
end
4344
end
4445

4546
pars = parameters(sys)
47+
nleqs = [eqs_ics; observed(sys)]
4648

47-
sys_nl = NonlinearSystem([eqs_ics; observed(sys)],
49+
sys_nl = NonlinearSystem(nleqs,
4850
full_states,
4951
pars;
50-
defaults = merge(ModelingToolkit.defaults(sys),todict(u0)),
52+
defaults = merge(ModelingToolkit.defaults(sys), todict(u0)),
5153
name,
5254
kwargs...)
5355

0 commit comments

Comments
 (0)