Skip to content

Commit 8af75e6

Browse files
fix: fix ReconstructInitializeprob overriding guesses
1 parent afdd072 commit 8af75e6

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/systems/nonlinear/initializesystem.jl

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,15 +232,31 @@ struct ReconstructInitializeprob
232232
end
233233

234234
function ReconstructInitializeprob(srcsys::AbstractSystem, dstsys::AbstractSystem)
235-
syms = [unknowns(dstsys);
236-
reduce(vcat, reorder_parameters(dstsys, parameters(dstsys)); init = [])]
235+
syms = reduce(vcat, reorder_parameters(dstsys, parameters(dstsys)); init = [])
237236
getter = getu(srcsys, syms)
238237
setter = setsym_oop(dstsys, syms)
239238
return ReconstructInitializeprob(getter, setter)
240239
end
241240

242241
function (rip::ReconstructInitializeprob)(srcvalp, dstvalp)
243-
rip.setter(dstvalp, rip.getter(srcvalp))
242+
newp = rip.setter(dstvalp, rip.getter(srcvalp))
243+
if state_values(dstvalp) === nothing
244+
return nothing, newp
245+
end
246+
T = eltype(state_values(srcvalp))
247+
if parameter_values(dstvalp) isa MTKParameters
248+
if !isempty(newp.tunable)
249+
T = promote_type(eltype(newp.tunable), T)
250+
end
251+
elseif !isempty(newp)
252+
T = promote_type(eltype(newp), T)
253+
end
254+
if T == eltype(state_values(dstvalp))
255+
u0 = state_values(dstvalp)
256+
else
257+
u0 = T.(state_values(dstvalp))
258+
end
259+
return u0, newp
244260
end
245261

246262
struct InitializationSystemMetadata

0 commit comments

Comments
 (0)