Skip to content

Commit 20c3baf

Browse files
committed
Make tests pass
1 parent b855bc7 commit 20c3baf

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/systems/discrete_system/discrete_system.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,8 @@ function generate_function(
186186
eqs = equations(sys)
187187
foreach(check_difference_variables, eqs)
188188
# substitute x(t) by just x
189-
rhss = [isdifference(eq.lhs) ? arguments(eq.lhs)[1] + eq.rhs : eq.rhs for eq in eqs]
189+
# rhss = [isdifference(eq.lhs) ? arguments(eq.lhs)[1] + eq.rhs : eq.rhs for eq in eqs]
190+
rhss = [eq.rhs for eq in eqs]
190191

191192
u = map(x->time_varying_as_func(value(x), sys), dvs)
192193
p = map(x->time_varying_as_func(value(x), sys), ps)

test/discretesystem.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ end;
1111

1212
# Independent and dependent variables and parameters
1313
@parameters t c nsteps δt β γ
14+
D = Difference(t; dt=0.1)
1415
@variables S(t) I(t) R(t) next_S(t) next_I(t) next_R(t)
1516

1617
infection = rate_to_proportion*c*I/(S+I+R),δt)*S
1718
recovery = rate_to_proportion(γ,δt)*I
1819

1920
# Equations
20-
eqs = [next_S ~ S-infection,
21-
next_I ~ I+infection-recovery,
22-
next_R ~ R+recovery]
21+
eqs = [D(S) ~ S-infection,
22+
D(I) ~ I+infection-recovery,
23+
D(R) ~ R+recovery]
2324

2425
# System
2526
sys = DiscreteSystem(eqs,t,[S,I,R],[c,nsteps,δt,β,γ]; controls = [β, γ])
@@ -36,16 +37,16 @@ sol_map = solve(prob_map,FunctionMap());
3637

3738
# Direct Implementation
3839

39-
function sir_map!(u_new,u,p,t)
40+
function sir_map!(u_diff,u,p,t)
4041
(S,I,R) = u
4142
(β,c,γ,δt) = p
4243
N = S+I+R
4344
infection = rate_to_proportion*c*I/N,δt)*S
4445
recovery = rate_to_proportion(γ,δt)*I
4546
@inbounds begin
46-
u_new[1] = S-infection
47-
u_new[2] = I+infection-recovery
48-
u_new[3] = R+recovery
47+
u_diff[1] = S-infection
48+
u_diff[2] = I+infection-recovery
49+
u_diff[3] = R+recovery
4950
end
5051
nothing
5152
end;

0 commit comments

Comments
 (0)