# Change value of parameter and u0 after init ODEProblem DifferentialEquations.jl

**URL:** <https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120>\
**Category:** Modelling & Simulations\
**Created:** [October 18, 2023, 12:25pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120 "2023-10-18T12:25:42Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [October 18, 2023, 12:25pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/1 "2023-10-18T12:25:42Z")

</div>

Hello!  
How can I change the parameter value and initial conditions after initialization ODEProblem?

I tried to change `u0` using `prob.u0 = newu0`  
But I got a warning  
`Warning: Mutation of ODEProblem detected. SciMLBase v2.0 has made ODEProblem temporarily mutable in order to allow for interfacing with EnzymeRules due to a current limitation in the rule system. This change is only intended to be temporary and ODEProblem will return to being a struct in a later non-breaking release. Do not rely on this behavior, use with caution. `  
I managed to change u0 using remake, but I don’t quite understand how to change a specific parameter using it.

Thank for your helps

---

<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:** [October 18, 2023, 1:03pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/2 "2023-10-18T13:03:08Z")

</div>

> [@Sergey\_Novak](#):
>
> I managed to change u0 using remake, but I don’t quite understand how to change a specific parameter using it.

You can do `prob.p[i] = x`

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [October 18, 2023, 1:16pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/3 "2023-10-18T13:16:01Z")

</div>

I tried this  
It is redefined the value of parameter in the array of parameters that was passed to `ODEProblem`

 ![image](https://global.discourse-cdn.com/julialang/original/3X/b/4/b42fc885ec2c337d38d7009ffe464851e14da8d5.png)

---

<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:** [October 18, 2023, 1:22pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/4 "2023-10-18T13:22:26Z")

</div>

Yes is that not what you asked to do?

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [October 18, 2023, 1:28pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/5 "2023-10-18T13:28:20Z")

</div>

Yes, but changed array `param`  
It seemed to me that it should remain unchanged. I changed `prob.p`, not `param`

---

<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:** [October 18, 2023, 2:01pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/6 "2023-10-18T14:01:36Z")

</div>

Yes it changes the array. That’s just mutation. If you want to not use mutation, then `remake` is the right thing to use.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [October 18, 2023, 2:51pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/7 "2023-10-18T14:51:03Z")

</div>

Thank you  
Is it possible to change only one parameter using `remake`?

---

<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:** [October 18, 2023, 3:05pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/8 "2023-10-18T15:05:35Z")

</div>

```julia
newp = copy(prob.p)
newp[i] = x
newprob = remake(prob, p = newp)

```

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [October 24, 2023, 1:01pm UTC](https://discourse.julialang.org/t/change-value-of-parameter-and-u0-after-init-odeproblem-differentialequations-jl/105120/9 "2023-10-24T13:01:14Z")

</div>

Thank you!
