diff --git a/src/systems/nonlinear/initializesystem.jl b/src/systems/nonlinear/initializesystem.jl index f83ea6006f..50c0862863 100644 --- a/src/systems/nonlinear/initializesystem.jl +++ b/src/systems/nonlinear/initializesystem.jl @@ -484,6 +484,10 @@ function SciMLBase.remake_initialization_data( oldinitdata = odefn.initialization_data + # We _always_ build initialization now. So if we didn't build it before, don't do + # it now + oldinitdata === nothing && return nothing + if !(eltype(u0) <: Pair) && !(eltype(p) <: Pair) oldinitdata === nothing && return nothing diff --git a/test/jumpsystem.jl b/test/jumpsystem.jl index 9568990e73..1ee0408758 100644 --- a/test/jumpsystem.jl +++ b/test/jumpsystem.jl @@ -551,3 +551,18 @@ end sol = solve(jprob, SSAStepper()) @test eltype(sol[X]) === Int64 end + +@testset "Issue#3571: `remake(::JumpProblem)`" begin + @variables X(t) + @parameters a b + eq = D(X) ~ a + rate = b * X + affect = [X ~ X - 1] + crj = ConstantRateJump(rate, affect) + @named jsys = JumpSystem([crj, eq], t, [X], [a, b]) + jsys = complete(jsys) + oprob = ODEProblem(jsys, [:X => 1.0], (0.0, 10.0), [:a => 1.0, :b => 0.5]) + jprob = JumpProblem(jsys, oprob) + jprob2 = remake(jprob; u0 = [:X => 10.0]) + @test jprob2[X] ≈ 10.0 +end