Skip to content

Commit 1335076

Browse files
Merge pull request #939 from vyudu/print_initialization_info
Fix summary errors
2 parents 99e7b86 + 7a77645 commit 1335076

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

src/initialization.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,11 @@ end
301301
function initialization_status(prob::AbstractSciMLProblem)
302302
has_initialization_data(prob.f) || return nothing
303303

304-
sys = prob.f.initialization_data.initializeprob.f.sys
305-
isnothing(sys) && return nothing
304+
iprob = prob.f.initialization_data.initializeprob
305+
isnothing(prob) && return nothing
306306

307-
neqs = length(equations(sys))
308-
nunknowns = length(unknowns(sys))
307+
neqs = length(iprob.f(iprob.u0, iprob.p))
308+
nunknowns = length(iprob.u0)
309309

310310
if neqs > nunknowns
311311
return OVERDETERMINED

src/problems/problem_utils.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,15 @@ function Base.summary(io::IO, prob::AbstractDEProblem)
2929
no_color,
3030
". In-place: ", type_color, isinplace(prob), no_color)
3131
init = initialization_status(prob)
32-
!isnothing(init) && print(io, "Initialization status: ", type_color, initialization_status(prob), no_color)
33-
println(io)
34-
print(io, "Non-trivial mass matrix: ", type_color, !(prob.f.mass_matrix isa LinearAlgebra.UniformScaling{Bool}), no_color)
32+
!isnothing(init) && begin
33+
println(io)
34+
print(io, "Initialization status: ", type_color, initialization_status(prob), no_color)
35+
end
36+
37+
hasproperty(prob.f, :mass_matrix) && begin
38+
println(io)
39+
print(io, "Non-trivial mass matrix: ", type_color, !(prob.f.mass_matrix isa LinearAlgebra.UniformScaling{Bool}), no_color)
40+
end
3541
end
3642

3743
function Base.summary(io::IO, prob::AbstractLinearProblem)

test/downstream/initialization.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,21 @@ end
5858
@test getp(sys, p)(pobj) 1.0
5959
@test getp(sys, q)(pobj) sqrt(2)
6060
end
61+
62+
@testset "Initialization info printed" begin
63+
@parameters g
64+
@variables x(t) y(t) [state_priority = 10] λ(t)
65+
eqs = [D(D(x)) ~ λ * x
66+
D(D(y)) ~ λ * y - g
67+
x^2 + y^2 ~ 1]
68+
@mtkbuild pend = ODESystem(eqs, t)
69+
70+
prob = ODEProblem(pend, [x => 1, y => 0], (0.0, 1.5), [g => 1], guesses ==> 1])
71+
@test occursin("Initialization status: FULLY_DETERMINED", sprint(summary, prob))
72+
73+
prob = ODEProblem(pend, [], (0.0, 1.5), [g => 1], guesses ==> 1, x => 1, y => 0])
74+
@test occursin("Initialization status: UNDERDETERMINED", sprint(summary, prob))
75+
76+
prob = ODEProblem(pend, [x => 1, y => 0, λ => 2], (0.0, 1.5), [g => 1])
77+
@test occursin("Initialization status: OVERDETERMINED", sprint(summary, prob))
78+
end

0 commit comments

Comments
 (0)