@@ -646,21 +646,39 @@ end
646
646
prob2. ps[p] = 0.0
647
647
test_parameter (prob2, p, 2.0 )
648
648
649
- # Should not be solved for:
649
+ # Default overridden by ODEProblem, guess provided
650
+ @mtkbuild sys = ODESystem (
651
+ [D (x) ~ q * x, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 1.0 ])
652
+ _pmap = merge (pmap, Dict (p => q))
653
+ prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
654
+ test_parameter (prob, p, pmap[q])
655
+ test_initializesystem (sys, u0map, pmap, p, 0 ~ q - p)
650
656
651
- # ODEProblem value with guess, no `missing`
657
+ # ODEProblem dependent value with guess, no `missing`
652
658
@mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; guesses = [p => 0.0 ])
653
659
_pmap = merge (pmap, Dict (p => 3 q))
654
660
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
655
- @test prob. ps[p] ≈ 3.0
656
- @test prob. f. initializeprob === nothing
657
- # Default overridden by ODEProblem, guess provided
661
+ test_parameter (prob, p, 3 pmap[q])
662
+
663
+ # Should not be solved for:
664
+
665
+ # Override dependent default with direct value
658
666
@mtkbuild sys = ODESystem (
659
667
[D (x) ~ q * x, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 1.0 ])
668
+ _pmap = merge (pmap, Dict (p => 1.0 ))
660
669
prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
661
- @test prob. ps[p] ≈ 3 .0
670
+ @test prob. ps[p] ≈ 1 .0
662
671
@test prob. f. initializeprob === nothing
663
672
673
+ # Non-floating point
674
+ @parameters r:: Int s:: Int
675
+ @mtkbuild sys = ODESystem (
676
+ [D (x) ~ s * x, D (y) ~ y * r], t; defaults = [s => 2 r], guesses = [s => 1.0 ])
677
+ prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), [r => 1 ])
678
+ @test prob. ps[r] == 1
679
+ @test prob. ps[s] == 2
680
+ @test prob. f. initializeprob === nothing
681
+
664
682
@mtkbuild sys = ODESystem ([D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
665
683
@test_throws ModelingToolkit. MissingParametersError ODEProblem (
666
684
sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ))
0 commit comments