I am trying to solve 5 odes in the code below. I see a peculiar problem when I try to use modelingtoolkitize. The code below works if I use size=5 but not if I use the parameter to define size (size=p[1]). Why is this happening when p[1] is equal to 5. The problem does not arise if I just solve the system without using modelingtoolkitize.
using ModelingToolkit
using DifferentialEquations
function eoms!(du,u,p,t)
size=p[1] ### does not work.
## size=5 ### works
for i in 1:size
du[i]=-1.0*u[i]
end
end
size=5
u0=ones(Float64,size)
tspan=(0.0,10.0)
p=[size]
prob=ODEProblem(eoms!,u0,tspan,p)
prob_=modelingtoolkitize(prob)
fastprob = ODEProblem(prob_,u0,tspan,jac=true)
#fastprob=prob
tol=1e-6
reltolp=tol
abstolp=tol
@time sol=solve(prob,Rosenbrock23(),abstol=abstolp,reltol=reltolp)
@time sol1=solve(fastprob,Rosenbrock23(),abstol=abstolp,reltol=reltolp)
println(sol.destats)
println("-------")
println(sol1.destats)
using Plots
plot(sol, vars=(1),yaxis=:log10)
plot!(sol, vars=(2),yaxis=:log10)
plot!(sol, vars=(3),yaxis=:log10)
plot!(sol, vars=(4),yaxis=:log10)
plot!(sol1, vars=(1),yaxis=:log10)
plot!(sol1, vars=(2),yaxis=:log10)
plot!(sol1, vars=(3),yaxis=:log10)
plot!(sol1, vars=(4),yaxis=:log10)