@@ -648,8 +648,9 @@ $(TYPEDFIELDS)
648648""" 
649649struct  ReconstructInitializeprob{G}
650650    """ 
651-     A function which when called on the original problem returns the parameter object of 
652-     the initialization problem. 
651+     A function which when given the original problem and initialization problem, returns 
652+     the parameter object of the initialization problem with values copied from the 
653+     original. 
653654    """  
654655    getter:: G 
655656end 
@@ -709,14 +710,18 @@ function ReconstructInitializeprob(
709710        end 
710711        getters =  (tunable_getter, Returns (SizedVector {0, Float64} ()), rest_getters... )
711712        getter =  let  getters =  getters
712-             function  _getter (valp)
713+             function  _getter (valp, initprob )
713714                MTKParameters (getters[1 ](valp), getters[2 ](valp), getters[3 ](valp),
714-                     getters[4 ](valp), getters[5 ](valp), ( ))
715+                     getters[4 ](valp), getters[5 ](valp), copy .( parameter_values (initprob) . caches ))
715716            end 
716717        end 
717718    else 
718719        syms =  parameters (dstsys)
719-         getter =  concrete_getu (srcsys, syms)
720+         getter =  let  inner =  concrete_getu (srcsys, syms)
721+             function  _getter2 (valp, initprob)
722+                 inner (valp)
723+             end 
724+         end 
720725    end 
721726    return  ReconstructInitializeprob (getter)
722727end 
@@ -728,7 +733,7 @@ Copy values from `srcvalp` to `dstvalp`. Returns the new `u0` and `p`.
728733""" 
729734function  (rip:: ReconstructInitializeprob )(srcvalp, dstvalp)
730735    #  copy parameters
731-     newp =  rip. getter (srcvalp)
736+     newp =  rip. getter (srcvalp, dstvalp )
732737    #  no `u0`, so no type-promotion
733738    if  state_values (dstvalp) ===  nothing 
734739        return  nothing , newp
0 commit comments