@@ -637,21 +637,39 @@ sol = solve(oprob_2nd_order_2, Rosenbrock23()) # retcode: Success
637637 prob2. ps[p] = 0.0
638638 test_parameter (prob2, p, 2.0 )
639639
640- # Should not be solved for:
640+ # Default overridden by ODEProblem, guess provided
641+ @mtkbuild sys = ODESystem (
642+ [D (x) ~ q * x, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 1.0 ])
643+ _pmap = merge (pmap, Dict (p => q))
644+ prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
645+ test_parameter (prob, p, pmap[q])
646+ test_initializesystem (sys, u0map, pmap, p, 0 ~ q - p)
641647
642- # ODEProblem value with guess, no `missing`
648+ # ODEProblem dependent value with guess, no `missing`
643649 @mtkbuild sys = ODESystem ([D (x) ~ x * q, D (y) ~ y * p], t; guesses = [p => 0.0 ])
644650 _pmap = merge (pmap, Dict (p => 3 q))
645651 prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
646- @test prob. ps[p] ≈ 3.0
647- @test prob. f. initializeprob === nothing
648- # Default overridden by ODEProblem, guess provided
652+ test_parameter (prob, p, 3 pmap[q])
653+
654+ # Should not be solved for:
655+
656+ # Override dependent default with direct value
649657 @mtkbuild sys = ODESystem (
650658 [D (x) ~ q * x, D (y) ~ y * p], t; defaults = [p => 2 q], guesses = [p => 1.0 ])
659+ _pmap = merge (pmap, Dict (p => 1.0 ))
651660 prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), _pmap)
652- @test prob. ps[p] ≈ 3 .0
661+ @test prob. ps[p] ≈ 1 .0
653662 @test prob. f. initializeprob === nothing
654663
664+ # Non-floating point
665+ @parameters r:: Int s:: Int
666+ @mtkbuild sys = ODESystem (
667+ [D (x) ~ s * x, D (y) ~ y * r], t; defaults = [s => 2 r], guesses = [s => 1.0 ])
668+ prob = ODEProblem (sys, u0map, (0.0 , 1.0 ), [r => 1 ])
669+ @test prob. ps[r] == 1
670+ @test prob. ps[s] == 2
671+ @test prob. f. initializeprob === nothing
672+
655673 @mtkbuild sys = ODESystem ([D (x) ~ x, p ~ x + y], t; guesses = [p => 0.0 ])
656674 @test_throws ModelingToolkit. MissingParametersError ODEProblem (
657675 sys, [x => 1.0 , y => 1.0 ], (0.0 , 1.0 ))
0 commit comments