Iterator utilities for SciML solution and integrator objects. Provides convenience iterators for stepping through ODE/SDE/DDE solutions and integrators.
using Pkg
Pkg.add("SciMLIterators")using OrdinaryDiffEq, SciMLIterators
# Define and solve an ODE
prob = ODEProblem((u, p, t) -> -u, 1.0, (0.0, 1.0))
sol = solve(prob, Tsit5())
# Iterate over (u, t) tuples from a solution
for (u, t) in tuples(sol)
println("t = $t, u = $u")
end
# Iterate over (u, t) tuples from an integrator (stepping on-demand)
integrator = init(prob, Tsit5())
for (u, t) in tuples(integrator)
println("t = $t, u = $u")
end
# Iterate over intervals (uprev, tprev, u, t)
integrator = init(prob, Tsit5())
for (uprev, tprev, u, t) in intervals(integrator)
println("Step from t=$tprev to t=$t")
end
# Evaluate at specific time points
integrator = init(prob, Tsit5())
for (u, t) in TimeChoiceIterator(integrator, 0.0:0.1:1.0)
println("t = $t, u = $u")
endtuples(sol)- Array of(u, t)tuples from a solutiontuples(integrator)- Iterator yielding(u, t)at each integrator stepintervals(integrator)- Iterator yielding(uprev, tprev, u, t)at each stepTimeChoiceIterator(integrator, ts)- Iterator evaluating the integrator at specified timests