@@ -64,26 +64,28 @@ sol_map = solve(prob_map, FunctionMap());
64
64
65
65
# Using defaults constructor
66
66
@parameters c= 10.0 nsteps= 400 δt= 0.1 β= 0.05 γ= 0.25
67
- @variables S (t)= 990.0 I (t)= 10.0 R (t)= 0.0
67
+ @variables S (t)= 990.0 I (t)= 10.0 R (t)= 0.0 R2 (t)
68
68
69
69
infection2 = rate_to_proportion (β * c * I (k - 1 ) / (S (k - 1 ) + I (k - 1 ) + R (k - 1 )), δt) *
70
70
S (k - 1 )
71
71
recovery2 = rate_to_proportion (γ, δt) * I (k - 1 )
72
72
73
73
eqs2 = [S ~ S (k - 1 ) - infection2,
74
74
I ~ I (k - 1 ) + infection2 - recovery2,
75
- R ~ R (k - 1 ) + recovery2]
75
+ R ~ R (k - 1 ) + recovery2,
76
+ R2 ~ R]
76
77
77
78
@mtkbuild sys = DiscreteSystem (
78
- eqs2, t, [S, I, R], [c, nsteps, δt, β, γ]; controls = [β, γ], tspan)
79
+ eqs2, t, [S, I, R, R2 ], [c, nsteps, δt, β, γ]; controls = [β, γ], tspan)
79
80
@test ModelingToolkit. defaults (sys) != Dict ()
80
81
81
82
prob_map2 = DiscreteProblem (sys)
82
- sol_map2 = solve (prob_map , FunctionMap ());
83
+ sol_map2 = solve (prob_map2 , FunctionMap ());
83
84
84
- @test sol_map. u == sol_map2. u
85
+ @test sol_map. u ≈ sol_map2. u
85
86
@test sol_map. prob. p == sol_map2. prob. p
86
-
87
+ @test_throws Any sol_map2[R2]
88
+ @test sol_map2[R2 (k + 1 )][begin : (end - 1 )] == sol_map2[R][(begin + 1 ): end ]
87
89
# Direct Implementation
88
90
89
91
function sir_map! (u_diff, u, p, t)
0 commit comments