# DifferentialEquations hangs when partitioning state vector

**URL:** https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455
**Category:** General Usage
**Tags:** question, package, differentialequation
**Created:** [October 28, 2022, 5:02pm UTC](https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455 "2022-10-28T17:02:10Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![DorianC](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dorianc/32/33792_2.png) [@DorianC](https://discourse.julialang.org/u/DorianC)
#### Post date: [October 28, 2022, 5:02pm UTC](https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455/1 "2022-10-28T17:02:10Z")

</div>

I have enjoyed using ArrayPartitions to segregate information such as differential vs algebraic states when running DifferentialEquations. It worked great for what I used: one partition.  
Now I am trying to segregate the state vector by the state vectors of subcomponents in the simulation. Unfortunately, when each state vector is about 8, and there are 10 components, DifferentialEquations seems to hang. I don’t have the same problem if the vectors are concatenated as one single vector (but I lose the partitioning):

```julia
using DifferentialEquations
using RecursiveArrayTools

X = [fill(0.0, 8) for i in 1:20];
x = ArrayPartition(X...);

function xdot!(dx, x, p, time)
       dx .= 0.0
end

f = ODEFunction(xdot!)
prob = ODEProblem(f, x, (0.0, 1.0))
sol = DifferentialEquations.solve(prob, saveat = [1.0])

```

Obviously I can concatenate, but it makes the code much less attractive. Any idea what’s going on?  
One might suggest I use MTK, but I’m stuck with that as well: [Maximum of matrix vector product for "large" matrices - #2 by ChrisRackauckas](https://discourse.julialang.org/t/maximum-of-matrix-vector-product-for-large-matrices/89229/2)

Thanks for the help!

---

<div class="post-metadata">

### Author: ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)
#### Post date: [October 28, 2022, 5:18pm UTC](https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455/2 "2022-10-28T17:18:42Z")

</div>

This example does complete on my machine, it just takes a long time to compile the first time (~60 sec). After that, it runs in ~300us.

---

<div class="post-metadata">

### Author: ![DorianC](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dorianc/32/33792_2.png) [@DorianC](https://discourse.julialang.org/u/DorianC)
#### Post date: [October 28, 2022, 5:24pm UTC](https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455/4 "2022-10-28T17:24:46Z")

</div>

It does on my mac with Julia 1.7.2, but it takes ~10min to compile… If I update to Julia 1.8, it takes 5mins, which is still too much… I have checked on a windows machine and it takes ~60s.  
Now this is for a toy problem… When I actually work with larger arrays, algebraic states etc. it will get even worse…

---

<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 30, 2022, 1:29pm UTC](https://discourse.julialang.org/t/differentialequations-hangs-when-partitioning-state-vector/89455/5 "2022-10-30T13:29:43Z")

</div>

Large tuples are a bad idea for compile times. Don’t use very large tuples. Hence, ArrayPartition is the wrong structure for this.
