# Initial conditions as functions of parameters in ModelingToolkit?

**URL:** https://discourse.julialang.org/t/initial-conditions-as-functions-of-parameters-in-modelingtoolkit/94438
**Category:** Modelling & Simulations
**Created:** [February 10, 2023, 9:16pm UTC](https://discourse.julialang.org/t/initial-conditions-as-functions-of-parameters-in-modelingtoolkit/94438 "2023-02-10T21:16:53Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![sdwfrost](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdwfrost/32/2831_2.png) [@sdwfrost](https://discourse.julialang.org/u/sdwfrost)
#### Post date: [February 10, 2023, 9:16pm UTC](https://discourse.julialang.org/t/initial-conditions-as-functions-of-parameters-in-modelingtoolkit/94438/1 "2023-02-10T21:16:54Z")

</div>

Hi everyone,

Is it possible to have initial conditions as functions of the parameters in ModelingToolkit?

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [February 10, 2023, 10:09pm UTC](https://discourse.julialang.org/t/initial-conditions-as-functions-of-parameters-in-modelingtoolkit/94438/2 "2023-02-10T22:09:51Z")

</div>

IIRC, yes. That was discussed and added? It would be good to have it in an example or tutorial though.

---

<div class="post-metadata">

### Author: ![sdwfrost](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdwfrost/32/2831_2.png) [@sdwfrost](https://discourse.julialang.org/u/sdwfrost)
#### Post date: [February 10, 2023, 10:23pm UTC](https://discourse.julialang.org/t/initial-conditions-as-functions-of-parameters-in-modelingtoolkit/94438/3 "2023-02-10T22:23:32Z")

</div>

Hmm, it appears to ‘just work’ now that I tried the obvious thing 🙂

```julia
using ModelingToolkit
using OrdinaryDiffEq
using Plots

@parameters t R₀ γ μ a
@variables S(t) I(t) β(t)
D = Differential(t)

eqs = [D(S) ~ μ - β*S*I - μ*S,
       D(I) ~ β*S*I - (γ+μ)*I,
       β ~ R₀*(γ+μ)*(1+a*cos(2*π*t))]

@named sys = ODESystem(eqs)
simpsys = structural_simplify(sys)

S₀ = 1/R₀
I₀ = (μ/(μ+γ))*(1-S₀)
u₀ = [S => S₀, I => I₀]
p = [μ => 0.02, γ => 28.08, R₀ => 17.0, a => 0.08]
tspan = (0.0, 100.0)

prob = ODEProblem(simpsys, u₀, tspan, p)
sol = solve(prob, Rosenbrock23())

plot(sol, yscale=:log10)

```

![sirforced](https://global.discourse-cdn.com/julialang/original/3X/e/2/e29b6bd5bf89d96b5d16aaba2cadad3212c0203d.png)
