Skip to content

Commit 4e5e723

Browse files
handle arrays
1 parent 7002310 commit 4e5e723

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,6 +1576,9 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
15761576
end
15771577

15781578
uninit = setdiff(unknowns(sys), [unknowns(isys); getfield.(observed(isys), :lhs)])
1579+
1580+
# TODO: throw on uninitialized arrays
1581+
filter!(x -> x isa Symbolics.Arr, uninit)
15791582
if !isempty(uninit)
15801583
throw(IncompleteInitializationError(uninit))
15811584
end

src/systems/nonlinear/initializesystem.jl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,16 @@ function generate_initializesystem(sys::ODESystem;
2727
guessmap = [x[2] => get(guesses, x[1], default_dd_value)
2828
for x in schedule.dummy_sub]
2929
dd_guess = Dict(filter(x -> !isnothing(x[1]), guessmap))
30-
filtered_u0 = u0map === nothing || isempty(u0map) ? u0map :
31-
todict([get(schedule.dummy_sub, x[1], x[1]) => x[2] for x in u0map])
30+
if u0map === nothing || isempty(u0map)
31+
filtered_u0 = u0map
32+
else
33+
# TODO: Don't scalarize arrays
34+
filtered_u0 = map(u0map) do x
35+
y = get(schedule.dummy_sub, x[1], x[1])
36+
y isa Symbolics.Arr ? collect(x[1]) .=> x[2] : x[1] => x[2]
37+
end
38+
filtered_u0 = todict(reduce(vcat, filtered_u0))
39+
end
3240
else
3341
dd_guess = Dict()
3442
filtered_u0 = u0map

0 commit comments

Comments
 (0)