@@ -509,33 +509,47 @@ end
509
509
pmap[p] = 2 q
510
510
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
511
511
test_parameter (prob, p, 2.0 )
512
+ prob2 = remake (prob; u0 = u0map, p = pmap)
513
+ prob2. ps[p] = 0.0
514
+ test_parameter (prob2, p, 2.0 )
512
515
# `missing` default, provided guess
513
516
@mtkbuild sys = ODESystem (
514
517
[D (x) ~ x, p ~ x + y], t; defaults = [p => missing ], guesses = [p => 0.0 ])
515
518
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ))
516
519
test_parameter (prob, p, 2.0 )
517
520
test_initializesystem (sys, u0map, pmap, p, 0 ~ p - x - y)
521
+ prob2 = remake (prob; u0 = u0map, p = pmap)
522
+ prob2. ps[p] = 0.0
523
+ test_parameter (prob2, p, 2.0 )
518
524
519
525
# `missing` to ODEProblem, equation from default
520
526
@mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; defaults = [p => 2 q])
521
527
pmap[p] = missing
522
528
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
523
529
test_parameter (prob, p, 2.0 )
524
530
test_initializesystem (sys, u0map, pmap, p, 0 ~ 2 q - p)
531
+ prob2 = remake (prob; u0 = u0map, p = pmap)
532
+ prob2. ps[p] = 0.0
525
533
test_parameter (prob2, p, 2.0 )
526
534
# `missing` to ODEProblem, provided guess
527
535
@mtkbuild sys = ODESystem (
528
536
[D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
529
537
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
530
538
test_parameter (prob, p, 2.0 )
531
539
test_initializesystem (sys, u0map, pmap, p, 0 ~ x + y - p)
540
+ prob2 = remake (prob; u0 = u0map, p = pmap)
541
+ prob2. ps[p] = 0.0
542
+ test_parameter (prob2, p, 2.0 )
532
543
533
544
# No `missing`, default and guess
534
545
@mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 0.0 ])
535
546
delete! (pmap, p)
536
547
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), pmap)
537
548
test_parameter (prob, p, 2.0 )
538
549
test_initializesystem (sys, u0map, pmap, p, 0 ~ 2 q - p)
550
+ prob2 = remake (prob; u0 = u0map, p = pmap)
551
+ prob2. ps[p] = 0.0
552
+ test_parameter (prob2, p, 2.0 )
539
553
540
554
# Should not be solved for:
541
555
591
605
592
606
@testset " Re-creating initialization problem on remake" begin
593
607
@variables x (t) y (t)
594
- @parameters p
608
+ @parameters p q
595
609
@mtkbuild sys = ODESystem (
596
610
[D (x) ~ x, p ~ x + y], t; defaults = [p => missing ], guesses = [x => 0.0 , p => 0.0 ])
597
611
prob = ODEProblem (sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ))
608
622
@test solve (prob4, Tsit5 ()). retcode == ReturnCode. InitialFailure
609
623
prob5 = remake (prob)
610
624
@test init (prob, Tsit5 ()). ps[p] ≈ 2.0
611
-
612
- @mtkbuild sys = ODESystem ([D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
613
- prob = ODEProblem (sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ), [p => 2.0 ])
614
- # No value for `p`, not `missing`
615
- @test_throws ModelingToolkit. MissingParametersError remake (
616
- prob; u0 = [x => 1.0 , y => 3 x])
617
- prob2 = remake (prob; u0 = [x => 1.0 , y => 2 x + exp (t)], p = [p => missing ])
618
- @test init (prob2, Tsit5 ()). ps[p] ≈ 4.0
619
625
end
0 commit comments