|
522 | 522 | structural_simplify
|
523 | 523 | @test_nowarn ODEProblem(sys, [D(x) => 1.0], (0.0, 1.0), [])
|
524 | 524 | end
|
| 525 | + |
| 526 | +# https://github.com/SciML/ModelingToolkit.jl/issues/2619 |
| 527 | +@parameters k1 k2 ω |
| 528 | +@variables X(t) Y(t) |
| 529 | +eqs_1st_order = [D(Y) + Y - ω ~ 0, |
| 530 | + X + k1 ~ Y + k2] |
| 531 | +eqs_2nd_order = [D(D(Y)) + 2ω*D(Y) + (ω^2)*Y ~ 0, |
| 532 | + X + k1 ~ Y + k2] |
| 533 | +@mtkbuild sys_1st_order = ODESystem(eqs_1st_order, t) |
| 534 | +@mtkbuild sys_2nd_order = ODESystem(eqs_2nd_order, t) |
| 535 | + |
| 536 | +u0_1st_order_1 = [X => 1.0, Y => 2.0] |
| 537 | +u0_1st_order_2 = [Y => 2.0] |
| 538 | +u0_2nd_order_1 = [X => 1.0, Y => 2.0, D(Y) => 0.5] |
| 539 | +u0_2nd_order_2 = [Y => 2.0, D(Y) => 0.5] |
| 540 | +tspan = (0.0, 10.) |
| 541 | +ps = [ω => 0.5, k1 => 2.0, k2 => 3.0] |
| 542 | + |
| 543 | +oprob_1st_order_1 = ODEProblem(sys_1st_order, u0_1st_order_1, tspan, ps) |
| 544 | +oprob_1st_order_2 = ODEProblem(sys_1st_order, u0_1st_order_2, tspan, ps) |
| 545 | +oprob_2nd_order_1 = ODEProblem(sys_2nd_order, u0_2nd_order_1, tspan, ps) # gives sys_2nd_order |
| 546 | +oprob_2nd_order_2 = ODEProblem(sys_2nd_order, u0_2nd_order_2, tspan, ps) |
| 547 | + |
| 548 | +@test solve(oprob_1st_order_1, Rosenbrock23()).retcode == SciMLBase.ReturnCode.InitialFailure |
| 549 | +@test solve(oprob_1st_order_2, Rosenbrock23())[Y][1] == 2.0 |
| 550 | +@test solve(oprob_2nd_order_1, Rosenbrock23()).retcode == SciMLBase.ReturnCode.InitialFailure |
| 551 | +sol = solve(oprob_2nd_order_2, Rosenbrock23()) # retcode: Success |
| 552 | +@test sol[Y][1] == 2.0 |
| 553 | +@test sol[1][2] == 0.5 |
0 commit comments