@@ -232,15 +232,31 @@ struct ReconstructInitializeprob
232232end
233233
234234function 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)
238- setter = setsym_oop (dstsys, syms)
237+ setter = setp_oop (dstsys, syms)
239238 return ReconstructInitializeprob (getter, setter)
240239end
241240
242241function (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
244260end
245261
246262struct InitializationSystemMetadata
0 commit comments