@@ -321,15 +321,31 @@ struct ReconstructInitializeprob
321321end
322322
323323function ReconstructInitializeprob (srcsys:: AbstractSystem , dstsys:: AbstractSystem ; remap = Dict ())
324- syms = [unknowns (dstsys);
325- reduce (vcat, reorder_parameters (dstsys, parameters (dstsys)); init = [])]
324+ syms = reduce (vcat, reorder_parameters (dstsys, parameters (dstsys)); init = [])
326325 getter = getu (srcsys, map (x -> get (remap, x, x), syms))
327- setter = setsym_oop (dstsys, syms)
326+ setter = setp_oop (dstsys, syms)
328327 return ReconstructInitializeprob (getter, setter)
329328end
330329
331330function (rip:: ReconstructInitializeprob )(srcvalp, dstvalp)
332- rip. setter (dstvalp, rip. getter (srcvalp))
331+ newp = rip. setter (dstvalp, rip. getter (srcvalp))
332+ if state_values (dstvalp) === nothing
333+ return nothing , newp
334+ end
335+ T = eltype (state_values (srcvalp))
336+ if parameter_values (dstvalp) isa MTKParameters
337+ if ! isempty (newp. tunable)
338+ T = promote_type (eltype (newp. tunable), T)
339+ end
340+ elseif ! isempty (newp)
341+ T = promote_type (eltype (newp), T)
342+ end
343+ if T == eltype (state_values (dstvalp))
344+ u0 = state_values (dstvalp)
345+ else
346+ u0 = T .(state_values (dstvalp))
347+ end
348+ return u0, newp
333349end
334350
335351struct InitializationSystemMetadata
0 commit comments