|
1 | 1 | using OrdinaryDiffEq, ModelingToolkit, DataStructures, Test |
2 | 2 | using Optimization, RecursiveArrayTools, OptimizationOptimJL |
3 | | -using LabelledArrays, SymbolicIndexingInterface |
| 3 | +using SymbolicIndexingInterface |
4 | 4 | using ModelingToolkit: t_nounits as t, D_nounits as D |
5 | 5 | using SciMLBase: parameterless_type |
6 | 6 |
|
@@ -210,54 +210,6 @@ tspan = (0.0, 1.0) |
210 | 210 | prob = ODEProblem(k, x0, tspan) |
211 | 211 | sys = modelingtoolkitize(prob) |
212 | 212 |
|
213 | | -## https://github.com/SciML/ModelingToolkit.jl/issues/1054 |
214 | | -using LabelledArrays |
215 | | -using ModelingToolkit |
216 | | - |
217 | | -# ODE model: simple SIR model with seasonally forced contact rate |
218 | | -function SIR!(du, u, p, t) |
219 | | - |
220 | | - # Unknowns |
221 | | - (S, I, R) = u[1:3] |
222 | | - N = S + I + R |
223 | | - |
224 | | - # params |
225 | | - β = p.β |
226 | | - η = p.η |
227 | | - φ = p.φ |
228 | | - ω = 1.0 / p.ω |
229 | | - μ = p.μ |
230 | | - σ = p.σ |
231 | | - |
232 | | - # FOI |
233 | | - βeff = β * (1.0 + η * cos(2.0 * π * (t - φ) / 365.0)) |
234 | | - λ = βeff * I / N |
235 | | - |
236 | | - # change in unknowns |
237 | | - du[1] = (μ * N - λ * S - μ * S + ω * R) |
238 | | - du[2] = (λ * S - σ * I - μ * I) |
239 | | - du[3] = (σ * I - μ * R - ω * R) |
240 | | - du[4] = (σ * I) # cumulative incidence |
241 | | -end |
242 | | - |
243 | | -# Solver settings |
244 | | -tmin = 0.0 |
245 | | -tmax = 10.0 * 365.0 |
246 | | -tspan = (tmin, tmax) |
247 | | - |
248 | | -# Initiate ODE problem |
249 | | -theta_fix = [1.0 / (80 * 365)] |
250 | | -theta_est = [0.28, 0.07, 1.0 / 365.0, 1.0, 1.0 / 5.0] |
251 | | -p = @LArray [theta_est; theta_fix] (:β, :η, :ω, :φ, :σ, :μ) |
252 | | -u0 = @LArray [9998.0, 1.0, 1.0, 1.0] (:S, :I, :R, :C) |
253 | | - |
254 | | -# Initiate ODE problem |
255 | | -problem = ODEProblem(SIR!, u0, tspan, p) |
256 | | -sys = complete(modelingtoolkitize(problem)) |
257 | | - |
258 | | -@test all(isequal.(parameters(sys), getproperty.(@variables(β, η, ω, φ, σ, μ), :val))) |
259 | | -@test all(isequal.(Symbol.(unknowns(sys)), Symbol.(@variables(S(t), I(t), R(t), C(t))))) |
260 | | - |
261 | 213 | # https://github.com/SciML/ModelingToolkit.jl/issues/1158 |
262 | 214 |
|
263 | 215 | function ode_prob(du, u, p::NamedTuple, t) |
|
0 commit comments