@@ -232,15 +232,31 @@ struct ReconstructInitializeprob
232
232
end
233
233
234
234
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 = [])
237
236
getter = getu (srcsys, syms)
238
237
setter = setsym_oop (dstsys, syms)
239
238
return ReconstructInitializeprob (getter, setter)
240
239
end
241
240
242
241
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
244
260
end
245
261
246
262
struct InitializationSystemMetadata
0 commit comments