@@ -576,33 +576,47 @@ sol = solve(oprob_2nd_order_2, Rosenbrock23()) # retcode: Success
576
576
pmap[p] = 2 q
577
577
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
578
578
test_parameter (prob, p, 2.0 )
579
+ prob2 = remake (prob; u0 = u0map, p = pmap)
580
+ prob2. ps[p] = 0.0
581
+ test_parameter (prob2, p, 2.0 )
579
582
# `missing` default, provided guess
580
583
@mtkbuild sys = ODESystem (
581
584
[D (x) ~ x, p ~ x + y], t; defaults = [p => missing ], guesses = [p => 0.0 ])
582
585
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ))
583
586
test_parameter (prob, p, 2.0 )
584
587
test_initializesystem (sys, u0map, pmap, p, 0 ~ p - x - y)
588
+ prob2 = remake (prob; u0 = u0map, p = pmap)
589
+ prob2. ps[p] = 0.0
590
+ test_parameter (prob2, p, 2.0 )
585
591
586
592
# `missing` to ODEProblem, equation from default
587
593
@mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; defaults = [p => 2 q])
588
594
pmap[p] = missing
589
595
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
590
596
test_parameter (prob, p, 2.0 )
591
597
test_initializesystem (sys, u0map, pmap, p, 0 ~ 2 q - p)
598
+ prob2 = remake (prob; u0 = u0map, p = pmap)
599
+ prob2. ps[p] = 0.0
592
600
test_parameter (prob2, p, 2.0 )
593
601
# `missing` to ODEProblem, provided guess
594
602
@mtkbuild sys = ODESystem (
595
603
[D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
596
604
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
597
605
test_parameter (prob, p, 2.0 )
598
606
test_initializesystem (sys, u0map, pmap, p, 0 ~ x + y - p)
607
+ prob2 = remake (prob; u0 = u0map, p = pmap)
608
+ prob2. ps[p] = 0.0
609
+ test_parameter (prob2, p, 2.0 )
599
610
600
611
# No `missing`, default and guess
601
612
@mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 0.0 ])
602
613
delete! (pmap, p)
603
614
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
604
615
test_parameter (prob, p, 2.0 )
605
616
test_initializesystem (sys, u0map, pmap, p, 0 ~ 2 q - p)
617
+ prob2 = remake (prob; u0 = u0map, p = pmap)
618
+ prob2. ps[p] = 0.0
619
+ test_parameter (prob2, p, 2.0 )
606
620
607
621
# Should not be solved for:
608
622
658
672
659
673
@testset " Re-creating initialization problem on remake" begin
660
674
@variables x (t) y (t)
661
- @parameters p
675
+ @parameters p q
662
676
@mtkbuild sys = ODESystem (
663
677
[D (x) ~ x, p ~ x + y], t; defaults = [p => missing ], guesses = [x => 0.0 , p => 0.0 ])
664
678
prob = ODEProblem (sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ))
675
689
@test solve (prob4, Tsit5 ()). retcode == ReturnCode. InitialFailure
676
690
prob5 = remake (prob)
677
691
@test init (prob, Tsit5 ()). ps[p] ≈ 2.0
678
-
679
- @mtkbuild sys = ODESystem ([D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
680
- prob = ODEProblem (sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ), [p => 2.0 ])
681
- # No value for `p`, not `missing`
682
- @test_throws ModelingToolkit. MissingParametersError remake (
683
- prob; u0 = [x => 1.0 , y => 3 x])
684
- prob2 = remake (prob; u0 = [x => 1.0 , y => 2 x + exp (t)], p = [p => missing ])
685
- @test init (prob2, Tsit5 ()). ps[p] ≈ 4.0
686
692
end
0 commit comments