Skip to content

Commit d819c31

Browse files
Merge pull request #936 from vyudu/print_initialization_info
Showing initialization information for `AbstractDEProblem`
2 parents c0031c5 + f14941c commit d819c31

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

src/initialization.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,23 @@ end
295295
function is_trivial_initialization(prob::AbstractSciMLProblem)
296296
is_trivial_initialization(prob.f)
297297
end
298+
299+
@enum DETERMINED_STATUS OVERDETERMINED FULLY_DETERMINED UNDERDETERMINED
300+
301+
function initialization_status(prob::AbstractSciMLProblem)
302+
has_initialization_data(prob.f) || return nothing
303+
304+
sys = prob.f.initialization_data.initializeprob.f.sys
305+
isnothing(sys) && return nothing
306+
307+
neqs = length(equations(sys))
308+
nunknowns = length(unknowns(sys))
309+
310+
if neqs > nunknowns
311+
return OVERDETERMINED
312+
elseif neqs < nunknowns
313+
return UNDERDETERMINED
314+
else
315+
return FULLY_DETERMINED
316+
end
317+
end

src/problems/problem_utils.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@ function Base.summary(io::IO, prob::AbstractDEProblem)
2626
prob.tspan isa Function ?
2727
"Unknown" : (prob.tspan === nothing ?
2828
"Nothing" : typeof(prob.tspan[1])),
29-
no_color, ". In-place: ",
30-
type_color, isinplace(prob),
31-
no_color)
29+
no_color,
30+
". In-place: ", type_color, isinplace(prob), no_color)
31+
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)
3235
end
3336

3437
function Base.summary(io::IO, prob::AbstractLinearProblem)
@@ -111,6 +114,7 @@ function Base.show(io::IO, mime::MIME"text/plain", A::AbstractDEProblem)
111114
println(io)
112115
print(io, "u0: ")
113116
show(io, mime, A.u0)
117+
114118
end
115119
function Base.show(io::IO, mime::MIME"text/plain", A::AbstractNoiseProblem)
116120
summary(io, A)

0 commit comments

Comments
 (0)